From 75c048a2fc14881082c790ed6146a929df64b4d1 Mon Sep 17 00:00:00 2001 From: Mateo Gianolio Date: Tue, 15 Sep 2020 16:44:18 +0200 Subject: [PATCH] 6.0.0 (#193) * upd dependencies * es5 => es2015 * prepare strides * Prepare iterator * Add strided iterator * Working strides for abs * Fix #153, #172 * Mega-cleanup commit (types, docs, tests, etc) * Fix examples * More cleanup * Tslint * Export statics globally and cleanup * Fix examples * Add NDMultiIter class * Fix * Export both iterators * Add todo note * Update version * Updates * Switch to jest * Add github actions workflow * Remove .travis.yml * Fix conflict * GH Actions fix * Fix * Skip code coverage for now * Fix bug --- .github/workflows/ci.yml | 46 + .gitignore | 1 + .travis.yml | 27 - dist/vectorious.min.js | 2 +- docs.tmpl | 69 + docs/assets/css/main.css | 2333 ----- docs/assets/images/icons.png | Bin 9615 -> 0 bytes docs/assets/images/icons@2x.png | Bin 28144 -> 0 bytes docs/assets/images/widgets.png | Bin 480 -> 0 bytes docs/assets/images/widgets@2x.png | Bin 855 -> 0 bytes docs/assets/js/main.js | 1 - docs/assets/js/search.js | 3 - docs/classes/ndarray.html | 7852 --------------- docs/index.html | 873 -- docs/interfaces/indarray.html | 312 - examples/blas.ts | 6 +- examples/logistic-regression.ts | 35 +- examples/neural-network.ts | 30 +- examples/solve.ts | 6 +- examples/text_raytracer.ts | 79 +- gulpfile.js | 16 +- jest.config.js | 195 + jsdoc.json | 37 + package-lock.json | 14359 +++++++++++++++++++--------- package.json | 68 +- src/bench.ts | 12 +- src/blas.ts | 114 + src/core/abs.bench.ts | 13 +- src/core/abs.spec.ts | 17 +- src/core/abs.ts | 38 +- src/core/acos.bench.ts | 13 +- src/core/acos.spec.ts | 17 +- src/core/acos.ts | 38 +- src/core/acosh.bench.ts | 13 +- src/core/acosh.spec.ts | 18 +- src/core/acosh.ts | 39 +- src/core/add.bench.ts | 13 +- src/core/add.spec.ts | 41 +- src/core/add.ts | 75 +- src/core/angle.bench.ts | 13 +- src/core/angle.spec.ts | 13 +- src/core/angle.ts | 35 +- src/core/array.bench.ts | 7 +- src/core/array.spec.ts | 15 +- src/core/array.ts | 16 +- src/core/asin.bench.ts | 13 +- src/core/asin.spec.ts | 17 +- src/core/asin.ts | 38 +- src/core/asinh.bench.ts | 13 +- src/core/asinh.spec.ts | 17 +- src/core/asinh.ts | 38 +- src/core/atan.bench.ts | 13 +- src/core/atan.spec.ts | 17 +- src/core/atan.ts | 38 +- src/core/atanh.bench.ts | 13 +- src/core/atanh.spec.ts | 17 +- src/core/atanh.ts | 38 +- src/core/augment.bench.ts | 13 +- src/core/augment.spec.ts | 27 +- src/core/augment.ts | 38 +- src/core/binOp.bench.ts | 14 +- src/core/binOp.spec.ts | 32 +- src/core/binOp.ts | 56 +- src/core/cbrt.bench.ts | 13 +- src/core/cbrt.spec.ts | 17 +- src/core/cbrt.ts | 38 +- src/core/ceil.bench.ts | 13 +- src/core/ceil.spec.ts | 17 +- src/core/ceil.ts | 38 +- src/core/check.bench.ts | 16 +- src/core/check.spec.ts | 10 +- src/core/check.ts | 31 +- src/core/combine.bench.ts | 14 +- src/core/combine.spec.ts | 14 +- src/core/combine.ts | 31 +- src/core/copy.bench.ts | 13 +- src/core/copy.spec.ts | 29 +- src/core/copy.ts | 37 +- src/core/cos.bench.ts | 13 +- src/core/cos.spec.ts | 17 +- src/core/cos.ts | 38 +- src/core/cosh.bench.ts | 13 +- src/core/cosh.spec.ts | 17 +- src/core/cosh.ts | 38 +- src/core/cross.bench.ts | 14 +- src/core/cross.spec.ts | 21 +- src/core/cross.ts | 37 +- src/core/det.bench.ts | 13 +- src/core/det.spec.ts | 16 +- src/core/det.ts | 27 +- src/core/diagonal.bench.ts | 13 +- src/core/diagonal.spec.ts | 16 +- src/core/diagonal.ts | 29 +- src/core/dot.bench.ts | 13 +- src/core/dot.spec.ts | 21 +- src/core/dot.ts | 77 +- src/core/eig.bench.ts | 13 +- src/core/eig.spec.ts | 21 +- src/core/eig.ts | 68 +- src/core/equals.bench.ts | 13 +- src/core/equals.spec.ts | 15 +- src/core/equals.ts | 45 +- src/core/equidimensional.bench.ts | 13 +- src/core/equidimensional.spec.ts | 29 +- src/core/equidimensional.ts | 33 +- src/core/equilateral.bench.ts | 13 +- src/core/equilateral.spec.ts | 29 +- src/core/equilateral.ts | 33 +- src/core/exp.bench.ts | 13 +- src/core/exp.spec.ts | 17 +- src/core/exp.ts | 42 +- src/core/expm1.bench.ts | 13 +- src/core/expm1.spec.ts | 17 +- src/core/expm1.ts | 38 +- src/core/eye.bench.ts | 7 +- src/core/eye.spec.ts | 12 +- src/core/eye.ts | 21 +- src/core/fill.bench.ts | 13 +- src/core/fill.spec.ts | 26 +- src/core/fill.ts | 44 +- src/core/floor.bench.ts | 13 +- src/core/floor.spec.ts | 17 +- src/core/floor.ts | 38 +- src/core/forEach.bench.ts | 13 +- src/core/forEach.spec.ts | 18 +- src/core/forEach.ts | 46 +- src/core/fround.bench.ts | 13 +- src/core/fround.spec.ts | 17 +- src/core/fround.ts | 38 +- src/core/gauss.bench.ts | 13 +- src/core/gauss.spec.ts | 24 +- src/core/gauss.ts | 140 +- src/core/get.bench.ts | 16 +- src/core/get.spec.ts | 16 +- src/core/get.ts | 31 +- src/core/index.ts | 1360 +-- src/core/inv.bench.ts | 13 +- src/core/inv.spec.ts | 17 +- src/core/inv.ts | 91 +- src/core/log.bench.ts | 13 +- src/core/log.spec.ts | 17 +- src/core/log.ts | 38 +- src/core/log10.bench.ts | 13 +- src/core/log10.spec.ts | 17 +- src/core/log10.ts | 38 +- src/core/log1p.bench.ts | 13 +- src/core/log1p.spec.ts | 17 +- src/core/log1p.ts | 38 +- src/core/log2.bench.ts | 13 +- src/core/log2.spec.ts | 17 +- src/core/log2.ts | 38 +- src/core/lu.bench.ts | 13 +- src/core/lu.spec.ts | 36 +- src/core/lu.ts | 61 +- src/core/lu_factor.bench.ts | 13 +- src/core/lu_factor.spec.ts | 20 +- src/core/lu_factor.ts | 57 +- src/core/magic.bench.ts | 7 +- src/core/magic.spec.ts | 9 +- src/core/magic.ts | 42 +- src/core/map.bench.ts | 13 +- src/core/map.spec.ts | 16 +- src/core/map.ts | 49 +- src/core/matrix.bench.ts | 7 +- src/core/matrix.spec.ts | 16 +- src/core/matrix.ts | 20 +- src/core/max.bench.ts | 13 +- src/core/max.spec.ts | 21 +- src/core/max.ts | 75 +- src/core/mean.bench.ts | 13 +- src/core/mean.spec.ts | 15 +- src/core/mean.ts | 34 +- src/core/min.bench.ts | 13 +- src/core/min.spec.ts | 21 +- src/core/min.ts | 43 +- src/core/multiply.bench.ts | 13 +- src/core/multiply.spec.ts | 41 +- src/core/multiply.ts | 95 +- src/core/norm.bench.ts | 13 +- src/core/norm.spec.ts | 9 +- src/core/norm.ts | 63 +- src/core/normalize.bench.ts | 14 +- src/core/normalize.spec.ts | 20 +- src/core/normalize.ts | 29 +- src/core/ones.bench.ts | 7 +- src/core/ones.spec.ts | 16 +- src/core/ones.ts | 19 +- src/core/pow.bench.ts | 13 +- src/core/pow.spec.ts | 17 +- src/core/pow.ts | 42 +- src/core/prod.bench.ts | 13 +- src/core/prod.spec.ts | 15 +- src/core/prod.ts | 36 +- src/core/product.bench.ts | 13 +- src/core/product.spec.ts | 20 +- src/core/product.ts | 42 +- src/core/project.bench.ts | 14 +- src/core/project.spec.ts | 32 +- src/core/project.ts | 30 +- src/core/push.bench.ts | 15 +- src/core/push.spec.ts | 12 +- src/core/push.ts | 31 +- src/core/random.bench.ts | 7 +- src/core/random.spec.ts | 12 +- src/core/random.ts | 19 +- src/core/range.bench.ts | 7 +- src/core/range.spec.ts | 20 +- src/core/range.ts | 22 +- src/core/rank.bench.ts | 13 +- src/core/rank.spec.ts | 14 +- src/core/rank.ts | 49 +- src/core/reciprocal.bench.ts | 13 +- src/core/reciprocal.spec.ts | 17 +- src/core/reciprocal.ts | 38 +- src/core/reduce.bench.ts | 13 +- src/core/reduce.spec.ts | 23 +- src/core/reduce.ts | 51 +- src/core/reshape.bench.ts | 13 +- src/core/reshape.spec.ts | 25 +- src/core/reshape.ts | 34 +- src/core/round.bench.ts | 13 +- src/core/round.spec.ts | 17 +- src/core/round.ts | 38 +- src/core/row_add.bench.ts | 15 +- src/core/row_add.spec.ts | 20 +- src/core/row_add.ts | 39 +- src/core/scale.bench.ts | 13 +- src/core/scale.spec.ts | 20 +- src/core/scale.ts | 69 +- src/core/set.bench.ts | 16 +- src/core/set.spec.ts | 15 +- src/core/set.ts | 30 +- src/core/sign.bench.ts | 13 +- src/core/sign.spec.ts | 17 +- src/core/sign.ts | 42 +- src/core/sin.bench.ts | 13 +- src/core/sin.spec.ts | 17 +- src/core/sin.ts | 38 +- src/core/sinh.bench.ts | 13 +- src/core/sinh.spec.ts | 17 +- src/core/sinh.ts | 38 +- src/core/slice.bench.ts | 16 +- src/core/slice.spec.ts | 20 +- src/core/slice.ts | 70 +- src/core/solve.bench.ts | 13 +- src/core/solve.spec.ts | 24 +- src/core/solve.ts | 59 +- src/core/sqrt.bench.ts | 13 +- src/core/sqrt.spec.ts | 17 +- src/core/sqrt.ts | 38 +- src/core/square.bench.ts | 13 +- src/core/square.spec.ts | 9 +- src/core/square.ts | 29 +- src/core/subtract.bench.ts | 13 +- src/core/subtract.spec.ts | 38 +- src/core/subtract.ts | 33 +- src/core/sum.bench.ts | 13 +- src/core/sum.spec.ts | 15 +- src/core/sum.ts | 36 +- src/core/swap.bench.ts | 15 +- src/core/swap.spec.ts | 17 +- src/core/swap.ts | 33 +- src/core/tan.bench.ts | 13 +- src/core/tan.spec.ts | 17 +- src/core/tan.ts | 38 +- src/core/tanh.bench.ts | 13 +- src/core/tanh.spec.ts | 17 +- src/core/tanh.ts | 38 +- src/core/toArray.bench.ts | 14 +- src/core/toArray.spec.ts | 26 +- src/core/toArray.ts | 27 +- src/core/toString.bench.ts | 14 +- src/core/toString.spec.ts | 31 +- src/core/toString.ts | 31 +- src/core/trace.bench.ts | 13 +- src/core/trace.spec.ts | 15 +- src/core/trace.ts | 27 +- src/core/transpose.bench.ts | 13 +- src/core/transpose.spec.ts | 35 +- src/core/transpose.ts | 52 +- src/core/trunc.bench.ts | 13 +- src/core/trunc.spec.ts | 17 +- src/core/trunc.ts | 42 +- src/core/zeros.bench.ts | 7 +- src/core/zeros.spec.ts | 16 +- src/core/zeros.ts | 19 +- src/index.ts | 8 +- src/iterator/index.spec.ts | 122 + src/iterator/index.ts | 539 ++ src/lapack.ts | 54 + src/types.ts | 1 + src/util.ts | 52 +- tsconfig.json | 6 +- tslint.json | 38 - 294 files changed, 15684 insertions(+), 19352 deletions(-) create mode 100644 .github/workflows/ci.yml delete mode 100644 .travis.yml create mode 100644 docs.tmpl delete mode 100644 docs/assets/css/main.css delete mode 100644 docs/assets/images/icons.png delete mode 100644 docs/assets/images/icons@2x.png delete mode 100644 docs/assets/images/widgets.png delete mode 100644 docs/assets/images/widgets@2x.png delete mode 100644 docs/assets/js/main.js delete mode 100644 docs/assets/js/search.js delete mode 100644 docs/classes/ndarray.html delete mode 100644 docs/index.html delete mode 100644 docs/interfaces/indarray.html create mode 100644 jest.config.js create mode 100644 jsdoc.json create mode 100644 src/blas.ts create mode 100644 src/iterator/index.spec.ts create mode 100644 src/iterator/index.ts create mode 100644 src/lapack.ts delete mode 100644 tslint.json diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..041c2cab --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,46 @@ +name: CI + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + test: + name: Test on node ${{ matrix.node_version }} and ${{ matrix.os }} + runs-on: ${{ matrix.os }} + + strategy: + matrix: + node_version: [14.x] + os: [ubuntu-latest, macOS-latest] + + steps: + - uses: actions/checkout@v2 + + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v1 + with: + node-version: ${{ matrix.node-version }} + + - name: Setup C++ environment on linux + uses: kurocha/setup-cpp@v1 + if: runner.os == 'Linux' + + - name: Install dependencies on linux + run: sudo apt-get install -yq libblas-dev liblapack-dev liblapacke-dev libpython-dev + if: runner.os == 'Linux' + + - name: Install dependencies on mac + run: brew install lapack + if: runner.os == 'macOS' + + - name: Install package dependencies + run: npm ci + + - name: Build + run: npm run build + + - name: Test + run: npm test diff --git a/.gitignore b/.gitignore index c1566fea..cdccac61 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ coverage .DS_Store built benchmarks +docs \ No newline at end of file diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 2e5eeae1..00000000 --- a/.travis.yml +++ /dev/null @@ -1,27 +0,0 @@ -language: node_js -node_js: - - "lts/*" -before_install: - - sudo apt-get install libblas-dev libpython-dev -install: - - npm install -env: - global: - - CXX=g++-4.9 - - CC_TEST_REPORTER_ID=7bc2ff765ac0619975d32fe57959db6374d14a96780a1438ec68ea14036748e1 -before_script: - - npm install -g nyc - - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter - - chmod +x ./cc-test-reporter - - ./cc-test-reporter before-build -script: - - npm run lint - - npm test -after_script: - - ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT -addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-4.9 diff --git a/dist/vectorious.min.js b/dist/vectorious.min.js index 689e82f9..f3fcd6b9 100644 --- a/dist/vectorious.min.js +++ b/dist/vectorious.min.js @@ -1 +1 @@ -!function o(i,u,s){function c(t,r){if(!u[t]){if(!i[t]){var e="function"==typeof require&&require;if(!r&&e)return e(t,!0);if(l)return l(t,!0);var n=new Error("Cannot find module '"+t+"'");throw n.code="MODULE_NOT_FOUND",n}var a=u[t]={exports:{}};i[t][0].call(a.exports,function(r){return c(i[t][1][r]||r)},a,a.exports,o,i,u,s)}return u[t].exports}for(var l="function"==typeof require&&require,r=0;re[t]&&Number.isFinite(e[t])&&0<=e[t]}))throw new Error("index out of bounds")}},{"./":42}],21:[function(r,t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var u=r("../util"),n=r("./");n.NDArray.combine=function(r,t){return n.NDArray.array(r).combine(n.NDArray.array(t))},n.NDArray.prototype.combine=function(r){if(1!==this.shape.length&&1!==r.shape.length)throw new Error("combine operation not permitted for multidimensional arrays");var t=this.length,e=this.data,n=r.length,a=r.data;if(0===n)return this;if(0===t)return this.data=new(u.get_type(r.dtype))(a),this.length=n,this.dtype=r.dtype,this;var o=t+n,i=new(u.get_type(this.dtype))(o);return i.set(e),i.set(a,t),this.data=i,this.length=o,this.shape=[o],this}},{"../util":94,"./":42}],22:[function(r,t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r("../util"),a=r("./");a.NDArray.copy=function(r){return a.NDArray.array(r).copy()},a.NDArray.prototype.copy=function(){var r=Object.assign(Object.create(Object.getPrototypeOf(this)),this);return r.data=new(n.get_type(this.dtype))(this.data),r.shape=this.shape,r.length=this.length,r.dtype=this.dtype,r}},{"../util":94,"./":42}],23:[function(r,t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r("./");n.NDArray.cos=function(r){return n.NDArray.array(r).cos()},n.NDArray.prototype.cos=function(){var r,t=this.data,e=this.length;for(r=0;r=h&&(h=Math.abs(u[p*t+d]),v=p,g=d);var A=void 0;if(Math.abs(u[v*t+g])<1e-36*Math.abs(u[g*t+g]))A=u[v*t+g]/u[g*t+g];else{var N=u[g*t+g]/2*u[v*t+g];A=1/(Math.abs(N)+Math.sqrt(N*N+1))}var _=1/Math.sqrt(A*A+1),D=A*_,b=u[v*t+g];for(u[v*t+g]=0,u[v*t+v]-=A*b,u[g*t+g]+=A*b,p=0;p=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(e,"__esModule",{value:!0}),e.abs=void 0;var n=r("./array"),l=r("../iterator"),f=Math.abs;e.abs=function(r){return n.array(r).abs()},e.default=function(){var t,r,e=this.data,n=new l.NDIter(this);try{for(var a=u(n),o=a.next();!o.done;o=a.next()){var i=o.value;e[i]=f(e[i])}}catch(r){t={error:r}}finally{try{o&&!o.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}return this}},{"../iterator":95,"./array":12}],8:[function(r,t,e){"use strict";var u=this&&this.__values||function(r){var t="function"==typeof Symbol&&Symbol.iterator,e=t&&r[t],n=0;if(e)return e.call(r);if(r&&"number"==typeof r.length)return{next:function(){return r&&n>=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(e,"__esModule",{value:!0}),e.acos=void 0;var n=r("./array"),l=r("../iterator"),f=Math.acos;e.acos=function(r){return n.array(r).acos()},e.default=function(){var t,r,e=this.data,n=new l.NDIter(this);try{for(var a=u(n),o=a.next();!o.done;o=a.next()){var i=o.value;e[i]=f(e[i])}}catch(r){t={error:r}}finally{try{o&&!o.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}return this}},{"../iterator":95,"./array":12}],9:[function(r,t,e){"use strict";var u=this&&this.__values||function(r){var t="function"==typeof Symbol&&Symbol.iterator,e=t&&r[t],n=0;if(e)return e.call(r);if(r&&"number"==typeof r.length)return{next:function(){return r&&n>=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(e,"__esModule",{value:!0}),e.acosh=void 0;var n=r("./array"),l=r("../iterator"),f=Math.acosh;e.acosh=function(r){return n.array(r).acosh()},e.default=function(){var t,r,e=this.data,n=new l.NDIter(this);try{for(var a=u(n),o=a.next();!o.done;o=a.next()){var i=o.value;e[i]=f(e[i])}}catch(r){t={error:r}}finally{try{o&&!o.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}return this}},{"../iterator":95,"./array":12}],10:[function(r,t,e){"use strict";var n=this&&this.__createBinding||(Object.create?function(r,t,e,n){void 0===n&&(n=e),Object.defineProperty(r,n,{enumerable:!0,get:function(){return t[e]}})}:function(r,t,e,n){void 0===n&&(n=e),r[n]=t[e]}),a=this&&this.__setModuleDefault||(Object.create?function(r,t){Object.defineProperty(r,"default",{enumerable:!0,value:t})}:function(r,t){r.default=t}),o=this&&this.__importStar||function(r){if(r&&r.__esModule)return r;var t={};if(null!=r)for(var e in r)"default"!==e&&Object.prototype.hasOwnProperty.call(r,e)&&n(t,r,e);return a(t,r),t},y=this&&this.__values||function(r){var t="function"==typeof Symbol&&Symbol.iterator,e=t&&r[t],n=0;if(e)return e.call(r);if(r&&"number"==typeof r.length)return{next:function(){return r&&n>=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},v=this&&this.__read||function(r,t){var e="function"==typeof Symbol&&r[Symbol.iterator];if(!e)return r;var n,a,o=e.call(r),i=[];try{for(;(void 0===t||0=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(e,"__esModule",{value:!0}),e.asin=void 0;var n=r("./array"),l=r("../iterator"),f=Math.asin;e.asin=function(r){return n.array(r).asin()},e.default=function(){var t,r,e=this.data,n=new l.NDIter(this);try{for(var a=u(n),o=a.next();!o.done;o=a.next()){var i=o.value;e[i]=f(e[i])}}catch(r){t={error:r}}finally{try{o&&!o.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}return this}},{"../iterator":95,"./array":12}],14:[function(r,t,e){"use strict";var u=this&&this.__values||function(r){var t="function"==typeof Symbol&&Symbol.iterator,e=t&&r[t],n=0;if(e)return e.call(r);if(r&&"number"==typeof r.length)return{next:function(){return r&&n>=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(e,"__esModule",{value:!0}),e.asinh=void 0;var n=r("./array"),l=r("../iterator"),f=Math.asinh;e.asinh=function(r){return n.array(r).asinh()},e.default=function(){var t,r,e=this.data,n=new l.NDIter(this);try{for(var a=u(n),o=a.next();!o.done;o=a.next()){var i=o.value;e[i]=f(e[i])}}catch(r){t={error:r}}finally{try{o&&!o.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}return this}},{"../iterator":95,"./array":12}],15:[function(r,t,e){"use strict";var u=this&&this.__values||function(r){var t="function"==typeof Symbol&&Symbol.iterator,e=t&&r[t],n=0;if(e)return e.call(r);if(r&&"number"==typeof r.length)return{next:function(){return r&&n>=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(e,"__esModule",{value:!0}),e.atan=void 0;var n=r("./array"),l=r("../iterator"),f=Math.atan;e.atan=function(r){return n.array(r).atan()},e.default=function(){var t,r,e=this.data,n=new l.NDIter(this);try{for(var a=u(n),o=a.next();!o.done;o=a.next()){var i=o.value;e[i]=f(e[i])}}catch(r){t={error:r}}finally{try{o&&!o.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}return this}},{"../iterator":95,"./array":12}],16:[function(r,t,e){"use strict";var u=this&&this.__values||function(r){var t="function"==typeof Symbol&&Symbol.iterator,e=t&&r[t],n=0;if(e)return e.call(r);if(r&&"number"==typeof r.length)return{next:function(){return r&&n>=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(e,"__esModule",{value:!0}),e.atanh=void 0;var n=r("./array"),l=r("../iterator"),f=Math.atanh;e.atanh=function(r){return n.array(r).atanh()},e.default=function(){var t,r,e=this.data,n=new l.NDIter(this);try{for(var a=u(n),o=a.next();!o.done;o=a.next()){var i=o.value;e[i]=f(e[i])}}catch(r){t={error:r}}finally{try{o&&!o.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}return this}},{"../iterator":95,"./array":12}],17:[function(r,t,e){"use strict";var h=this&&this.__read||function(r,t){var e="function"==typeof Symbol&&r[Symbol.iterator];if(!e)return r;var n,a,o=e.call(r),i=[];try{for(;(void 0===t||0=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},h=this&&this.__read||function(r,t){var e="function"==typeof Symbol&&r[Symbol.iterator];if(!e)return r;var n,a,o=e.call(r),i=[];try{for(;(void 0===t||0=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(e,"__esModule",{value:!0}),e.cbrt=void 0;var n=r("./array"),l=r("../iterator"),f=Math.cbrt;e.cbrt=function(r){return n.array(r).cbrt()},e.default=function(){var t,r,e=this.data,n=new l.NDIter(this);try{for(var a=u(n),o=a.next();!o.done;o=a.next()){var i=o.value;e[i]=f(e[i])}}catch(r){t={error:r}}finally{try{o&&!o.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}return this}},{"../iterator":95,"./array":12}],20:[function(r,t,e){"use strict";var u=this&&this.__values||function(r){var t="function"==typeof Symbol&&Symbol.iterator,e=t&&r[t],n=0;if(e)return e.call(r);if(r&&"number"==typeof r.length)return{next:function(){return r&&n>=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(e,"__esModule",{value:!0}),e.ceil=void 0;var n=r("./array"),l=r("../iterator"),f=Math.ceil;e.ceil=function(r){return n.array(r).ceil()},e.default=function(){var t,r,e=this.data,n=new l.NDIter(this);try{for(var a=u(n),o=a.next();!o.done;o=a.next()){var i=o.value;e[i]=f(e[i])}}catch(r){t={error:r}}finally{try{o&&!o.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}return this}},{"../iterator":95,"./array":12}],21:[function(r,t,e){"use strict";var o=this&&this.__read||function(r,t){var e="function"==typeof Symbol&&r[Symbol.iterator];if(!e)return r;var n,a,o=e.call(r),i=[];try{for(;(void 0===t||0e[t]&&Number.isFinite(e[t])&&0<=e[t]}))throw new Error("index out of bounds")}},{"./array":12}],22:[function(r,t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.combine=void 0;var u=r("../util"),n=r("./array");e.combine=function(r,t){return n.array(r).combine(n.array(t))},e.default=function(r){if(1!==this.shape.length&&1!==r.shape.length)throw new Error("combine operation not permitted for multidimensional arrays");var t=this.length,e=this.data,n=r.length,a=r.data;if(0===n)return this;if(0===t)return this.data=new(u.get_type(r.dtype))(a),this.length=n,this.dtype=r.dtype,this;var o=t+n,i=new(u.get_type(this.dtype))(o);return i.set(e),i.set(a,t),this.data=i,this.length=o,this.shape=[o],this}},{"../util":97,"./array":12}],23:[function(r,t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.copy=void 0;var n=r("./array");e.copy=function(r){return n.array(r).copy()},e.default=function(){var r=Object.assign(Object.create(Object.getPrototypeOf(this)),this);return r.data=this.data.slice(),r.shape=this.shape.slice(),r.strides=this.strides.slice(),r.length=this.length,r.dtype=this.dtype,r}},{"./array":12}],24:[function(r,t,e){"use strict";var u=this&&this.__values||function(r){var t="function"==typeof Symbol&&Symbol.iterator,e=t&&r[t],n=0;if(e)return e.call(r);if(r&&"number"==typeof r.length)return{next:function(){return r&&n>=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(e,"__esModule",{value:!0}),e.cos=void 0;var n=r("./array"),l=r("../iterator"),f=Math.cos;e.cos=function(r){return n.array(r).cos()},e.default=function(){var t,r,e=this.data,n=new l.NDIter(this);try{for(var a=u(n),o=a.next();!o.done;o=a.next()){var i=o.value;e[i]=f(e[i])}}catch(r){t={error:r}}finally{try{o&&!o.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}return this}},{"../iterator":95,"./array":12}],25:[function(r,t,e){"use strict";var u=this&&this.__values||function(r){var t="function"==typeof Symbol&&Symbol.iterator,e=t&&r[t],n=0;if(e)return e.call(r);if(r&&"number"==typeof r.length)return{next:function(){return r&&n>=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(e,"__esModule",{value:!0}),e.cosh=void 0;var n=r("./array"),l=r("../iterator"),f=Math.cosh;e.cosh=function(r){return n.array(r).cosh()},e.default=function(){var t,r,e=this.data,n=new l.NDIter(this);try{for(var a=u(n),o=a.next();!o.done;o=a.next()){var i=o.value;e[i]=f(e[i])}}catch(r){t={error:r}}finally{try{o&&!o.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}return this}},{"../iterator":95,"./array":12}],26:[function(r,t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.cross=void 0;var n=r("./array");e.cross=function(r,t){return n.array(r).cross(n.array(t))},e.default=function(r){var t=this.length,e=r.length;if(3!==t||3!==e)throw new Error("vectors must have three components");var n=this.y*r.z-this.z*r.y,a=this.z*r.x-this.x*r.z,o=this.x*r.y-this.y*r.x;return this.x=n,this.y=a,this.z=o,this}},{"./array":12}],27:[function(r,t,e){"use strict";var l=this&&this.__read||function(r,t){var e="function"==typeof Symbol&&r[Symbol.iterator];if(!e)return r;var n,a,o=e.call(r),i=[];try{for(;(void 0===t||0=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},v=this&&this.__read||function(r,t){var e="function"==typeof Symbol&&r[Symbol.iterator];if(!e)return r;var n,a,o=e.call(r),i=[];try{for(;(void 0===t||0=h&&(h=Math.abs(u[y*t+v]),p=y,b=v);var m=void 0;if(Math.abs(u[p*t+b])<1e-36*Math.abs(u[b*t+b]))m=u[p*t+b]/u[b*t+b];else{var g=u[b*t+b]/2*u[p*t+b];m=1/(Math.abs(g)+Math.sqrt(g*g+1))}var _=1/Math.sqrt(m*m+1),w=m*_,O=u[p*t+b];for(u[p*t+b]=0,u[p*t+p]-=m*O,u[b*t+b]+=m*O,y=0;y=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},h=this&&this.__read||function(r,t){var e="function"==typeof Symbol&&r[Symbol.iterator];if(!e)return r;var n,a,o=e.call(r),i=[];try{for(;(void 0===t||0t)return!1}}catch(r){e={error:r}}finally{try{l&&!l.done&&(n=u.return)&&n.call(u)}finally{if(e)throw e.error}}return!0}},{"../iterator":95,"./array":12}],32:[function(r,t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.equidimensional=void 0;var n=r("./array");e.equidimensional=function(r,t){n.array(r).equidimensional(n.array(t))},e.default=function(r){var t=this.shape,e=r.shape;if(!t.every(function(r,t){return r===e[t]}))throw new Error("shapes "+t+" and "+e+" do not match")}},{"./array":12}],33:[function(r,t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.equilateral=void 0;var n=r("./array");e.equilateral=function(r,t){n.array(r).equilateral(n.array(t))},e.default=function(r){var t=this.length,e=r.length;if(t!==e)throw new Error("lengths "+t+" and "+e+" do not match")}},{"./array":12}],34:[function(r,t,e){"use strict";var u=this&&this.__values||function(r){var t="function"==typeof Symbol&&Symbol.iterator,e=t&&r[t],n=0;if(e)return e.call(r);if(r&&"number"==typeof r.length)return{next:function(){return r&&n>=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(e,"__esModule",{value:!0}),e.exp=void 0;var n=r("./array"),l=r("../iterator"),f=Math.exp;e.exp=function(r){return n.array(r).exp()},e.default=function(){var t,r,e=this.data,n=new l.NDIter(this);try{for(var a=u(n),o=a.next();!o.done;o=a.next()){var i=o.value;e[i]=f(e[i])}}catch(r){t={error:r}}finally{try{o&&!o.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}return this}},{"../iterator":95,"./array":12}],35:[function(r,t,e){"use strict";var u=this&&this.__values||function(r){var t="function"==typeof Symbol&&Symbol.iterator,e=t&&r[t],n=0;if(e)return e.call(r);if(r&&"number"==typeof r.length)return{next:function(){return r&&n>=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(e,"__esModule",{value:!0}),e.expm1=void 0;var n=r("./array"),l=r("../iterator"),f=Math.expm1;e.expm1=function(r){return n.array(r).expm1()},e.default=function(){var t,r,e=this.data,n=new l.NDIter(this);try{for(var a=u(n),o=a.next();!o.done;o=a.next()){var i=o.value;e[i]=f(e[i])}}catch(r){t={error:r}}finally{try{o&&!o.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}return this}},{"../iterator":95,"./array":12}],36:[function(r,t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.eye=void 0;var a=r("./");e.eye=function(r){var t,e=new a.NDArray(new Float32Array(r*r),{shape:[r,r]}),n=e.data;for(t=0;t=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(e,"__esModule",{value:!0}),e.fill=void 0;var n=r("./array"),l=r("../iterator");e.fill=function(r,t){return void 0===t&&(t=0),n.array(r).fill(t)},e.default=function(r){var t,e;void 0===r&&(r=0);var n=this.data,a=new l.NDIter(this);try{for(var o=u(a),i=o.next();!i.done;i=o.next())n[i.value]=r instanceof Function?r(a.pos):r}catch(r){t={error:r}}finally{try{i&&!i.done&&(e=o.return)&&e.call(o)}finally{if(t)throw t.error}}return this}},{"../iterator":95,"./array":12}],38:[function(r,t,e){"use strict";var u=this&&this.__values||function(r){var t="function"==typeof Symbol&&Symbol.iterator,e=t&&r[t],n=0;if(e)return e.call(r);if(r&&"number"==typeof r.length)return{next:function(){return r&&n>=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(e,"__esModule",{value:!0}),e.floor=void 0;var n=r("./array"),l=r("../iterator"),f=Math.floor;e.floor=function(r){return n.array(r).floor()},e.default=function(){var t,r,e=this.data,n=new l.NDIter(this);try{for(var a=u(n),o=a.next();!o.done;o=a.next()){var i=o.value;e[i]=f(e[i])}}catch(r){t={error:r}}finally{try{o&&!o.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}return this}},{"../iterator":95,"./array":12}],39:[function(r,t,e){"use strict";var l=this&&this.__values||function(r){var t="function"==typeof Symbol&&Symbol.iterator,e=t&&r[t],n=0;if(e)return e.call(r);if(r&&"number"==typeof r.length)return{next:function(){return r&&n>=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(e,"__esModule",{value:!0}),e.forEach=void 0;var f=r("../iterator");e.forEach=function(r,t){r.forEach(t)},e.default=function(r){var t,e,n=this.data,a=new f.NDIter(this);try{for(var o=l(a),i=o.next();!i.done;i=o.next()){var u=i.value;r.call(this,n[u],u,n)}}catch(r){t={error:r}}finally{try{i&&!i.done&&(e=o.return)&&e.call(o)}finally{if(t)throw t.error}}}},{"../iterator":95}],40:[function(r,t,e){"use strict";var u=this&&this.__values||function(r){var t="function"==typeof Symbol&&Symbol.iterator,e=t&&r[t],n=0;if(e)return e.call(r);if(r&&"number"==typeof r.length)return{next:function(){return r&&n>=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(e,"__esModule",{value:!0}),e.fround=void 0;var n=r("./array"),l=r("../iterator"),f=Math.fround;e.fround=function(r){return n.array(r).fround()},e.default=function(){var t,r,e=this.data,n=new l.NDIter(this);try{for(var a=u(n),o=a.next();!o.done;o=a.next()){var i=o.value;e[i]=f(e[i])}}catch(r){t={error:r}}finally{try{o&&!o.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}return this}},{"../iterator":95,"./array":12}],41:[function(r,t,e){"use strict";var n=this&&this.__createBinding||(Object.create?function(r,t,e,n){void 0===n&&(n=e),Object.defineProperty(r,n,{enumerable:!0,get:function(){return t[e]}})}:function(r,t,e,n){void 0===n&&(n=e),r[n]=t[e]}),a=this&&this.__setModuleDefault||(Object.create?function(r,t){Object.defineProperty(r,"default",{enumerable:!0,value:t})}:function(r,t){r.default=t}),o=this&&this.__importStar||function(r){if(r&&r.__esModule)return r;var t={};if(null!=r)for(var e in r)"default"!==e&&Object.prototype.hasOwnProperty.call(r,e)&&n(t,r,e);return a(t,r),t},O=this&&this.__read||function(r,t){var e="function"==typeof Symbol&&r[Symbol.iterator];if(!e)return r;var n,a,o=e.call(r),i=[];try{for(;(void 0===t||0=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(e,"__esModule",{value:!0}),e.gauss=void 0;var x=r("../iterator"),i=r("./array"),S=o(r("../lapack"));e.gauss=function(r){return i.array(r).gauss()},e.default=function(){var t,r,e,n=O(this.shape,2),a=n[0],o=n[1],i=this.data,u=this.dtype;try{var l=this.data,f=new Int32Array(Math.min(a,o));S.getrf(u,a,o,l,o,f);var s=new x.NDIter(this),c=O(s.coords,2),d=c[0],h=c[1];try{for(var y=j(s),v=y.next();!v.done;v=y.next()){var p=v.value;h=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(e,"__esModule",{value:!0}),e.inv=void 0;var O=r("../iterator"),i=r("./array"),j=r("./eye"),x=r("./augment"),S=r("./zeros"),P=o(r("../lapack"));e.inv=function(r){return i.array(r).inv()},e.default=function(){var t,e,n;this.square();var a=_(this.shape,1)[0],r=this.dtype;try{var o=this.data,i=new Int32Array(a);return P.getrf(r,a,a,o,a,i),P.getri(r,a,o,a,i),this}catch(r){var u=j.eye(a),l=x.augment(this,u).gauss(),f=S.zeros(a,a),s=S.zeros(a,a),c=(o=l.data,f.data),d=s.data,h=new O.NDIter(l),y=_(h.coords,2),v=y[0],p=y[1];try{for(var b=w(h),m=b.next();!m.done;m=b.next()){var g=m.value;p=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(e,"__esModule",{value:!0}),e.log=void 0;var n=r("./array"),l=r("../iterator"),f=Math.log;e.log=function(r){return n.array(r).log()},e.default=function(){var t,r,e=this.data,n=new l.NDIter(this);try{for(var a=u(n),o=a.next();!o.done;o=a.next()){var i=o.value;e[i]=f(e[i])}}catch(r){t={error:r}}finally{try{o&&!o.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}return this}},{"../iterator":95,"./array":12}],46:[function(r,t,e){"use strict";var u=this&&this.__values||function(r){var t="function"==typeof Symbol&&Symbol.iterator,e=t&&r[t],n=0;if(e)return e.call(r);if(r&&"number"==typeof r.length)return{next:function(){return r&&n>=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(e,"__esModule",{value:!0}),e.log10=void 0;var n=r("./array"),l=r("../iterator"),f=Math.log10;e.log10=function(r){return n.array(r).log10()},e.default=function(){var t,r,e=this.data,n=new l.NDIter(this);try{for(var a=u(n),o=a.next();!o.done;o=a.next()){var i=o.value;e[i]=f(e[i])}}catch(r){t={error:r}}finally{try{o&&!o.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}return this}},{"../iterator":95,"./array":12}],47:[function(r,t,e){"use strict";var u=this&&this.__values||function(r){var t="function"==typeof Symbol&&Symbol.iterator,e=t&&r[t],n=0;if(e)return e.call(r);if(r&&"number"==typeof r.length)return{next:function(){return r&&n>=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(e,"__esModule",{value:!0}),e.log1p=void 0;var n=r("./array"),l=r("../iterator"),f=Math.log1p;e.log1p=function(r){return n.array(r).log1p()},e.default=function(){var t,r,e=this.data,n=new l.NDIter(this);try{for(var a=u(n),o=a.next();!o.done;o=a.next()){var i=o.value;e[i]=f(e[i])}}catch(r){t={error:r}}finally{try{o&&!o.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}return this}},{"../iterator":95,"./array":12}],48:[function(r,t,e){"use strict";var u=this&&this.__values||function(r){var t="function"==typeof Symbol&&Symbol.iterator,e=t&&r[t],n=0;if(e)return e.call(r);if(r&&"number"==typeof r.length)return{next:function(){return r&&n>=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(e,"__esModule",{value:!0}),e.log2=void 0;var n=r("./array"),l=r("../iterator"),f=Math.log2;e.log2=function(r){return n.array(r).log2()},e.default=function(){var t,r,e=this.data,n=new l.NDIter(this);try{for(var a=u(n),o=a.next();!o.done;o=a.next()){var i=o.value;e[i]=f(e[i])}}catch(r){t={error:r}}finally{try{o&&!o.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}return this}},{"../iterator":95,"./array":12}],49:[function(r,t,e){"use strict";var b=this&&this.__read||function(r,t){var e="function"==typeof Symbol&&r[Symbol.iterator];if(!e)return r;var n,a,o=e.call(r),i=[];try{for(;(void 0===t||0=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(e,"__esModule",{value:!0}),e.lu=void 0;var g=r("../iterator"),n=r("./array");e.lu=function(r){return n.array(r).lu()},e.default=function(){var t,r,e,n=b(this.copy().lu_factor(),2),a=n[0],o=n[1],i=a.copy(),u=a.copy(),l=i.data,f=u.data,s=new g.NDIter(a),c=b(s.coords,2),d=c[0],h=c[1];try{for(var y=m(s),v=y.next();!v.done;v=y.next()){var p=v.value;h=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(e,"__esModule",{value:!0}),e.magic=void 0;var b=r("./"),m=r("../iterator");e.magic=function(r){var t,e,n;if(r<0)throw new Error("invalid n");var a=new Float32Array(r*r),o=new b.NDArray(a,{shape:[r,r]}),i=new m.NDIter(o),u=v(i.coords,2),l=u[0],f=u[1];try{for(var s=p(i),c=s.next();!c.done;c=s.next()){var d=c.value,h=r-l-1,y=r-f-1;a[d]=(f+2*h+1)%r*r+(y+2*h+1)%r+1,l=(n=v(i.coords,2))[0],f=n[1]}}catch(r){t={error:r}}finally{try{c&&!c.done&&(e=s.return)&&e.call(s)}finally{if(t)throw t.error}}return o}},{"../iterator":95,"./":43}],52:[function(r,t,e){"use strict";var f=this&&this.__values||function(r){var t="function"==typeof Symbol&&Symbol.iterator,e=t&&r[t],n=0;if(e)return e.call(r);if(r&&"number"==typeof r.length)return{next:function(){return r&&n>=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(e,"__esModule",{value:!0}),e.map=void 0;var s=r("../iterator"),n=r("./array");e.map=function(r,t){return n.array(r).map(t)},e.default=function(r){var t,e,n=this.data,a=new s.NDIter(this),o=r.bind(this);try{for(var i=f(a),u=i.next();!u.done;u=i.next()){var l=u.value;o(n[l],l,n)}}catch(r){t={error:r}}finally{try{u&&!u.done&&(e=i.return)&&e.call(i)}finally{if(t)throw t.error}}return this}},{"../iterator":95,"./array":12}],53:[function(r,t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.matrix=void 0;var n=r("./");e.matrix=function(r,t){return new n.NDArray(new Float32Array(r*t),{shape:[r,t]})}},{"./":43}],54:[function(r,t,e){"use strict";var n=this&&this.__createBinding||(Object.create?function(r,t,e,n){void 0===n&&(n=e),Object.defineProperty(r,n,{enumerable:!0,get:function(){return t[e]}})}:function(r,t,e,n){void 0===n&&(n=e),r[n]=t[e]}),a=this&&this.__setModuleDefault||(Object.create?function(r,t){Object.defineProperty(r,"default",{enumerable:!0,value:t})}:function(r,t){r.default=t}),o=this&&this.__importStar||function(r){if(r&&r.__esModule)return r;var t={};if(null!=r)for(var e in r)"default"!==e&&Object.prototype.hasOwnProperty.call(r,e)&&n(t,r,e);return a(t,r),t},s=this&&this.__values||function(r){var t="function"==typeof Symbol&&Symbol.iterator,e=t&&r[t],n=0;if(e)return e.call(r);if(r&&"number"==typeof r.length)return{next:function(){return r&&n>=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(e,"__esModule",{value:!0}),e.max=void 0;var i=r("./array"),c=r("../iterator"),d=o(r("../blas"));e.max=function(r){return i.array(r).max()},e.default=function(){var t,e,n=this.data,r=this.length,a=this.dtype,o=Number.NEGATIVE_INFINITY;try{o=n[d.iamax(a,r,n,1)]}catch(r){var i=new c.NDIter(this);try{for(var u=s(i),l=u.next();!l.done;l=u.next()){var f=n[l.value];o=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(e,"__esModule",{value:!0}),e.mean=void 0;var n=r("./array"),f=r("../iterator");e.mean=function(r){return n.array(r).mean()},e.default=function(){var t,r,e=this.data,n=this.length,a=new f.NDIter(this),o=0;try{for(var i=l(a),u=i.next();!u.done;u=i.next())o+=e[u.value]}catch(r){t={error:r}}finally{try{u&&!u.done&&(r=i.return)&&r.call(i)}finally{if(t)throw t.error}}return o/n}},{"../iterator":95,"./array":12}],56:[function(r,t,e){"use strict";var l=this&&this.__values||function(r){var t="function"==typeof Symbol&&Symbol.iterator,e=t&&r[t],n=0;if(e)return e.call(r);if(r&&"number"==typeof r.length)return{next:function(){return r&&n>=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(e,"__esModule",{value:!0}),e.min=void 0;var n=r("./array"),f=r("../iterator");e.min=function(r){return n.array(r).min()},e.default=function(){var t,r,e=this.data,n=new f.NDIter(this),a=Number.POSITIVE_INFINITY;try{for(var o=l(n),i=o.next();!i.done;i=o.next()){var u=e[i.value];u=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(e,"__esModule",{value:!0}),e.multiply=void 0;var P=r("../iterator"),i=r("./array"),M=r("./matrix"),E=o(r("../blas"));e.multiply=function(r,t){return i.array(r).multiply(i.array(t))},e.default=function(r){var t,e,n,a=x(this.shape,2),o=a[0],i=a[1],u=this.data,l=this.dtype,f=x(r.shape,2),s=f[0],c=f[1],d=r.data;if(i!==s)throw new Error("sizes do not match");var h=M.matrix(o,c),y=h.data;try{E.gemm(l,E.NoTrans,E.NoTrans,o,c,i,1,u,i,d,c,0,y,c)}catch(r){var v=new P.NDIter(h),p=void 0,b=x(v.coords,2),m=b[0],g=b[1];try{for(var _=S(v),w=_.next();!w.done;w=_.next()){var O=w.value,j=0;for(p=0;p=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(e,"__esModule",{value:!0}),e.pow=void 0;var n=r("./array"),f=r("../iterator"),s=Math.pow;e.pow=function(r,t){return n.array(r).pow(t)},e.default=function(r){var t,e,n=this.data,a=new f.NDIter(this);try{for(var o=l(a),i=o.next();!i.done;i=o.next()){var u=i.value;n[u]=s(n[u],r)}}catch(r){t={error:r}}finally{try{i&&!i.done&&(e=o.return)&&e.call(o)}finally{if(t)throw t.error}}return this}},{"../iterator":95,"./array":12}],62:[function(r,t,e){"use strict";var u=this&&this.__values||function(r){var t="function"==typeof Symbol&&Symbol.iterator,e=t&&r[t],n=0;if(e)return e.call(r);if(r&&"number"==typeof r.length)return{next:function(){return r&&n>=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(e,"__esModule",{value:!0}),e.prod=void 0;var n=r("./array"),l=r("../iterator");e.prod=function(r){return n.array(r).prod()},e.default=function(){var t,r,e=this.data,n=new l.NDIter(this),a=1;try{for(var o=u(n),i=o.next();!i.done;i=o.next())a*=e[i.value]}catch(r){t={error:r}}finally{try{i&&!i.done&&(r=o.return)&&r.call(o)}finally{if(t)throw t.error}}return a}},{"../iterator":95,"./array":12}],63:[function(r,t,e){"use strict";var c=this&&this.__values||function(r){var t="function"==typeof Symbol&&Symbol.iterator,e=t&&r[t],n=0;if(e)return e.call(r);if(r&&"number"==typeof r.length)return{next:function(){return r&&n>=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},d=this&&this.__read||function(r,t){var e="function"==typeof Symbol&&r[Symbol.iterator];if(!e)return r;var n,a,o=e.call(r),i=[];try{for(;(void 0===t||0=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(e,"__esModule",{value:!0}),e.rank=void 0;var v=r("../iterator"),n=r("./array");e.rank=function(r,t){return void 0===t&&(t=1e-6),n.array(r).rank(t)},e.default=function(r){var t,e,n;void 0===r&&(r=1e-6);var a=this.copy().gauss().data,o=new v.NDIter(this),i=0,u=h(o.coords,2),l=u[0],f=u[1];try{for(var s=y(o),c=s.next();!c.done;c=s.next()){var d=c.value;i<=l&&l<=f&&a[d]>r&&(i+=1),l=(n=h(o.coords,2))[0],f=n[1]}}catch(r){t={error:r}}finally{try{c&&!c.done&&(e=s.return)&&e.call(s)}finally{if(t)throw t.error}}return i}},{"../iterator":95,"./array":12}],69:[function(r,t,e){"use strict";var u=this&&this.__values||function(r){var t="function"==typeof Symbol&&Symbol.iterator,e=t&&r[t],n=0;if(e)return e.call(r);if(r&&"number"==typeof r.length)return{next:function(){return r&&n>=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(e,"__esModule",{value:!0}),e.reciprocal=void 0;var n=r("./array"),l=r("../iterator");e.reciprocal=function(r){return n.array(r).reciprocal()},e.default=function(){var t,r,e=this.data,n=new l.NDIter(this);try{for(var a=u(n),o=a.next();!o.done;o=a.next()){var i=o.value;e[i]=1/e[i]}}catch(r){t={error:r}}finally{try{o&&!o.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}return this}},{"../iterator":95,"./array":12}],70:[function(r,t,e){"use strict";var c=this&&this.__values||function(r){var t="function"==typeof Symbol&&Symbol.iterator,e=t&&r[t],n=0;if(e)return e.call(r);if(r&&"number"==typeof r.length)return{next:function(){return r&&n>=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(e,"__esModule",{value:!0}),e.reduce=void 0;var n=r("./array"),d=r("../iterator");e.reduce=function(r,t,e){return n.array(r).reduce(t,e)},e.default=function(r,t){var e,n,a=this.data;if(0===this.length&&void 0===t)throw new Error("Reduce of empty array with no initial value.");var o,i=new d.NDIter(this),u=r.bind(this);void 0===t?(o=a[0],i.next()):o=t;try{for(var l=c(i),f=l.next();!f.done;f=l.next()){var s=f.value;o=u(o,a[s],s,a)}}catch(r){e={error:r}}finally{try{f&&!f.done&&(n=l.return)&&n.call(l)}finally{if(e)throw e.error}}return o}},{"../iterator":95,"./array":12}],71:[function(r,t,e){"use strict";var n=this&&this.__read||function(r,t){var e="function"==typeof Symbol&&r[Symbol.iterator];if(!e)return r;var n,a,o=e.call(r),i=[];try{for(;(void 0===t||0=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(e,"__esModule",{value:!0}),e.round=void 0;var n=r("./array"),l=r("../iterator"),f=Math.round;e.round=function(r){return n.array(r).round()},e.default=function(){var t,r,e=this.data,n=new l.NDIter(this);try{for(var a=u(n),o=a.next();!o.done;o=a.next()){var i=o.value;e[i]=f(e[i])}}catch(r){t={error:r}}finally{try{o&&!o.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}return this}},{"../iterator":95,"./array":12}],73:[function(r,t,e){"use strict";var i=this&&this.__read||function(r,t){var e="function"==typeof Symbol&&r[Symbol.iterator];if(!e)return r;var n,a,o=e.call(r),i=[];try{for(;(void 0===t||0=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(e,"__esModule",{value:!0}),e.scale=void 0;var i=r("./array"),s=r("../iterator"),c=o(r("../blas"));e.scale=function(r,t){return i.array(r).scale(t)},e.default=function(t){var e,n,a=this.data,r=this.length,o=this.dtype;try{c.scal(o,r,t,a,1)}catch(r){var i=new s.NDIter(this);try{for(var u=f(i),l=u.next();!l.done;l=u.next())a[l.value]*=t}catch(r){e={error:r}}finally{try{l&&!l.done&&(n=u.return)&&n.call(u)}finally{if(e)throw e.error}}}return this}},{"../blas":6,"../iterator":95,"./array":12}],75:[function(r,t,e){"use strict";var n=this&&this.__read||function(r,t){var e="function"==typeof Symbol&&r[Symbol.iterator];if(!e)return r;var n,a,o=e.call(r),i=[];try{for(;(void 0===t||0=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(e,"__esModule",{value:!0}),e.sign=void 0;var n=r("./array"),l=r("../iterator"),f=Math.sign;e.sign=function(r){return n.array(r).sign()},e.default=function(){var t,r,e=this.data,n=new l.NDIter(this);try{for(var a=u(n),o=a.next();!o.done;o=a.next()){var i=o.value;e[i]=f(e[i])}}catch(r){t={error:r}}finally{try{o&&!o.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}return this}},{"../iterator":95,"./array":12}],77:[function(r,t,e){"use strict";var u=this&&this.__values||function(r){var t="function"==typeof Symbol&&Symbol.iterator,e=t&&r[t],n=0;if(e)return e.call(r);if(r&&"number"==typeof r.length)return{next:function(){return r&&n>=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(e,"__esModule",{value:!0}),e.sin=void 0;var n=r("./array"),l=r("../iterator"),f=Math.sin;e.sin=function(r){return n.array(r).sin()},e.default=function(){var t,r,e=this.data,n=new l.NDIter(this);try{for(var a=u(n),o=a.next();!o.done;o=a.next()){var i=o.value;e[i]=f(e[i])}}catch(r){t={error:r}}finally{try{o&&!o.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}return this}},{"../iterator":95,"./array":12}],78:[function(r,t,e){"use strict";var u=this&&this.__values||function(r){var t="function"==typeof Symbol&&Symbol.iterator,e=t&&r[t],n=0;if(e)return e.call(r);if(r&&"number"==typeof r.length)return{next:function(){return r&&n>=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(e,"__esModule",{value:!0}),e.sinh=void 0;var n=r("./array"),l=r("../iterator"),f=Math.sinh;e.sinh=function(r){return n.array(r).sinh()},e.default=function(){var t,r,e=this.data,n=new l.NDIter(this);try{for(var a=u(n),o=a.next();!o.done;o=a.next()){var i=o.value;e[i]=f(e[i])}}catch(r){t={error:r}}finally{try{o&&!o.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}return this}},{"../iterator":95,"./array":12}],79:[function(r,t,e){"use strict";var n=this&&this.__read||function(r,t){var e="function"==typeof Symbol&&r[Symbol.iterator];if(!e)return r;var n,a,o=e.call(r),i=[];try{for(;(void 0===t||0=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(e,"__esModule",{value:!0}),e.sqrt=void 0;var n=r("./array"),l=r("../iterator"),f=Math.sqrt;e.sqrt=function(r){return n.array(r).sqrt()},e.default=function(){var t,r,e=this.data,n=new l.NDIter(this);try{for(var a=u(n),o=a.next();!o.done;o=a.next()){var i=o.value;e[i]=f(e[i])}}catch(r){t={error:r}}finally{try{o&&!o.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}return this}},{"../iterator":95,"./array":12}],82:[function(r,t,e){"use strict";var a=this&&this.__read||function(r,t){var e="function"==typeof Symbol&&r[Symbol.iterator];if(!e)return r;var n,a,o=e.call(r),i=[];try{for(;(void 0===t||0=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(e,"__esModule",{value:!0}),e.sum=void 0;var n=r("./array"),l=r("../iterator");e.sum=function(r){return n.array(r).sum()},e.default=function(){var t,r,e=this.data,n=new l.NDIter(this),a=0;try{for(var o=u(n),i=o.next();!i.done;i=o.next())a+=e[i.value]}catch(r){t={error:r}}finally{try{i&&!i.done&&(r=o.return)&&r.call(o)}finally{if(t)throw t.error}}return a}},{"../iterator":95,"./array":12}],85:[function(r,t,e){"use strict";var o=this&&this.__read||function(r,t){var e="function"==typeof Symbol&&r[Symbol.iterator];if(!e)return r;var n,a,o=e.call(r),i=[];try{for(;(void 0===t||0=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(e,"__esModule",{value:!0}),e.tan=void 0;var n=r("./array"),l=r("../iterator"),f=Math.tan;e.tan=function(r){return n.array(r).tan()},e.default=function(){var t,r,e=this.data,n=new l.NDIter(this);try{for(var a=u(n),o=a.next();!o.done;o=a.next()){var i=o.value;e[i]=f(e[i])}}catch(r){t={error:r}}finally{try{o&&!o.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}return this}},{"../iterator":95,"./array":12}],87:[function(r,t,e){"use strict";var u=this&&this.__values||function(r){var t="function"==typeof Symbol&&Symbol.iterator,e=t&&r[t],n=0;if(e)return e.call(r);if(r&&"number"==typeof r.length)return{next:function(){return r&&n>=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(e,"__esModule",{value:!0}),e.tanh=void 0;var n=r("./array"),l=r("../iterator"),f=Math.tanh;e.tanh=function(r){return n.array(r).tanh()},e.default=function(){var t,r,e=this.data,n=new l.NDIter(this);try{for(var a=u(n),o=a.next();!o.done;o=a.next()){var i=o.value;e[i]=f(e[i])}}catch(r){t={error:r}}finally{try{o&&!o.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}return this}},{"../iterator":95,"./array":12}],88:[function(r,t,e){"use strict";var n=this&&this.__read||function(r,t){var e="function"==typeof Symbol&&r[Symbol.iterator];if(!e)return r;var n,a,o=e.call(r),i=[];try{for(;(void 0===t||0=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(e,"__esModule",{value:!0}),e.trunc=void 0;var n=r("./array"),l=r("../iterator"),f=Math.trunc;e.trunc=function(r){return n.array(r).trunc()},e.default=function(){var t,r,e=this.data,n=new l.NDIter(this);try{for(var a=u(n),o=a.next();!o.done;o=a.next()){var i=o.value;e[i]=f(e[i])}}catch(r){t={error:r}}finally{try{o&&!o.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}return this}},{"../iterator":95,"./array":12}],93:[function(r,t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.zeros=void 0;var n=r("./");e.zeros=function(){for(var r=[],t=0;tthis.lengthm1},r.prototype.current=function(){var r=this.done();return{value:r?void 0:this.pos,done:r}},r.prototype.next1d=function(){var r=this.strides,t=this.coords;this.pos+=r[0],t[0]+=1},r.prototype.nextcontiguous=function(){this.pos+=1},r.prototype.next2d=function(){var r=this.coords,t=this.strides,e=this.shapem1,n=this.backstrides;r[1]this.lengthm1},r.prototype.current=function(){var r=this.done();return{value:r?void 0:this.pos,done:r}},r.prototype.next=function(){var r=this.current();this.index+=1;var t,e,n=this.numiter;for(e=0;e + + + + <?js= env.conf.metadata.title ?>: <?js= title ?> + + + + + + + + + + + + + + +
+ + + <?js= env.conf.metadata.title ?> + + +

+ + + +

+ +
+ + +
+
+

+

+ +
+
+ +
+
+ Documentation generated by JSDoc on +
+
+ + + + + + diff --git a/docs/assets/css/main.css b/docs/assets/css/main.css deleted file mode 100644 index c771b843..00000000 --- a/docs/assets/css/main.css +++ /dev/null @@ -1,2333 +0,0 @@ -/*! normalize.css v1.1.3 | MIT License | git.io/normalize */ -/* ========================================================================== - * HTML5 display definitions - * ========================================================================== */ -/** - * Correct `block` display not defined in IE 6/7/8/9 and Firefox 3. */ -article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section, summary { - display: block; } - -/** - * Correct `inline-block` display not defined in IE 6/7/8/9 and Firefox 3. */ -audio, canvas, video { - display: inline-block; - *display: inline; - *zoom: 1; } - -/** - * Prevent modern browsers from displaying `audio` without controls. - * Remove excess height in iOS 5 devices. */ -audio:not([controls]) { - display: none; - height: 0; } - -/** - * Address styling not present in IE 7/8/9, Firefox 3, and Safari 4. - * Known issue: no IE 6 support. */ -[hidden] { - display: none; } - -/* ========================================================================== - * Base - * ========================================================================== */ -/** - * 1. Correct text resizing oddly in IE 6/7 when body `font-size` is set using - * `em` units. - * 2. Prevent iOS text size adjust after orientation change, without disabling - * user zoom. */ -html { - font-size: 100%; - /* 1 */ - -ms-text-size-adjust: 100%; - /* 2 */ - -webkit-text-size-adjust: 100%; - /* 2 */ - font-family: sans-serif; } - -/** - * Address `font-family` inconsistency between `textarea` and other form - * elements. */ -button, input, select, textarea { - font-family: sans-serif; } - -/** - * Address margins handled incorrectly in IE 6/7. */ -body { - margin: 0; } - -/* ========================================================================== - * Links - * ========================================================================== */ -/** - * Address `outline` inconsistency between Chrome and other browsers. */ -a:focus { - outline: thin dotted; } - -a:active, a:hover { - outline: 0; } - -/** - * Improve readability when focused and also mouse hovered in all browsers. */ -/* ========================================================================== - * Typography - * ========================================================================== */ -/** - * Address font sizes and margins set differently in IE 6/7. - * Address font sizes within `section` and `article` in Firefox 4+, Safari 5, - * and Chrome. */ -h1 { - font-size: 2em; - margin: 0.67em 0; } - -h2 { - font-size: 1.5em; - margin: 0.83em 0; } - -h3 { - font-size: 1.17em; - margin: 1em 0; } - -h4, .tsd-index-panel h3 { - font-size: 1em; - margin: 1.33em 0; } - -h5 { - font-size: 0.83em; - margin: 1.67em 0; } - -h6 { - font-size: 0.67em; - margin: 2.33em 0; } - -/** - * Address styling not present in IE 7/8/9, Safari 5, and Chrome. */ -abbr[title] { - border-bottom: 1px dotted; } - -/** - * Address style set to `bolder` in Firefox 3+, Safari 4/5, and Chrome. */ -b, strong { - font-weight: bold; } - -blockquote { - margin: 1em 40px; } - -/** - * Address styling not present in Safari 5 and Chrome. */ -dfn { - font-style: italic; } - -/** - * Address differences between Firefox and other browsers. - * Known issue: no IE 6/7 normalization. */ -hr { - box-sizing: content-box; - height: 0; } - -/** - * Address styling not present in IE 6/7/8/9. */ -mark { - background: #ff0; - color: #000; } - -/** - * Address margins set differently in IE 6/7. */ -p, pre { - margin: 1em 0; } - -/** - * Correct font family set oddly in IE 6, Safari 4/5, and Chrome. */ -code, kbd, pre, samp { - font-family: monospace, serif; - _font-family: 'courier new', monospace; - font-size: 1em; } - -/** - * Improve readability of pre-formatted text in all browsers. */ -pre { - white-space: pre; - white-space: pre-wrap; - word-wrap: break-word; } - -/** - * Address CSS quotes not supported in IE 6/7. */ -q { - quotes: none; } - q:before, q:after { - content: ''; - content: none; } - -/** - * Address `quotes` property not supported in Safari 4. */ -/** - * Address inconsistent and variable font size in all browsers. */ -small { - font-size: 80%; } - -/** - * Prevent `sub` and `sup` affecting `line-height` in all browsers. */ -sub { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; } - -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; - top: -0.5em; } - -sub { - bottom: -0.25em; } - -/* ========================================================================== - * Lists - * ========================================================================== */ -/** - * Address margins set differently in IE 6/7. */ -dl, menu, ol, ul { - margin: 1em 0; } - -dd { - margin: 0 0 0 40px; } - -/** - * Address paddings set differently in IE 6/7. */ -menu, ol, ul { - padding: 0 0 0 40px; } - -/** - * Correct list images handled incorrectly in IE 7. */ -nav ul, nav ol { - list-style: none; - list-style-image: none; } - -/* ========================================================================== - * Embedded content - * ========================================================================== */ -/** - * 1. Remove border when inside `a` element in IE 6/7/8/9 and Firefox 3. - * 2. Improve image quality when scaled in IE 7. */ -img { - border: 0; - /* 1 */ - -ms-interpolation-mode: bicubic; } - -/* 2 */ -/** - * Correct overflow displayed oddly in IE 9. */ -svg:not(:root) { - overflow: hidden; } - -/* ========================================================================== - * Figures - * ========================================================================== */ -/** - * Address margin not present in IE 6/7/8/9, Safari 5, and Opera 11. */ -figure, form { - margin: 0; } - -/* ========================================================================== - * Forms - * ========================================================================== */ -/** - * Correct margin displayed oddly in IE 6/7. */ -/** - * Define consistent border, margin, and padding. */ -fieldset { - border: 1px solid #c0c0c0; - margin: 0 2px; - padding: 0.35em 0.625em 0.75em; } - -/** - * 1. Correct color not being inherited in IE 6/7/8/9. - * 2. Correct text not wrapping in Firefox 3. - * 3. Correct alignment displayed oddly in IE 6/7. */ -legend { - border: 0; - /* 1 */ - padding: 0; - white-space: normal; - /* 2 */ - *margin-left: -7px; } - -/* 3 */ -/** - * 1. Correct font size not being inherited in all browsers. - * 2. Address margins set differently in IE 6/7, Firefox 3+, Safari 5, - * and Chrome. - * 3. Improve appearance and consistency in all browsers. */ -button, input, select, textarea { - font-size: 100%; - /* 1 */ - margin: 0; - /* 2 */ - vertical-align: baseline; - /* 3 */ - *vertical-align: middle; } - -/* 3 */ -/** - * Address Firefox 3+ setting `line-height` on `input` using `!important` in - * the UA stylesheet. */ -button, input { - line-height: normal; } - -/** - * Address inconsistent `text-transform` inheritance for `button` and `select`. - * All other form control elements do not inherit `text-transform` values. - * Correct `button` style inheritance in Chrome, Safari 5+, and IE 6+. - * Correct `select` style inheritance in Firefox 4+ and Opera. */ -button, select { - text-transform: none; } - -/** - * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` - * and `video` controls. - * 2. Correct inability to style clickable `input` types in iOS. - * 3. Improve usability and consistency of cursor style between image-type - * `input` and others. - * 4. Remove inner spacing in IE 7 without affecting normal text inputs. - * Known issue: inner spacing remains in IE 6. */ -button, html input[type="button"] { - -webkit-appearance: button; - /* 2 */ - cursor: pointer; - /* 3 */ - *overflow: visible; } - -/* 4 */ -input[type="reset"], input[type="submit"] { - -webkit-appearance: button; - /* 2 */ - cursor: pointer; - /* 3 */ - *overflow: visible; } - -/* 4 */ -/** - * Re-set default cursor for disabled elements. */ -button[disabled], html input[disabled] { - cursor: default; } - -/** - * 1. Address box sizing set to content-box in IE 8/9. - * 2. Remove excess padding in IE 8/9. - * 3. Remove excess padding in IE 7. - * Known issue: excess padding remains in IE 6. */ -input { - /* 3 */ } - input[type="checkbox"], input[type="radio"] { - box-sizing: border-box; - /* 1 */ - padding: 0; - /* 2 */ - *height: 13px; - /* 3 */ - *width: 13px; } - input[type="search"] { - -webkit-appearance: textfield; - /* 1 */ - /* 2 */ - box-sizing: content-box; } - input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; } - -/** - * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome. - * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome - * (include `-moz` to future-proof). */ -/** - * Remove inner padding and search cancel button in Safari 5 and Chrome - * on OS X. */ -/** - * Remove inner padding and border in Firefox 3+. */ -button::-moz-focus-inner, input::-moz-focus-inner { - border: 0; - padding: 0; } - -/** - * 1. Remove default vertical scrollbar in IE 6/7/8/9. - * 2. Improve readability and alignment in all browsers. */ -textarea { - overflow: auto; - /* 1 */ - vertical-align: top; } - -/* 2 */ -/* ========================================================================== - * Tables - * ========================================================================== */ -/** - * Remove most spacing between table cells. */ -table { - border-collapse: collapse; - border-spacing: 0; } - -/* - * - *Visual Studio-like style based on original C# coloring by Jason Diamond */ -.hljs { - display: inline-block; - padding: 0.5em; - background: white; - color: black; } - -.hljs-comment, .hljs-annotation, .hljs-template_comment, .diff .hljs-header, .hljs-chunk, .apache .hljs-cbracket { - color: #008000; } - -.hljs-keyword, .hljs-id, .hljs-built_in, .css .smalltalk .hljs-class, .hljs-winutils, .bash .hljs-variable, .tex .hljs-command, .hljs-request, .hljs-status, .nginx .hljs-title { - color: #00f; } - -.xml .hljs-tag { - color: #00f; } - .xml .hljs-tag .hljs-value { - color: #00f; } - -.hljs-string, .hljs-title, .hljs-parent, .hljs-tag .hljs-value, .hljs-rules .hljs-value { - color: #a31515; } - -.ruby .hljs-symbol { - color: #a31515; } - .ruby .hljs-symbol .hljs-string { - color: #a31515; } - -.hljs-template_tag, .django .hljs-variable, .hljs-addition, .hljs-flow, .hljs-stream, .apache .hljs-tag, .hljs-date, .tex .hljs-formula, .coffeescript .hljs-attribute { - color: #a31515; } - -.ruby .hljs-string, .hljs-decorator, .hljs-filter .hljs-argument, .hljs-localvars, .hljs-array, .hljs-attr_selector, .hljs-pseudo, .hljs-pi, .hljs-doctype, .hljs-deletion, .hljs-envvar, .hljs-shebang, .hljs-preprocessor, .hljs-pragma, .userType, .apache .hljs-sqbracket, .nginx .hljs-built_in, .tex .hljs-special, .hljs-prompt { - color: #2b91af; } - -.hljs-phpdoc, .hljs-javadoc, .hljs-xmlDocTag { - color: #808080; } - -.vhdl .hljs-typename { - font-weight: bold; } - -.vhdl .hljs-string { - color: #666666; } - -.vhdl .hljs-literal { - color: #a31515; } - -.vhdl .hljs-attribute { - color: #00b0e8; } - -.xml .hljs-attribute { - color: #f00; } - -.col > :first-child, .col-1 > :first-child, .col-2 > :first-child, .col-3 > :first-child, .col-4 > :first-child, .col-5 > :first-child, .col-6 > :first-child, .col-7 > :first-child, .col-8 > :first-child, .col-9 > :first-child, .col-10 > :first-child, .col-11 > :first-child, .tsd-panel > :first-child, ul.tsd-descriptions > li > :first-child, -.col > :first-child > :first-child, -.col-1 > :first-child > :first-child, -.col-2 > :first-child > :first-child, -.col-3 > :first-child > :first-child, -.col-4 > :first-child > :first-child, -.col-5 > :first-child > :first-child, -.col-6 > :first-child > :first-child, -.col-7 > :first-child > :first-child, -.col-8 > :first-child > :first-child, -.col-9 > :first-child > :first-child, -.col-10 > :first-child > :first-child, -.col-11 > :first-child > :first-child, -.tsd-panel > :first-child > :first-child, -ul.tsd-descriptions > li > :first-child > :first-child, -.col > :first-child > :first-child > :first-child, -.col-1 > :first-child > :first-child > :first-child, -.col-2 > :first-child > :first-child > :first-child, -.col-3 > :first-child > :first-child > :first-child, -.col-4 > :first-child > :first-child > :first-child, -.col-5 > :first-child > :first-child > :first-child, -.col-6 > :first-child > :first-child > :first-child, -.col-7 > :first-child > :first-child > :first-child, -.col-8 > :first-child > :first-child > :first-child, -.col-9 > :first-child > :first-child > :first-child, -.col-10 > :first-child > :first-child > :first-child, -.col-11 > :first-child > :first-child > :first-child, -.tsd-panel > :first-child > :first-child > :first-child, -ul.tsd-descriptions > li > :first-child > :first-child > :first-child { - margin-top: 0; } - -.col > :last-child, .col-1 > :last-child, .col-2 > :last-child, .col-3 > :last-child, .col-4 > :last-child, .col-5 > :last-child, .col-6 > :last-child, .col-7 > :last-child, .col-8 > :last-child, .col-9 > :last-child, .col-10 > :last-child, .col-11 > :last-child, .tsd-panel > :last-child, ul.tsd-descriptions > li > :last-child, -.col > :last-child > :last-child, -.col-1 > :last-child > :last-child, -.col-2 > :last-child > :last-child, -.col-3 > :last-child > :last-child, -.col-4 > :last-child > :last-child, -.col-5 > :last-child > :last-child, -.col-6 > :last-child > :last-child, -.col-7 > :last-child > :last-child, -.col-8 > :last-child > :last-child, -.col-9 > :last-child > :last-child, -.col-10 > :last-child > :last-child, -.col-11 > :last-child > :last-child, -.tsd-panel > :last-child > :last-child, -ul.tsd-descriptions > li > :last-child > :last-child, -.col > :last-child > :last-child > :last-child, -.col-1 > :last-child > :last-child > :last-child, -.col-2 > :last-child > :last-child > :last-child, -.col-3 > :last-child > :last-child > :last-child, -.col-4 > :last-child > :last-child > :last-child, -.col-5 > :last-child > :last-child > :last-child, -.col-6 > :last-child > :last-child > :last-child, -.col-7 > :last-child > :last-child > :last-child, -.col-8 > :last-child > :last-child > :last-child, -.col-9 > :last-child > :last-child > :last-child, -.col-10 > :last-child > :last-child > :last-child, -.col-11 > :last-child > :last-child > :last-child, -.tsd-panel > :last-child > :last-child > :last-child, -ul.tsd-descriptions > li > :last-child > :last-child > :last-child { - margin-bottom: 0; } - -.container { - max-width: 1200px; - margin: 0 auto; - padding: 0 40px; } - @media (max-width: 640px) { - .container { - padding: 0 20px; } } - -.container-main { - padding-bottom: 200px; } - -.row { - position: relative; - margin: 0 -10px; } - .row:after { - visibility: hidden; - display: block; - content: ""; - clear: both; - height: 0; } - -.col, .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11 { - box-sizing: border-box; - float: left; - padding: 0 10px; } - -.col-1 { - width: 8.3333333333%; } - -.offset-1 { - margin-left: 8.3333333333%; } - -.col-2 { - width: 16.6666666667%; } - -.offset-2 { - margin-left: 16.6666666667%; } - -.col-3 { - width: 25%; } - -.offset-3 { - margin-left: 25%; } - -.col-4 { - width: 33.3333333333%; } - -.offset-4 { - margin-left: 33.3333333333%; } - -.col-5 { - width: 41.6666666667%; } - -.offset-5 { - margin-left: 41.6666666667%; } - -.col-6 { - width: 50%; } - -.offset-6 { - margin-left: 50%; } - -.col-7 { - width: 58.3333333333%; } - -.offset-7 { - margin-left: 58.3333333333%; } - -.col-8 { - width: 66.6666666667%; } - -.offset-8 { - margin-left: 66.6666666667%; } - -.col-9 { - width: 75%; } - -.offset-9 { - margin-left: 75%; } - -.col-10 { - width: 83.3333333333%; } - -.offset-10 { - margin-left: 83.3333333333%; } - -.col-11 { - width: 91.6666666667%; } - -.offset-11 { - margin-left: 91.6666666667%; } - -.tsd-kind-icon { - display: block; - position: relative; - padding-left: 20px; - text-indent: -20px; } - .tsd-kind-icon:before { - content: ''; - display: inline-block; - vertical-align: middle; - width: 17px; - height: 17px; - margin: 0 3px 2px 0; - background-image: url(../images/icons.png); } - @media (-webkit-min-device-pixel-ratio: 1.5), (min-device-pixel-ratio: 1.5), (min-resolution: 144dpi) { - .tsd-kind-icon:before { - background-image: url(../images/icons@2x.png); - background-size: 238px 204px; } } - -.tsd-signature.tsd-kind-icon:before { - background-position: 0 -153px; } - -.tsd-kind-object-literal > .tsd-kind-icon:before { - background-position: 0px -17px; } - -.tsd-kind-object-literal.tsd-is-protected > .tsd-kind-icon:before { - background-position: -17px -17px; } - -.tsd-kind-object-literal.tsd-is-private > .tsd-kind-icon:before { - background-position: -34px -17px; } - -.tsd-kind-class > .tsd-kind-icon:before { - background-position: 0px -34px; } - -.tsd-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -17px -34px; } - -.tsd-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -34px -34px; } - -.tsd-kind-class.tsd-has-type-parameter > .tsd-kind-icon:before { - background-position: 0px -51px; } - -.tsd-kind-class.tsd-has-type-parameter.tsd-is-protected > .tsd-kind-icon:before { - background-position: -17px -51px; } - -.tsd-kind-class.tsd-has-type-parameter.tsd-is-private > .tsd-kind-icon:before { - background-position: -34px -51px; } - -.tsd-kind-interface > .tsd-kind-icon:before { - background-position: 0px -68px; } - -.tsd-kind-interface.tsd-is-protected > .tsd-kind-icon:before { - background-position: -17px -68px; } - -.tsd-kind-interface.tsd-is-private > .tsd-kind-icon:before { - background-position: -34px -68px; } - -.tsd-kind-interface.tsd-has-type-parameter > .tsd-kind-icon:before { - background-position: 0px -85px; } - -.tsd-kind-interface.tsd-has-type-parameter.tsd-is-protected > .tsd-kind-icon:before { - background-position: -17px -85px; } - -.tsd-kind-interface.tsd-has-type-parameter.tsd-is-private > .tsd-kind-icon:before { - background-position: -34px -85px; } - -.tsd-kind-module > .tsd-kind-icon:before { - background-position: 0px -102px; } - -.tsd-kind-module.tsd-is-protected > .tsd-kind-icon:before { - background-position: -17px -102px; } - -.tsd-kind-module.tsd-is-private > .tsd-kind-icon:before { - background-position: -34px -102px; } - -.tsd-kind-external-module > .tsd-kind-icon:before { - background-position: 0px -102px; } - -.tsd-kind-external-module.tsd-is-protected > .tsd-kind-icon:before { - background-position: -17px -102px; } - -.tsd-kind-external-module.tsd-is-private > .tsd-kind-icon:before { - background-position: -34px -102px; } - -.tsd-kind-enum > .tsd-kind-icon:before { - background-position: 0px -119px; } - -.tsd-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -17px -119px; } - -.tsd-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -34px -119px; } - -.tsd-kind-enum-member > .tsd-kind-icon:before { - background-position: 0px -136px; } - -.tsd-kind-enum-member.tsd-is-protected > .tsd-kind-icon:before { - background-position: -17px -136px; } - -.tsd-kind-enum-member.tsd-is-private > .tsd-kind-icon:before { - background-position: -34px -136px; } - -.tsd-kind-signature > .tsd-kind-icon:before { - background-position: 0px -153px; } - -.tsd-kind-signature.tsd-is-protected > .tsd-kind-icon:before { - background-position: -17px -153px; } - -.tsd-kind-signature.tsd-is-private > .tsd-kind-icon:before { - background-position: -34px -153px; } - -.tsd-kind-type-alias > .tsd-kind-icon:before { - background-position: 0px -170px; } - -.tsd-kind-type-alias.tsd-is-protected > .tsd-kind-icon:before { - background-position: -17px -170px; } - -.tsd-kind-type-alias.tsd-is-private > .tsd-kind-icon:before { - background-position: -34px -170px; } - -.tsd-kind-type-alias.tsd-has-type-parameter > .tsd-kind-icon:before { - background-position: 0px -187px; } - -.tsd-kind-type-alias.tsd-has-type-parameter.tsd-is-protected > .tsd-kind-icon:before { - background-position: -17px -187px; } - -.tsd-kind-type-alias.tsd-has-type-parameter.tsd-is-private > .tsd-kind-icon:before { - background-position: -34px -187px; } - -.tsd-kind-variable > .tsd-kind-icon:before { - background-position: -136px -0px; } - -.tsd-kind-variable.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -0px; } - -.tsd-kind-variable.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -0px; } - -.tsd-kind-variable.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -0px; } - -.tsd-kind-variable.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -0px; } - -.tsd-kind-variable.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -0px; } - -.tsd-kind-variable.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -102px -0px; } - -.tsd-kind-variable.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -0px; } - -.tsd-kind-variable.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -0px; } - -.tsd-kind-variable.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -0px; } - -.tsd-kind-variable.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -0px; } - -.tsd-kind-variable.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -0px; } - -.tsd-kind-variable.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -221px -0px; } - -.tsd-kind-property > .tsd-kind-icon:before { - background-position: -136px -0px; } - -.tsd-kind-property.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -0px; } - -.tsd-kind-property.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -0px; } - -.tsd-kind-property.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -0px; } - -.tsd-kind-property.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -0px; } - -.tsd-kind-property.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -0px; } - -.tsd-kind-property.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -102px -0px; } - -.tsd-kind-property.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -0px; } - -.tsd-kind-property.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -0px; } - -.tsd-kind-property.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -0px; } - -.tsd-kind-property.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -0px; } - -.tsd-kind-property.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -0px; } - -.tsd-kind-property.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -221px -0px; } - -.tsd-kind-get-signature > .tsd-kind-icon:before { - background-position: -136px -17px; } - -.tsd-kind-get-signature.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -17px; } - -.tsd-kind-get-signature.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -17px; } - -.tsd-kind-get-signature.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -17px; } - -.tsd-kind-get-signature.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -17px; } - -.tsd-kind-get-signature.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -17px; } - -.tsd-kind-get-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -102px -17px; } - -.tsd-kind-get-signature.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -17px; } - -.tsd-kind-get-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -17px; } - -.tsd-kind-get-signature.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -17px; } - -.tsd-kind-get-signature.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -17px; } - -.tsd-kind-get-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -17px; } - -.tsd-kind-get-signature.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -221px -17px; } - -.tsd-kind-set-signature > .tsd-kind-icon:before { - background-position: -136px -34px; } - -.tsd-kind-set-signature.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -34px; } - -.tsd-kind-set-signature.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -34px; } - -.tsd-kind-set-signature.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -34px; } - -.tsd-kind-set-signature.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -34px; } - -.tsd-kind-set-signature.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -34px; } - -.tsd-kind-set-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -102px -34px; } - -.tsd-kind-set-signature.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -34px; } - -.tsd-kind-set-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -34px; } - -.tsd-kind-set-signature.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -34px; } - -.tsd-kind-set-signature.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -34px; } - -.tsd-kind-set-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -34px; } - -.tsd-kind-set-signature.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -221px -34px; } - -.tsd-kind-accessor > .tsd-kind-icon:before { - background-position: -136px -51px; } - -.tsd-kind-accessor.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -51px; } - -.tsd-kind-accessor.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -51px; } - -.tsd-kind-accessor.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -51px; } - -.tsd-kind-accessor.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -51px; } - -.tsd-kind-accessor.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -51px; } - -.tsd-kind-accessor.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -102px -51px; } - -.tsd-kind-accessor.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -51px; } - -.tsd-kind-accessor.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -51px; } - -.tsd-kind-accessor.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -51px; } - -.tsd-kind-accessor.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -51px; } - -.tsd-kind-accessor.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -51px; } - -.tsd-kind-accessor.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -221px -51px; } - -.tsd-kind-function > .tsd-kind-icon:before { - background-position: -136px -68px; } - -.tsd-kind-function.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -68px; } - -.tsd-kind-function.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -68px; } - -.tsd-kind-function.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -68px; } - -.tsd-kind-function.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -68px; } - -.tsd-kind-function.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -68px; } - -.tsd-kind-function.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -102px -68px; } - -.tsd-kind-function.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -68px; } - -.tsd-kind-function.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -68px; } - -.tsd-kind-function.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -68px; } - -.tsd-kind-function.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -68px; } - -.tsd-kind-function.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -68px; } - -.tsd-kind-function.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -221px -68px; } - -.tsd-kind-method > .tsd-kind-icon:before { - background-position: -136px -68px; } - -.tsd-kind-method.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -68px; } - -.tsd-kind-method.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -68px; } - -.tsd-kind-method.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -68px; } - -.tsd-kind-method.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -68px; } - -.tsd-kind-method.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -68px; } - -.tsd-kind-method.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -102px -68px; } - -.tsd-kind-method.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -68px; } - -.tsd-kind-method.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -68px; } - -.tsd-kind-method.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -68px; } - -.tsd-kind-method.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -68px; } - -.tsd-kind-method.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -68px; } - -.tsd-kind-method.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -221px -68px; } - -.tsd-kind-call-signature > .tsd-kind-icon:before { - background-position: -136px -68px; } - -.tsd-kind-call-signature.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -68px; } - -.tsd-kind-call-signature.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -68px; } - -.tsd-kind-call-signature.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -68px; } - -.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -68px; } - -.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -68px; } - -.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -102px -68px; } - -.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -68px; } - -.tsd-kind-call-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -68px; } - -.tsd-kind-call-signature.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -68px; } - -.tsd-kind-call-signature.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -68px; } - -.tsd-kind-call-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -68px; } - -.tsd-kind-call-signature.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -221px -68px; } - -.tsd-kind-function.tsd-has-type-parameter > .tsd-kind-icon:before { - background-position: -136px -85px; } - -.tsd-kind-function.tsd-has-type-parameter.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -85px; } - -.tsd-kind-function.tsd-has-type-parameter.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -85px; } - -.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -85px; } - -.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -85px; } - -.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -85px; } - -.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -102px -85px; } - -.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -85px; } - -.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -85px; } - -.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -85px; } - -.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -85px; } - -.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -85px; } - -.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -221px -85px; } - -.tsd-kind-method.tsd-has-type-parameter > .tsd-kind-icon:before { - background-position: -136px -85px; } - -.tsd-kind-method.tsd-has-type-parameter.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -85px; } - -.tsd-kind-method.tsd-has-type-parameter.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -85px; } - -.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -85px; } - -.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -85px; } - -.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -85px; } - -.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -102px -85px; } - -.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -85px; } - -.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -85px; } - -.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -85px; } - -.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -85px; } - -.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -85px; } - -.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -221px -85px; } - -.tsd-kind-constructor > .tsd-kind-icon:before { - background-position: -136px -102px; } - -.tsd-kind-constructor.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -102px; } - -.tsd-kind-constructor.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -102px; } - -.tsd-kind-constructor.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -102px; } - -.tsd-kind-constructor.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -102px; } - -.tsd-kind-constructor.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -102px; } - -.tsd-kind-constructor.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -102px -102px; } - -.tsd-kind-constructor.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -102px; } - -.tsd-kind-constructor.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -102px; } - -.tsd-kind-constructor.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -102px; } - -.tsd-kind-constructor.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -102px; } - -.tsd-kind-constructor.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -102px; } - -.tsd-kind-constructor.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -221px -102px; } - -.tsd-kind-constructor-signature > .tsd-kind-icon:before { - background-position: -136px -102px; } - -.tsd-kind-constructor-signature.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -102px; } - -.tsd-kind-constructor-signature.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -102px; } - -.tsd-kind-constructor-signature.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -102px; } - -.tsd-kind-constructor-signature.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -102px; } - -.tsd-kind-constructor-signature.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -102px; } - -.tsd-kind-constructor-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -102px -102px; } - -.tsd-kind-constructor-signature.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -102px; } - -.tsd-kind-constructor-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -102px; } - -.tsd-kind-constructor-signature.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -102px; } - -.tsd-kind-constructor-signature.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -102px; } - -.tsd-kind-constructor-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -102px; } - -.tsd-kind-constructor-signature.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -221px -102px; } - -.tsd-kind-index-signature > .tsd-kind-icon:before { - background-position: -136px -119px; } - -.tsd-kind-index-signature.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -119px; } - -.tsd-kind-index-signature.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -119px; } - -.tsd-kind-index-signature.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -119px; } - -.tsd-kind-index-signature.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -119px; } - -.tsd-kind-index-signature.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -119px; } - -.tsd-kind-index-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -102px -119px; } - -.tsd-kind-index-signature.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -119px; } - -.tsd-kind-index-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -119px; } - -.tsd-kind-index-signature.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -119px; } - -.tsd-kind-index-signature.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -119px; } - -.tsd-kind-index-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -119px; } - -.tsd-kind-index-signature.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -221px -119px; } - -.tsd-kind-event > .tsd-kind-icon:before { - background-position: -136px -136px; } - -.tsd-kind-event.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -136px; } - -.tsd-kind-event.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -136px; } - -.tsd-kind-event.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -136px; } - -.tsd-kind-event.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -136px; } - -.tsd-kind-event.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -136px; } - -.tsd-kind-event.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -102px -136px; } - -.tsd-kind-event.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -136px; } - -.tsd-kind-event.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -136px; } - -.tsd-kind-event.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -136px; } - -.tsd-kind-event.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -136px; } - -.tsd-kind-event.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -136px; } - -.tsd-kind-event.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -221px -136px; } - -.tsd-is-static > .tsd-kind-icon:before { - background-position: -136px -153px; } - -.tsd-is-static.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -153px; } - -.tsd-is-static.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -153px; } - -.tsd-is-static.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -153px; } - -.tsd-is-static.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -153px; } - -.tsd-is-static.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -153px; } - -.tsd-is-static.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -102px -153px; } - -.tsd-is-static.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -153px; } - -.tsd-is-static.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -153px; } - -.tsd-is-static.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -153px; } - -.tsd-is-static.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -153px; } - -.tsd-is-static.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -153px; } - -.tsd-is-static.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -221px -153px; } - -.tsd-is-static.tsd-kind-function > .tsd-kind-icon:before { - background-position: -136px -170px; } - -.tsd-is-static.tsd-kind-function.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -170px; } - -.tsd-is-static.tsd-kind-function.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -170px; } - -.tsd-is-static.tsd-kind-function.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -170px; } - -.tsd-is-static.tsd-kind-function.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -170px; } - -.tsd-is-static.tsd-kind-function.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -170px; } - -.tsd-is-static.tsd-kind-function.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -102px -170px; } - -.tsd-is-static.tsd-kind-function.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -170px; } - -.tsd-is-static.tsd-kind-function.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -170px; } - -.tsd-is-static.tsd-kind-function.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -170px; } - -.tsd-is-static.tsd-kind-function.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -170px; } - -.tsd-is-static.tsd-kind-function.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -170px; } - -.tsd-is-static.tsd-kind-function.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -221px -170px; } - -.tsd-is-static.tsd-kind-method > .tsd-kind-icon:before { - background-position: -136px -170px; } - -.tsd-is-static.tsd-kind-method.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -170px; } - -.tsd-is-static.tsd-kind-method.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -170px; } - -.tsd-is-static.tsd-kind-method.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -170px; } - -.tsd-is-static.tsd-kind-method.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -170px; } - -.tsd-is-static.tsd-kind-method.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -170px; } - -.tsd-is-static.tsd-kind-method.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -102px -170px; } - -.tsd-is-static.tsd-kind-method.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -170px; } - -.tsd-is-static.tsd-kind-method.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -170px; } - -.tsd-is-static.tsd-kind-method.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -170px; } - -.tsd-is-static.tsd-kind-method.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -170px; } - -.tsd-is-static.tsd-kind-method.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -170px; } - -.tsd-is-static.tsd-kind-method.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -221px -170px; } - -.tsd-is-static.tsd-kind-call-signature > .tsd-kind-icon:before { - background-position: -136px -170px; } - -.tsd-is-static.tsd-kind-call-signature.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -170px; } - -.tsd-is-static.tsd-kind-call-signature.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -170px; } - -.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -170px; } - -.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -170px; } - -.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -170px; } - -.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -102px -170px; } - -.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -170px; } - -.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -170px; } - -.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -170px; } - -.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -170px; } - -.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -170px; } - -.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -221px -170px; } - -.tsd-is-static.tsd-kind-event > .tsd-kind-icon:before { - background-position: -136px -187px; } - -.tsd-is-static.tsd-kind-event.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -187px; } - -.tsd-is-static.tsd-kind-event.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -187px; } - -.tsd-is-static.tsd-kind-event.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -187px; } - -.tsd-is-static.tsd-kind-event.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -187px; } - -.tsd-is-static.tsd-kind-event.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -187px; } - -.tsd-is-static.tsd-kind-event.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -102px -187px; } - -.tsd-is-static.tsd-kind-event.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -187px; } - -.tsd-is-static.tsd-kind-event.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -187px; } - -.tsd-is-static.tsd-kind-event.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -187px; } - -.tsd-is-static.tsd-kind-event.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -187px; } - -.tsd-is-static.tsd-kind-event.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -187px; } - -.tsd-is-static.tsd-kind-event.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -221px -187px; } - -.no-transition { - transition: none !important; } - -@keyframes fade-in { - from { - opacity: 0; } - to { - opacity: 1; } } - -@keyframes fade-out { - from { - opacity: 1; - visibility: visible; } - to { - opacity: 0; } } - -@keyframes fade-in-delayed { - 0% { - opacity: 0; } - 33% { - opacity: 0; } - 100% { - opacity: 1; } } - -@keyframes fade-out-delayed { - 0% { - opacity: 1; - visibility: visible; } - 66% { - opacity: 0; } - 100% { - opacity: 0; } } - -@keyframes shift-to-left { - from { - transform: translate(0, 0); } - to { - transform: translate(-25%, 0); } } - -@keyframes unshift-to-left { - from { - transform: translate(-25%, 0); } - to { - transform: translate(0, 0); } } - -@keyframes pop-in-from-right { - from { - transform: translate(100%, 0); } - to { - transform: translate(0, 0); } } - -@keyframes pop-out-to-right { - from { - transform: translate(0, 0); - visibility: visible; } - to { - transform: translate(100%, 0); } } - -body { - background: #fdfdfd; - font-family: "Segoe UI", sans-serif; - font-size: 16px; - color: #222; } - -a { - color: #4da6ff; - text-decoration: none; } - a:hover { - text-decoration: underline; } - -code, pre { - font-family: Menlo, Monaco, Consolas, "Courier New", monospace; - padding: 0.2em; - margin: 0; - font-size: 14px; - background-color: rgba(0, 0, 0, 0.04); } - -pre { - padding: 10px; } - pre code { - padding: 0; - font-size: 100%; - background-color: transparent; } - -.tsd-typography { - line-height: 1.333em; } - .tsd-typography ul { - list-style: square; - padding: 0 0 0 20px; - margin: 0; } - .tsd-typography h4, .tsd-typography .tsd-index-panel h3, .tsd-index-panel .tsd-typography h3, .tsd-typography h5, .tsd-typography h6 { - font-size: 1em; - margin: 0; } - .tsd-typography h5, .tsd-typography h6 { - font-weight: normal; } - .tsd-typography p, .tsd-typography ul, .tsd-typography ol { - margin: 1em 0; } - -@media (min-width: 901px) and (max-width: 1024px) { - html.default .col-content { - width: 72%; } - html.default .col-menu { - width: 28%; } - html.default .tsd-navigation { - padding-left: 10px; } } - -@media (max-width: 900px) { - html.default .col-content { - float: none; - width: 100%; } - html.default .col-menu { - position: fixed !important; - overflow: auto; - -webkit-overflow-scrolling: touch; - overflow-scrolling: touch; - z-index: 1024; - top: 0 !important; - bottom: 0 !important; - left: auto !important; - right: 0 !important; - width: 100%; - padding: 20px 20px 0 0; - max-width: 450px; - visibility: hidden; - background-color: #fff; - transform: translate(100%, 0); } - html.default .col-menu > *:last-child { - padding-bottom: 20px; } - html.default .overlay { - content: ''; - display: block; - position: fixed; - z-index: 1023; - top: 0; - left: 0; - right: 0; - bottom: 0; - background-color: rgba(0, 0, 0, 0.75); - visibility: hidden; } - html.default.to-has-menu .overlay { - animation: fade-in 0.4s; } - html.default.to-has-menu header, - html.default.to-has-menu footer, - html.default.to-has-menu .col-content { - animation: shift-to-left 0.4s; } - html.default.to-has-menu .col-menu { - animation: pop-in-from-right 0.4s; } - html.default.from-has-menu .overlay { - animation: fade-out 0.4s; } - html.default.from-has-menu header, - html.default.from-has-menu footer, - html.default.from-has-menu .col-content { - animation: unshift-to-left 0.4s; } - html.default.from-has-menu .col-menu { - animation: pop-out-to-right 0.4s; } - html.default.has-menu body { - overflow: hidden; } - html.default.has-menu .overlay { - visibility: visible; } - html.default.has-menu header, - html.default.has-menu footer, - html.default.has-menu .col-content { - transform: translate(-25%, 0); } - html.default.has-menu .col-menu { - visibility: visible; - transform: translate(0, 0); } } - -.tsd-page-title { - padding: 70px 0 20px 0; - margin: 0 0 40px 0; - background: #fff; - box-shadow: 0 0 5px rgba(0, 0, 0, 0.35); } - .tsd-page-title h1 { - margin: 0; } - -.tsd-breadcrumb { - margin: 0; - padding: 0; - color: #808080; } - .tsd-breadcrumb a { - color: #808080; - text-decoration: none; } - .tsd-breadcrumb a:hover { - text-decoration: underline; } - .tsd-breadcrumb li { - display: inline; } - .tsd-breadcrumb li:after { - content: ' / '; } - -html.minimal .container { - margin: 0; } - -html.minimal .container-main { - padding-top: 50px; - padding-bottom: 0; } - -html.minimal .content-wrap { - padding-left: 300px; } - -html.minimal .tsd-navigation { - position: fixed !important; - overflow: auto; - -webkit-overflow-scrolling: touch; - overflow-scrolling: touch; - box-sizing: border-box; - z-index: 1; - left: 0; - top: 40px; - bottom: 0; - width: 300px; - padding: 20px; - margin: 0; } - -html.minimal .tsd-member .tsd-member { - margin-left: 0; } - -html.minimal .tsd-page-toolbar { - position: fixed; - z-index: 2; } - -html.minimal #tsd-filter .tsd-filter-group { - right: 0; - transform: none; } - -html.minimal footer { - background-color: transparent; } - html.minimal footer .container { - padding: 0; } - -html.minimal .tsd-generator { - padding: 0; } - -@media (max-width: 900px) { - html.minimal .tsd-navigation { - display: none; } - html.minimal .content-wrap { - padding-left: 0; } } - -dl.tsd-comment-tags { - overflow: hidden; } - dl.tsd-comment-tags dt { - float: left; - padding: 1px 5px; - margin: 0 10px 0 0; - border-radius: 4px; - border: 1px solid #808080; - color: #808080; - font-size: 0.8em; - font-weight: normal; } - dl.tsd-comment-tags dd { - margin: 0 0 10px 0; } - dl.tsd-comment-tags dd:before, dl.tsd-comment-tags dd:after { - display: table; - content: " "; } - dl.tsd-comment-tags dd pre, dl.tsd-comment-tags dd:after { - clear: both; } - dl.tsd-comment-tags p { - margin: 0; } - -.tsd-panel.tsd-comment .lead { - font-size: 1.1em; - line-height: 1.333em; - margin-bottom: 2em; } - .tsd-panel.tsd-comment .lead:last-child { - margin-bottom: 0; } - -.toggle-protected .tsd-is-private { - display: none; } - -.toggle-public .tsd-is-private, -.toggle-public .tsd-is-protected, -.toggle-public .tsd-is-private-protected { - display: none; } - -.toggle-inherited .tsd-is-inherited { - display: none; } - -.toggle-only-exported .tsd-is-not-exported { - display: none; } - -.toggle-externals .tsd-is-external { - display: none; } - -#tsd-filter { - position: relative; - display: inline-block; - height: 40px; - vertical-align: bottom; } - .no-filter #tsd-filter { - display: none; } - #tsd-filter .tsd-filter-group { - display: inline-block; - height: 40px; - vertical-align: bottom; - white-space: nowrap; } - #tsd-filter input { - display: none; } - @media (max-width: 900px) { - #tsd-filter .tsd-filter-group { - display: block; - position: absolute; - top: 40px; - right: 20px; - height: auto; - background-color: #fff; - visibility: hidden; - transform: translate(50%, 0); - box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); } - .has-options #tsd-filter .tsd-filter-group { - visibility: visible; } - .to-has-options #tsd-filter .tsd-filter-group { - animation: fade-in 0.2s; } - .from-has-options #tsd-filter .tsd-filter-group { - animation: fade-out 0.2s; } - #tsd-filter label, - #tsd-filter .tsd-select { - display: block; - padding-right: 20px; } } - -footer { - border-top: 1px solid #eee; - background-color: #fff; } - footer.with-border-bottom { - border-bottom: 1px solid #eee; } - footer .tsd-legend-group { - font-size: 0; } - footer .tsd-legend { - display: inline-block; - width: 25%; - padding: 0; - font-size: 16px; - list-style: none; - line-height: 1.333em; - vertical-align: top; } - @media (max-width: 900px) { - footer .tsd-legend { - width: 50%; } } - -.tsd-hierarchy { - list-style: square; - padding: 0 0 0 20px; - margin: 0; } - .tsd-hierarchy .target { - font-weight: bold; } - -.tsd-index-panel .tsd-index-content { - margin-bottom: -30px !important; } - -.tsd-index-panel .tsd-index-section { - margin-bottom: 30px !important; } - -.tsd-index-panel h3 { - margin: 0 -20px 10px -20px; - padding: 0 20px 10px 20px; - border-bottom: 1px solid #eee; } - -.tsd-index-panel ul.tsd-index-list { - -moz-column-count: 3; - -ms-column-count: 3; - -o-column-count: 3; - column-count: 3; - -moz-column-gap: 20px; - -ms-column-gap: 20px; - -o-column-gap: 20px; - column-gap: 20px; - padding: 0; - list-style: none; - line-height: 1.333em; } - @media (max-width: 900px) { - .tsd-index-panel ul.tsd-index-list { - -moz-column-count: 1; - -ms-column-count: 1; - -o-column-count: 1; - column-count: 1; } } - @media (min-width: 901px) and (max-width: 1024px) { - .tsd-index-panel ul.tsd-index-list { - -moz-column-count: 2; - -ms-column-count: 2; - -o-column-count: 2; - column-count: 2; } } - .tsd-index-panel ul.tsd-index-list li { - -webkit-column-break-inside: avoid; - -moz-column-break-inside: avoid; - -ms-column-break-inside: avoid; - -o-column-break-inside: avoid; - column-break-inside: avoid; - -webkit-page-break-inside: avoid; - -moz-page-break-inside: avoid; - -ms-page-break-inside: avoid; - -o-page-break-inside: avoid; - page-break-inside: avoid; } - -.tsd-index-panel a, -.tsd-index-panel .tsd-parent-kind-module a { - color: #9600ff; } - -.tsd-index-panel .tsd-parent-kind-interface a { - color: #7da01f; } - -.tsd-index-panel .tsd-parent-kind-enum a { - color: #cc9900; } - -.tsd-index-panel .tsd-parent-kind-class a { - color: #4da6ff; } - -.tsd-index-panel .tsd-kind-module a { - color: #9600ff; } - -.tsd-index-panel .tsd-kind-interface a { - color: #7da01f; } - -.tsd-index-panel .tsd-kind-enum a { - color: #cc9900; } - -.tsd-index-panel .tsd-kind-class a { - color: #4da6ff; } - -.tsd-index-panel .tsd-is-private a { - color: #808080; } - -.tsd-flag { - display: inline-block; - padding: 1px 5px; - border-radius: 4px; - color: #fff; - background-color: #808080; - text-indent: 0; - font-size: 14px; - font-weight: normal; } - -.tsd-anchor { - position: absolute; - top: -100px; } - -.tsd-member { - position: relative; } - .tsd-member .tsd-anchor + h3 { - margin-top: 0; - margin-bottom: 0; - border-bottom: none; } - -.tsd-navigation { - padding: 0 0 0 40px; } - .tsd-navigation a { - display: block; - padding-top: 2px; - padding-bottom: 2px; - border-left: 2px solid transparent; - color: #222; - text-decoration: none; - transition: border-left-color 0.1s; } - .tsd-navigation a:hover { - text-decoration: underline; } - .tsd-navigation ul { - margin: 0; - padding: 0; - list-style: none; } - .tsd-navigation li { - padding: 0; } - -.tsd-navigation.primary { - padding-bottom: 40px; } - .tsd-navigation.primary a { - display: block; - padding-top: 6px; - padding-bottom: 6px; } - .tsd-navigation.primary ul li a { - padding-left: 5px; } - .tsd-navigation.primary ul li li a { - padding-left: 25px; } - .tsd-navigation.primary ul li li li a { - padding-left: 45px; } - .tsd-navigation.primary ul li li li li a { - padding-left: 65px; } - .tsd-navigation.primary ul li li li li li a { - padding-left: 85px; } - .tsd-navigation.primary ul li li li li li li a { - padding-left: 105px; } - .tsd-navigation.primary > ul { - border-bottom: 1px solid #eee; } - .tsd-navigation.primary li { - border-top: 1px solid #eee; } - .tsd-navigation.primary li.current > a { - font-weight: bold; } - .tsd-navigation.primary li.label span { - display: block; - padding: 20px 0 6px 5px; - color: #808080; } - .tsd-navigation.primary li.globals + li > span, - .tsd-navigation.primary li.globals + li > a { - padding-top: 20px; } - -.tsd-navigation.secondary ul { - transition: opacity 0.2s; } - .tsd-navigation.secondary ul li a { - padding-left: 25px; } - .tsd-navigation.secondary ul li li a { - padding-left: 45px; } - .tsd-navigation.secondary ul li li li a { - padding-left: 65px; } - .tsd-navigation.secondary ul li li li li a { - padding-left: 85px; } - .tsd-navigation.secondary ul li li li li li a { - padding-left: 105px; } - .tsd-navigation.secondary ul li li li li li li a { - padding-left: 125px; } - .tsd-navigation.secondary ul.current a { - border-left-color: #eee; } - -.tsd-navigation.secondary li.focus > a, -.tsd-navigation.secondary ul.current li.focus > a { - border-left-color: #000; } - -.tsd-navigation.secondary li.current { - margin-top: 20px; - margin-bottom: 20px; - border-left-color: #eee; } - .tsd-navigation.secondary li.current > a { - font-weight: bold; } - -@media (min-width: 901px) { - .menu-sticky-wrap { - position: static; } - .no-csspositionsticky .menu-sticky-wrap.sticky { - position: fixed; } - .no-csspositionsticky .menu-sticky-wrap.sticky-current { - position: fixed; } - .no-csspositionsticky .menu-sticky-wrap.sticky-current ul.before-current, - .no-csspositionsticky .menu-sticky-wrap.sticky-current ul.after-current { - opacity: 0; } - .no-csspositionsticky .menu-sticky-wrap.sticky-bottom { - position: absolute; - top: auto !important; - left: auto !important; - bottom: 0; - right: 0; } - .csspositionsticky .menu-sticky-wrap.sticky { - position: -webkit-sticky; - position: sticky; } - .csspositionsticky .menu-sticky-wrap.sticky-current { - position: -webkit-sticky; - position: sticky; } } - -.tsd-panel { - margin: 20px 0; - padding: 20px; - background-color: #fff; - box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); } - .tsd-panel:empty { - display: none; } - .tsd-panel > h1, .tsd-panel > h2, .tsd-panel > h3 { - margin: 1.5em -20px 10px -20px; - padding: 0 20px 10px 20px; - border-bottom: 1px solid #eee; } - .tsd-panel > h1.tsd-before-signature, .tsd-panel > h2.tsd-before-signature, .tsd-panel > h3.tsd-before-signature { - margin-bottom: 0; - border-bottom: 0; } - .tsd-panel table { - display: block; - width: 100%; - overflow: auto; - margin-top: 10px; - word-break: normal; - word-break: keep-all; } - .tsd-panel table th { - font-weight: bold; } - .tsd-panel table th, .tsd-panel table td { - padding: 6px 13px; - border: 1px solid #ddd; } - .tsd-panel table tr { - background-color: #fff; - border-top: 1px solid #ccc; } - .tsd-panel table tr:nth-child(2n) { - background-color: #f8f8f8; } - -.tsd-panel-group { - margin: 60px 0; } - .tsd-panel-group > h1, .tsd-panel-group > h2, .tsd-panel-group > h3 { - padding-left: 20px; - padding-right: 20px; } - -#tsd-search { - transition: background-color 0.2s; } - #tsd-search .title { - position: relative; - z-index: 2; } - #tsd-search .field { - position: absolute; - left: 0; - top: 0; - right: 40px; - height: 40px; } - #tsd-search .field input { - box-sizing: border-box; - position: relative; - top: -50px; - z-index: 1; - width: 100%; - padding: 0 10px; - opacity: 0; - outline: 0; - border: 0; - background: transparent; - color: #222; } - #tsd-search .field label { - position: absolute; - overflow: hidden; - right: -40px; } - #tsd-search .field input, - #tsd-search .title { - transition: opacity 0.2s; } - #tsd-search .results { - position: absolute; - visibility: hidden; - top: 40px; - width: 100%; - margin: 0; - padding: 0; - list-style: none; - box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); } - #tsd-search .results li { - padding: 0 10px; - background-color: #fdfdfd; } - #tsd-search .results li:nth-child(even) { - background-color: #fff; } - #tsd-search .results li.state { - display: none; } - #tsd-search .results li.current, - #tsd-search .results li:hover { - background-color: #eee; } - #tsd-search .results a { - display: block; } - #tsd-search .results a:before { - top: 10px; } - #tsd-search .results span.parent { - color: #808080; - font-weight: normal; } - #tsd-search.has-focus { - background-color: #eee; } - #tsd-search.has-focus .field input { - top: 0; - opacity: 1; } - #tsd-search.has-focus .title { - z-index: 0; - opacity: 0; } - #tsd-search.has-focus .results { - visibility: visible; } - #tsd-search.loading .results li.state.loading { - display: block; } - #tsd-search.failure .results li.state.failure { - display: block; } - -.tsd-signature { - margin: 0 0 1em 0; - padding: 10px; - border: 1px solid #eee; - font-family: Menlo, Monaco, Consolas, "Courier New", monospace; - font-size: 14px; } - .tsd-signature.tsd-kind-icon { - padding-left: 30px; } - .tsd-signature.tsd-kind-icon:before { - top: 10px; - left: 10px; } - .tsd-panel > .tsd-signature { - margin-left: -20px; - margin-right: -20px; - border-width: 1px 0; } - .tsd-panel > .tsd-signature.tsd-kind-icon { - padding-left: 40px; } - .tsd-panel > .tsd-signature.tsd-kind-icon:before { - left: 20px; } - -.tsd-signature-symbol { - color: #808080; - font-weight: normal; } - -.tsd-signature-type { - font-style: italic; - font-weight: normal; } - -.tsd-signatures { - padding: 0; - margin: 0 0 1em 0; - border: 1px solid #eee; } - .tsd-signatures .tsd-signature { - margin: 0; - border-width: 1px 0 0 0; - transition: background-color 0.1s; } - .tsd-signatures .tsd-signature:first-child { - border-top-width: 0; } - .tsd-signatures .tsd-signature.current { - background-color: #eee; } - .tsd-signatures.active > .tsd-signature { - cursor: pointer; } - .tsd-panel > .tsd-signatures { - margin-left: -20px; - margin-right: -20px; - border-width: 1px 0; } - .tsd-panel > .tsd-signatures .tsd-signature.tsd-kind-icon { - padding-left: 40px; } - .tsd-panel > .tsd-signatures .tsd-signature.tsd-kind-icon:before { - left: 20px; } - .tsd-panel > a.anchor + .tsd-signatures { - border-top-width: 0; - margin-top: -20px; } - -ul.tsd-descriptions { - position: relative; - overflow: hidden; - transition: height 0.3s; - padding: 0; - list-style: none; } - ul.tsd-descriptions.active > .tsd-description { - display: none; } - ul.tsd-descriptions.active > .tsd-description.current { - display: block; } - ul.tsd-descriptions.active > .tsd-description.fade-in { - animation: fade-in-delayed 0.3s; } - ul.tsd-descriptions.active > .tsd-description.fade-out { - animation: fade-out-delayed 0.3s; - position: absolute; - display: block; - top: 0; - left: 0; - right: 0; - opacity: 0; - visibility: hidden; } - ul.tsd-descriptions h4, ul.tsd-descriptions .tsd-index-panel h3, .tsd-index-panel ul.tsd-descriptions h3 { - font-size: 16px; - margin: 1em 0 0.5em 0; } - -ul.tsd-parameters, -ul.tsd-type-parameters { - list-style: square; - margin: 0; - padding-left: 20px; } - ul.tsd-parameters > li.tsd-parameter-siganture, - ul.tsd-type-parameters > li.tsd-parameter-siganture { - list-style: none; - margin-left: -20px; } - ul.tsd-parameters h5, - ul.tsd-type-parameters h5 { - font-size: 16px; - margin: 1em 0 0.5em 0; } - ul.tsd-parameters .tsd-comment, - ul.tsd-type-parameters .tsd-comment { - margin-top: -0.5em; } - -.tsd-sources { - font-size: 14px; - color: #808080; - margin: 0 0 1em 0; } - .tsd-sources a { - color: #808080; - text-decoration: underline; } - .tsd-sources ul, .tsd-sources p { - margin: 0 !important; } - .tsd-sources ul { - list-style: none; - padding: 0; } - -.tsd-page-toolbar { - position: absolute; - z-index: 1; - top: 0; - left: 0; - width: 100%; - height: 40px; - color: #333; - background: #fff; - border-bottom: 1px solid #eee; } - .tsd-page-toolbar a { - color: #333; - text-decoration: none; } - .tsd-page-toolbar a.title { - font-weight: bold; } - .tsd-page-toolbar a.title:hover { - text-decoration: underline; } - .tsd-page-toolbar .table-wrap { - display: table; - width: 100%; - height: 40px; } - .tsd-page-toolbar .table-cell { - display: table-cell; - position: relative; - white-space: nowrap; - line-height: 40px; } - .tsd-page-toolbar .table-cell:first-child { - width: 100%; } - -.tsd-widget:before, .tsd-select .tsd-select-label:before, .tsd-select .tsd-select-list li:before { - content: ''; - display: inline-block; - width: 40px; - height: 40px; - margin: 0 -8px 0 0; - background-image: url(../images/widgets.png); - background-repeat: no-repeat; - text-indent: -1024px; - vertical-align: bottom; } - @media (-webkit-min-device-pixel-ratio: 1.5), (min-device-pixel-ratio: 1.5), (min-resolution: 144dpi) { - .tsd-widget:before, .tsd-select .tsd-select-label:before, .tsd-select .tsd-select-list li:before { - background-image: url(../images/widgets@2x.png); - background-size: 320px 40px; } } - -.tsd-widget { - display: inline-block; - overflow: hidden; - opacity: 0.6; - height: 40px; - transition: opacity 0.1s, background-color 0.2s; - vertical-align: bottom; - cursor: pointer; } - .tsd-widget:hover { - opacity: 0.8; } - .tsd-widget.active { - opacity: 1; - background-color: #eee; } - .tsd-widget.no-caption { - width: 40px; } - .tsd-widget.no-caption:before { - margin: 0; } - .tsd-widget.search:before { - background-position: 0 0; } - .tsd-widget.menu:before { - background-position: -40px 0; } - .tsd-widget.options:before { - background-position: -80px 0; } - .tsd-widget.options, .tsd-widget.menu { - display: none; } - @media (max-width: 900px) { - .tsd-widget.options, .tsd-widget.menu { - display: inline-block; } } - input[type=checkbox] + .tsd-widget:before { - background-position: -120px 0; } - input[type=checkbox]:checked + .tsd-widget:before { - background-position: -160px 0; } - -.tsd-select { - position: relative; - display: inline-block; - height: 40px; - transition: opacity 0.1s, background-color 0.2s; - vertical-align: bottom; - cursor: pointer; } - .tsd-select .tsd-select-label { - opacity: 0.6; - transition: opacity 0.2s; } - .tsd-select .tsd-select-label:before { - background-position: -240px 0; } - .tsd-select.active .tsd-select-label { - opacity: 0.8; } - .tsd-select.active .tsd-select-list { - visibility: visible; - opacity: 1; - transition-delay: 0s; } - .tsd-select .tsd-select-list { - position: absolute; - visibility: hidden; - top: 40px; - left: 0; - margin: 0; - padding: 0; - opacity: 0; - list-style: none; - box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); - transition: visibility 0s 0.2s, opacity 0.2s; } - .tsd-select .tsd-select-list li { - padding: 0 20px 0 0; - background-color: #fdfdfd; } - .tsd-select .tsd-select-list li:before { - background-position: 40px 0; } - .tsd-select .tsd-select-list li:nth-child(even) { - background-color: #fff; } - .tsd-select .tsd-select-list li:hover { - background-color: #eee; } - .tsd-select .tsd-select-list li.selected:before { - background-position: -200px 0; } - @media (max-width: 900px) { - .tsd-select .tsd-select-list { - top: 0; - left: auto; - right: 100%; - margin-right: -5px; } - .tsd-select .tsd-select-label:before { - background-position: -280px 0; } } - -img { - max-width: 100%; } diff --git a/docs/assets/images/icons.png b/docs/assets/images/icons.png deleted file mode 100644 index 3836d5fe46e48bbe186116855aae879c23935327..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9615 zcmZ{Kc_36>+`rwViHMAd#!?~-${LfgP1$7)F~(N1WKRsT#$-?;yNq3ylq}iztr1xY z8DtsBI<`UHtDfii{r-60Kg@OSJ?GqW=bZ2NvwY{NzOLpergKbGR8*&KBGn9m;|lQC z2Vwv|y`nSufCHVQijE2uRauuTeKZL;=kiiF^SbTk;N^?*u%}Y7bF;O-aMK0lXm4nb zvU~Kf+x|Kgl@Ro%nu?L%x8-yetd((kCqY|t;-%}@Y3Ez_m(HTRt=ekeUQ2n4-aRvJ zrlKaWct8JSc8Kxl4KHu+3VW1L`9%n~_KC5}g6&tFXqyKT-}R0?EdkYqCmQot47^9Z z6;opqR@7Nq-s|6=e6*0^`}+X1kg>CpuGnbpL7{xFTa|8nymC0{xgx*tI7n4mTKZNA znsd@3eVsV>YhATuv~+5(^Vu4j?)Tn`{x@8ijIA;wdf`+0P3$vnSrcWFXXc{Lx`1Z7 z%-n(BM(owD$7LzqJx)(f^Cusecq>OW z=h6n4YzSVM-V!-DK(sLT`!W~}($=O$9|ie`>_fpH0=1G1tiIFw($?~{5T>`74|p0H z``5=UydE)!CiFvmECW|s^TzG9*7pN|KknkVm3C{fEu30gffX&8iCm? zTFPm6*k%Hog`Q6JGj@dg9Z5nlAc6ApUe>;6xauB0-u!?wMU92jVL|3EcP9gEu5^wH z%tXRy#>HCEs*?KgMf73UcJ!lJ?x<6+)eJ{mEIS|HMDP7(7!(< z@X;?ACT8mncW9*XIaiJPW}Mw@b0W||)!sYnLw)0j4&-rXQgJhnQ2?frg1Nfk&JpmV8F=dDZl)e%#Grs|&0th7_o) z?7hQn<1078qcq?#;)CH=2kBBiGt37EtcXfpTXtHB59dr9=B~jI`yPm-Q?(ys=ajAu zGY;eS^z&WFvztZI3I~}*l}_lI^}6D<&CZ94;|&G9_pMx!C~$~EL4^8`QjT#|tqxxk zhl4CdxppbDiOk!Ht#SVAK4gf6Cr#=U&1sVxZ`y-X zTSi#@wHf(?(Dd6ypNOyshRZ*tneVP^W?y?$ur_!9iD-vY{&Q5(ooX2;`SkUjwEYA~ zwGcylCT4_`MZobm(0v$U(IhfYXxyjNJ@ztpH0sDmfpn|LMp3eM(R4uqKi_q1=D1-d z%GdV<&2+_9k@sc44xhIjqktRA2!Su|vzM0R-@#MK&{RdLoU#$Hc?{{JItvX{hKCtc zQNqZpkfG^@LGJRZM4H_>`F=N;O*+_`>M_ko_XWCgu@}ntqLX8VSeZQ_25Z8|^!d?o z$~}~9|`ZW9d_o<=8&K^~;Cr08b;qgq{(*e*sNt00lO2lZ;m-b<`Rl}=Lr6iQ8+$&br z!RLn{5a}j1Dh^|_1)Q?<;iBSrS0V|c_D@3}mc2d!%tV1VN?BC@clkFdx?HB&9KOTF z)9eHpmUEYsCqx^%JHuNdwY zz9P3oPYuTAXZVY}LRp&2qNl$pbsXL1GJ@wx?@CTO!acs+OFfW_U6?&As-(GJED}RR zO}B+Kxph7aUUm>i3rbPZQGXN}oQq;u`yTnFDAJ*d$4gjEJH!JPyt6V{cOUp*Jbyol zE$8wh)T=vpJOWRbv}HvR(cUSlO}ePIPdJ`J@yp=IC&E6K%r?QfW7F&%p!H~@?%yj5 z&MpiV!hyfukD56A097f!0+ANt`JSB~oLak75oKQN7FH=rQbX#Eak37|4&mqp@S~TA zOo51)xQxX}5NQ(3I_UeR4B;P0Q#x$_lDce78ET`Blo;`Hj*R;b8slZS7Oak(LjDuE z3z?-~-U@vWe*cEOsf^9|duH9};Pe)!=Ky+QQ!jr2VV-jMUH-F>oB>Ds zDJw}jm%V?OT^fu1y`$`yRdaW03L?)6vmInxhAsGrPhWIP8?=speMFf9Inn4^t zs$!88*B~c1A2J6t0~hgK2BJ_Pl23l=oeQQqjI2(4Mcv6U_#9#$PEN|qz36rCZ5$@I zNF1LpRe%ZG4qwuYr7ZdaynrPs?spt;9VbQM$462zbksMVhAOqPunrR7@Nbv#5;VKk zJB7xC?~QXd(e9REiLixHxRGhLcKR#0va}|LMS`AXKGOIGFKQv?=+>zf^ zN5XLjX6^`zh*%1UG_QV1H`@z!HZgC+OT2`+_B( z)J95hk;3C+K4XCswSP}au;fx=47~*$k`RAaYEU-qb03y0#x|&>LAeiXgri5E(!h9k z|9OVt@sk1-4+>0?ELyw|zs`~<95M=%o?Gix$?8z4Gz3Kpw|b>?BcD&s{X)-aXg!GJ zyq&`ZEP{K^u7ActXP$gGnO#F0Sr+QUZe0&d5*Yhw9A?C4(Sx2j3QKAlUpkQz7nji^ z%y8F|W{ypj(T%Bf#Wgyvq4szMo?*U-;3IGBRg1fK9!h-=YRsZ_+t~2!-)=pr;)Vnk zmt95&wMb02toOf`I9>M^Kv3LqKb_-#jauF&cGrWsCnMt?p7*uh zevugda={D04DB#7wR375=1i5}Z9fi3r)!F#7qmX9`SjppE&%8l8bKt+ADRMTWRv21 z4L&PldV8YpHw3b^`p0uWlIm#J&K65-y4lQW0VzZR!4#gfeT{b#fL1e*)Z*Ux}M^}bO%OM7uXip_4! zL@yo@q{utZeVV?3CtXs}i>nI|%26fwuzt0f#96fQ!{=dEX^YKnvIk*D%y9Cin;9R) zi{?)baJhgFs$1$SOZESTpldw2H&FD=v*v@1cA!`|s;avDKHa>Q+uJ8qhy!9%C4&lJSTN4OeydYOm4S?Bj7*e{xRYbU9Xos)R7qZT3dBBD5{ zo+(E3pR{>>)}hFhE+}!yYP0V+CVhyAq+RV{^X`XA3{iXj(ir$k@u|t8ZJ1ZnHq2dd zD$0RHmGJ=!?T5`*T2zOEJ~y}Nsyt7O)%+!0ulRQdsopJJxoznfpusv=2@zLXIq@^& z>0T5k4lzGCG(DnltLIe@6=ZOG@C(dvmYXfh4IhJfMfY8S?KkT znb7~EDE}Yhg$J1LxB7m`L4VMS(+(SXTQvh_mz!x&M3-6Z zFRB*a%_gVEqI^mL5|c%V=l_oi%|~h>gL0SB4QH5uonWd#={KPg6}6ES)zk0~#3^KJ zJq@{iqbHe3gyC))jeQ`W;(u3|q)JxuF24|GMsh%v5>>VY-bok%* z1Yl@(5G2UCK=fQck}pAyWV0n{`ML|rsl_N7vmW|frii__zB;ozrQ7{z)y}M^Sg@m_ z;+?{q3sUZs3WxnBbp~CyyL(TA?C*0KIeDPp7w0$!Ijd+M8#}r~vYW)NB*$mG*7-vH z@s^wK07OMxq>WveCEQFQ*p&2gjD1j%i+#G9z##Th`gew>H5=`RwyfPDg2G%f>x3@c z14Oy}pQK?(i06GWLWu%4cGjDoE-tTEI$`9^E?nLT663vu_>6K1e!N>A-^q&tfl$0& zy&>w~+yUelAa!c@xd8iyt^`B^$cj+}h}0i!40K2Ve1KFCDezBzZO8@=k&r)`TNTJ* zzF4Pim>SYL^=~7kW>EyiVHXNMT2)8l#v^IW!pLB_8ZvVfK&m8QHkjsZ)mvd?o$VYG zX#HiWwWlW>N{D85URJ-d)}_3h73|)X=E(6hFzi#TF{$4aSka4TeY>1a_(RIkFBL#O zE0_FoSQI)}+si51ufAqRHhDU=actTRQl@y#2h}xaDv-A&GP&0Qu9V4ED5aWnX z1E#mRT1QSvL!4~%Ozt84nP{&F>VIm6w2q!EPhh^BF-94$4JhCTcrdbDXA3Q&8mPTh zqdPv|X}??B?bIZPpl}z%(zr<8U-NoXjb*L#xyqHHfpIGAgN$5i(E9#rYPYq_tISC4 z2TDkd*uZ;CIhVI2o!||T)Kz`ER@%rTf-&SfmJFF>;d(RW(B6k!1<)uxHM_1G+9BWe zc)k`gBxYMcztqY5@jccaU)CqQ@^G5TBVx(nNf2}D@);3+{D)GzyT{>%dO6ibggS({N!!=P4=M8J}5R*&fgd(w36z0M0D$ z(SN5a`i%sZ9vmaEjiC4)DF}ix&`?mc-vYwK@+}8Gqzj6r6y)lT|Iqwlpj(LXqvh;- zb>jECiiOZ%&Q7gQg7(ix-?-RE*c(O6NG0F-+VCr;701@%L~fyfHnU<;Vk`m3A2{1MSmpii@G*k?KDq0GdZ)|hd`8OHep z8@6wv_|9NKNpe*sc#?zZ1S#}*qk{k<(I99u6(QT#>wf9w^u9~9_>;2d20T=^g-;b5 ze9x~fHZ-JL=J`hq-;W{2SgN)&m9RsVo=%?`JYp`pxEA_>`18Y>XA$rfWm^pQfG3MQ zxT^I1*({tZz2}+!5$AyNUE*jiYwu_S8v<#qZS4e!bGGBdY`3RkgLMf%Kz8s-;7PF+ z6w#-FwV#)PiKGR79miXmrDyv=ZTjc)j>N=&h4F+#G;unBZhhZz?a*;8@bi5`fV4)O zuU5pCs;tvRzbV@P5%W5xLI4I+w*^KExeVlzP4kNRGp-wi3g$lf-I|(o`JQ|u^XfkP zcik+g-5~2lG*oHfjLCpfNalFwz=4ZY>$Rc-QGpws&tCfFZUuJDL)3et%ap*$Q=-v0 zgLfsn-&%#+wnox~@)6ppx30sK(UJg1dCAvQF&}DkoPI+uX_wH))iaYvWtl}BtVKpU&MN= z0GdENbhdLgIwL-#_phGK;mZRlk4zq8*)akvV5zRX@jFUmvcr#3p99P@4z@m|bz-)^ zbZl8Wt?hR*z(sEZl;2PaILIG#835i@YoZQ@EwrD9IOBl7BpJX(ilLgcd)KCZAzo^b z6Z{|~=H;$D2dD53tejr_jx7^y-zT{SNZpNjn4+wJQX~K#LcrlKOv=D5xk%QXD{tg; z+xh`PvMV*HC*rF?xyjK5@KsMl5*w`r@wL#r13uFpso~#^oYIFc^&gGNS825eqFttU2_sG%_ z;X8VXD#Ol4X&$2B_Z$*&-)ZIUXf9I%mOOXJ3O%GbGpJfl+9(jY^fF_(b!Gt{{HAA3 zusUOCPDHYT@&*H~7a050c7r-_CaFACp$BXx)5==@fC11Gn|n~~+u@6N-}lvdyl3&6 z<#c_zm0Xp1F!8o2OBbFfgzzC4vno}9XEf40dGaVo;jiwiazo8hZ~iPVD(re=5k;H| zotm286$6nnTeIw>1FY$Ri|t{Lp?o(Fg3g_>|y~Z+16tvyLc@r?t9g7 zBuXyVuu9bC#q`?@OFIhgS)6v^XP@H0ukl2X!RPMsg%`YHMGad z4{VsgxaprFss3X%HbZablb6IdaNdbISVWp7yQXPPn=s7?J9qLEH{4>XAv8}%h&TDg zs()1sh}4at3nL3^%q!?P9BbW80e*ZwU63}CV7pt}gVu;~V6c$9p+*wfhw!zeE-z|V z=k{Ksec2)$Hu&?pRh;*TPk0T$Fc~^oAoBT4q?-Q}Y&3DluXeoMQ0LesTk}pVlf5(I z$dl8;zA0&=L&z*F*H>W7IeiPhTo@P0VTB~vyC2Bm7lCN}t7@NNlKFSHGKkh?z_qij zoYju!#D4b28cdslLdIM5Cmqe&!v^IcRr=qq^?l+P^n@6}fh@)IS81hx)SPAY7osk0)^ulqC1F*{hBNQl+Y}b>XjVXnS_Cc!L zIZ@Jq#mp^E&fKT~t4DM_^S17R@YJ@`(7;zv1mz_Y=~q*Gdg#*yXGxotY=#F|lvhPM zjlE)VHS=8=)njE^c7M|ZiBqARx>9Ib!y91$70iC8jPi$c+ysP}5Q3s`ti&1sx>~oG zI^>^1onS%G`mtq&)cZ15dZ{X^#MOfatyH0I=l%Q)n z7*@kZtC_3?=J_}?_G@?F?UK<0_AhYFclyrS-PkfYhAeVHcF z16x+quy10*2V$A%p_|@C(vlf}j3uY83h(#TSr$(;^8(I={_=YQQWmA9-IlwJv>tQm z=vN-I{TO7X`;qBxwb5w$91YLV?ZD5}pddq(7IdMCH zi>`qAn|#FITi!L5;K!(tYm9r416}Wof}P8~?R9I9Gp(?VA;uQg19MO47*gS7fH*&jBO!+ zA*<^BMccHjJIvGHguBb4a`X z3aZw#!c&Xr8&szD1+gu&;vYfoWo>0Pxfr2%m34tC33fmRbzWF9I_Pqb9nNK@N##9_ z7K)v)des!^owH`MoXY_O?|;^9;comiPx0e78xhnnVvTYt+t+cU1rn_>gaFJsL-iPn)?<9P9cF#4)7q&v+d&6|3G@s-AcJy+m zE&u*GUaMK|x|4GmT(CgBICk`2BP@3rqtjKIRD#uBy}y*d;<>`?W&mGsG;i*_}V&^tlP`%;=g39@jxP z+3lrtg*!i6N;irOpUfKcd;iDl5a`<#kr8RwFm9=^m+ouwwjcXmTB}w5V#9IF^&Bl$ zr1$Ly#cQ<3u86>am9}pk&i%nxu(W&s@>qEDtn_xVtH-_EiQ}iAK4Ssfsdn&L9t=)d z`XOQN7*J)g$Jrtq0=-yeLnHg*23LxYA7$cxz^Yc)I6E-!;{LQwu_wfGw4&MYy7{n< z@{g0Hf)N5gAJKQ1Z&HGPn9x9B7U(m(9K&=+LHAc_D{YdMBZs~x)u1Y8|Oq!`C4(3_9<&$ddi6>R$Nsz z*ti?=jA-Sr_97V}feo+}Lq3-cfpgWR;PLI8s{ve9@?e;2o}0MpquOucipz^DrT}QH z*(<{nLb4h9799hx4&%I8KPj}xcQ}llgcaG1!nRb(PP?m)=CzA4v%6>oOe96H9 zv4mUhw`>V$29k?)$Co>qIqq(~3w4jJ;Hv5(RxjB-j_iEhlF;&|DDC|I8IcT>Vn;RY zhtw5mT0ygXAu=M%{^;GqYuYIMu4H;Mj--5CL}|zMEhOum_o51Y7i|D>$XmUFoe;@1 z%GsTUsKgF4w%-Cr3lg#~h)8;Lk%WQTLBS8r*sE{YBUDw4HU#o}E)8pVIEfWv&14?U z-+Za${OFm=>IA358en)nB5Iaqxw&Xi*ty@uDOX8o2c0tq0^sX>ZXD+Hn|;KY!Omm1 z^%wgf&Zy9Azd?vmU`~zuOOA0{TZ*mAC!_>|avcN83F#c+sFn_6tGo!v?95IUR2bL$ zlO(OlhszqAgy)mNt8PRulC#6u^SL#z-O&@{=_!AzBZ>T4ROorj%fx$A;u8u>saum0ha7p zeHRX-z)PW*@v9bruyAtVI@)PhaEs5kp`xyxTQ`U9$Whwz#z$=U$V|&0w@EfCUS!Ob zACSTE{VeC-0V~ZCpkKq~P4CLgdOeBy>vB+0ZxIt_Cp4aa%vI#LS^K}ui07WNo}5r0 zagMHmq-jqTf-OD<kAvu_ob1mUP%1jxeKqB!1&-)_hP{p74hHE%WM!atyx68j5b zSqwh8aKo|NIOL<2_eiX+iOsRP`{MUt{0iQetB*SL!F_8)_;0f$iJ4(o__4KWuvy_! z8TZ{dTb*rL6VmuN-yl2Z>0glL84u^jAH^DQl}VRI=x0CnuF*|;|My-5aPI;>(mo+m z`nyEOe&k$RG11$vEdDPG7^raBCw|#C*4#pIUoZJNx?4|ZC{)l>+jaSiiJ`GBKf}l) zUk1>%A61hqy!KvfRsM^|u6vwbH5WpfH(I5AdpBAg%rar%zW}nccGxfgRV4&v`tEoGyBq!uz^f zVqWEtxn%j&+Q2Fi$rL)H`M_HExP+?mFyN^){c{JXs{IM}f}p>7lfD zLZ;s)%6a(Ow@`(jP}k~pn@!dv6JhJkZf5UoumHv`g-tcCs)w* z#0sc%t9@Li{p}f*$vg$UiQ*RGZUr=ykDIaxRDU_(QfcURuYrpX*7IQcS$(Buw%VW7 zxaffDgn{-=K@iEh)LlPc3MPzc+qM^>RXr6Y8ASnP&dr6fqmwYILTpmh$E%{Iz%Qz( NZmR35l_G4O{0}dcmS_L~ diff --git a/docs/assets/images/icons@2x.png b/docs/assets/images/icons@2x.png deleted file mode 100644 index 5a209e2f6d7f915cc9cb6fe7a4264c8be4db87b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28144 zcmeFZcUTka`>%_-5TzIqq$xo`r3nZ`iiBRG(z{ZnN$)K|ii-3S5u{fmRRNLEoAh2n z@4X|01dtAA(50@mzH5K?{+)CF+}EWTz2eMdW-{;n-p}WG1C$hCWW;pD1Ox#ad~k9g4`y4!oVfq@3c(iW~uhy*`T7_0aH7`>`EnYuXVq#+YC==3#rnNM4TqqzM zpi2Elr!3hl!ZdK#y0bV+yVc8rwFEtAX3=QlvJ&e-EsBp)Q`0yKXbNuf-yYw7kh0CD z|Flk1UuHgvoR+*QR0ee&IDUfUzE7*`A=P$6nC;BPI@VJs|F#`Xc>X!`<6%M7XXNok zw^unt1h0m>-&2{GiIGsByulr92XZRrazZs&&M3jJintF7A}cE^uW4zt_r81yHt1I! z6-_gmO@78G3$})kfyhR0^qk?zev_%4R$qSjQI3MAg0)9EM#TOAD=_tf(*)S$7yiiR z&5v>wk3Bn**iD9S_I#2%^vi(^O+gpv2i^A);6^AcH%VC>0nH8|O!jN*L<#RtT z@aF9HMNu*d(BdiZq(LBO%(qsjSot+ZXQd{zLYh#CvOrK(?#u+|XYRylqcXOLk=m!) zBp`~~1dg7kF(Q#m)I8ZHMOD5%m&U)5jGOW@7+sm1N+O~^j*zRG;e4x@OteV=T4yo9 zSG`^0j^S)ZYp2DT>}AR|n$S)4FPI#8#(R~;Y**AZ9`&yqT;p`rks7Nhz;)dn-TgXU zw!^Bo@W6|jfp@}ijsSEFo#x3LnG;`o_yXK@2KuG8cTv&K@=dU?_PK*6=YU9!Ix8l;<_!y*Qc2phVpLM}&t|CuHBv&{M$K?VXtTabi(7kUMwV zl!>5cDNNqK6`Br*B~EcVh#5Z!FgiJZBN5nzpC7?UdAc+&AT0ivd;DA2$@YXMPK6=< z+#U~?*!R0i`3uu|#zDrRRN&j-j>ZOu#h-n#7WO^)@0> zCT6a$LGWwFLcPfN=(3#6`*UIS%uIT=LIXV-RbGE&!!+8)q~dkx`l{aKCe1`{J<5&< zlhRo;JX-UC>5)X;mwR+W96`@&ucHp$jIb~B_w_=mH>In?BLume!Wta=`ca+&7~pek zBVD?f5{nelCaje~EtZn+g3%5GJF}R_b`q}IH$Iom2IRD$^h*R)Cid8Q5~4Dzm!P&Q z<`iI)4wA#l@TwjPL)*9k5Vc!!;`9;bf?HRMm86wi9LI8A%*NGep3g11H{aP)>%l2Q zRMMQU!*0J$hJI5Qs3b=6?}qR7O;BU%Yzufc*ZKBV`}ro7zm=C?OY6Vlabc^r6r7P> z?1c^jD{e4n*Ou441V=Pd1eE8utX@)G5gq72HQAXLZ4l2wKd@yIYC+s) z-mu`E`kj=B!)a^B;pecv4W5oh>_tpj>^NU8L*eH4EhcOxQ|);$x(z(Yb5^tudSptV z%8z{(h@_t`chWkvFX=r!p~Vjhf1AdM>uGK05$1fyLb5D7m0!MUKW=JTZv)bXz9~*F z$yP@U3UE0=$;yjWr8b7C(1^oNDMZVxYYeMtL}ZnvQDkm>S0)=r_ugabEZ}AJ<<_Fu z{I^KKIz+V8K|pK811W5r##z8^S*2fr9Ln zlRG?Zzz8;xu9VSE8s+=(!^TGi1P2hC7%7MUqF=cZqFBtJNW9BROV ziv0cjsUmVvsU^X!`1UivK|dy+fSG$3YH8W0`q${`)taBT9jV{Hfh|&RIaJVvqRIFh zC*Rmvl&3*;XcMiJZ-+Mvfe0xN4N?AvJeABnNdgs(BYb!fK5<1)5UvM!Tz4_aojmUX z#Ymoh)m%fN(>6|#*RP~Lxt1?5);w}yT_lftje3sidO&MxNgcMg9@S+>M%s~y)0i`8 zT_+7LrZ~d<7V^K^C^~ast~@nM04^c5dw*&660^p%^R>n4xzd&jo)Y@ z1r=F09>jFOr%wsj^a3;>N!{rvf(qpkAdWM*5IYCsuwNwoJh7;9I$#`T6-NUIEKsiS;OylQ(XY zQtCiR1dyEGJV=~|zaFOEveB&szAVx*wsyuY?hiBGWR{h0!D zv;G`;F9cnib*YxugasrI^%uy@i)>BvC4V8@! zwy5#iHC#Qar(i0EPA3CuMQbaKy4m$CLjLSNwJs!13b%h{&x7479bv{SjC&3?SO&)3 z6q4nRRP(zOfw-mQrmx@Z64~o}GNXa9YCE$vD-(CLseaF%6HH+WZz4 zbRiJ~zAtA6*i9;z!+zZ?9~V0Lr66|Ae;}U1e#6D^hMhB6XJNHZi{t>DgU&jb=#rPK z@s04Hr_SOr%UCRY_SdDuSw^D*Rzre~4PCqgc)DBYam}@G^TxsTqX%w-yWtYU-Q2IX-a2Z4Kz_-yIe`m;x2bY1F?XZoIH=`uW{$R)ICXxqU$- zG#M6s!fDZwUOA_cs|PXe1T@XN3^UdYyR*t}943A1dTvXp!=%8c%)(s)5y@OJ@@%1a ztlq}Uvhfo3^ZO>ZO|NKfu37JMRRmXfJ_*VOBVnxFFmbq!zc%A+R+w|={11?sJpmca zCeCi;;-*yO)ywzKxa#q?E%@U-+LGH4{=2|reRd-Kz*Ps1$u6sPFO>{K9^k2Y!@=h7rZt472^BCU& z|0MZmbh1HlC3#bcjoX#m73R?H>6oW=45{gu0$S>j`v?``ch#0kGur}QbO_gO3XrB- zS4pz-Yrnqqt-k_LE-&~ox9gd#^n&HE%Z~grM;N@Das8-#U304PA$v*rj36j~qQzYN zsX>8?%q9DhpxrWR@M>30YI^WUDh4bcn+*bYn;~zt_g`$3{#G+=lBmWE;j}5e&vlDa zjsdE(Xg^o(Z|3$Tx>~-q5NrZ}^$y0eMd|h`7Y4OWkgF0(Cu&CfJV03AKfzSGBhMU4bqd4kc`qE!CH4Q^FdOCtUHaZW3R&>S}$! zhk=OYL~3fch$-?wa0)OEkynDzJR=vc^vuUQ$hF(>E(q3{7{4uhC^f@bzHUZT>k%%R zsekA}E`OlGE(x+lP1smp0;Ba7{C$F=@Pp~i$AsJkc)x+3Vf9xQB=aSN>D!T;Y5iU~39#6yoQuj6Bj%kdYC z`72YjnSoF_A)d#@S`|;~F|6TOn%b{4?MWJC4uG&NK=D zqd0rU$A@62MtWD$=Gg>TgO6)b6Vf41#Au&Zq<@p1RG!t}NG8kv#>%{bHuCdAeIao2 zkWX{dyO`XCdv`FlK?jS{48~Uaz;oD6PtoFF0u6HBTHCHh<)5wP<r?9UIw%{psu)`l~*PK0?1^oH}d{D_wF{En-ejdBHTK|(*2$K?xVkG zwYXl8^HAjVOqKQj0f6s~O`)Slp+alXd8@#4Iw?pHys|MW1|l%ipCPeN)|fLB$Dc(9s}LNw@?8G{ zU>U(Vid5}ltIy~zNv>o09)rC()g8O`<5~!qF*Z_?L;+2Sy!WSv=}|67mnOPb!A*2; z^f>okkk+f3+9?Tg&6NBMX%;BtB3Ds#(PZ6E4`X0e`~amc=9QGw3J-$!nw6)l1A8;m zFdl>D?g@J3P-41+3N`R32d*Hq0GWj!{3n&rVA)dpcB+|5`XZFFZI1bKA7d;-x=0wt zy;$6nvCJ$_&JDjWa%`LQYq&(6LqBP7G_+`+4$|qk7IlS4wK{qnP-3!yFO%_fw(8(Q(#|htD?ECEYPeT&anf%0GjGQC<0)vR3x=4pq`@gX z{0?*O(e3p_zu@N9G2O%!F8j&|FRhF(c@BWMxZTpdW0xv^K!`2L39%+Hs0#R>a@n-J#u*kF6~?DIhPrUi@$pR0tS?5wF%PE z(-eYCc#{7tVRzd>j~xO&LBPK62xxwmxrdd{N6!G1hfD0H?fV)_B^PBIm|@~CZXnpdaM=<+?&D8Md^RL00JfP zK|cm@`4bB6muuN!Zck2>k+wh^8kM73#1(%6#^TG;42H{?eTC(h^zB32g{Skc%t3Dn zcHX3$TQhR}n9xXCd$?igvlBH@ZU~p4OO*Gf=$@=w?9vYs)!RYa9V@}xVt8Sr4y_!< zGjn5?gnlSKhqS-YW^o#@NScez6I3x{ zv>meTLLYSK!pa+|kqQI8rWST7_)jL~mqQ}Ou*!V2U-g|ZR+pB%Z@w|HnZrV~uY*w?_gMhSp+4fY?hMmdNXYD(iruAlj0&qga8nQ1=c#y* zgYc@oWp>=|LQ+s})zQ5kv*UF?QMJ2|FN1CzjX$x&TwGJ!4VjOiZxVDVz#r28{^WRn z{o1SYRs*^Nt9(ZX`wad=44v--X~h#aROW$yKE=n-VWRfhI&wn|_X6(` z_WPK(bt4Q8gxJ=b%BW_nNj&h;H;2z`{vi`~)tCBk(zGYBp?f;(Ua+^@+rKm53ld9S zPP#A^Wv7>F7c36IAp7(%S716|mr9fnL?n&Q*?OcmX7>@shP*98yVXmJ{1{z!s;@_D zt0}M~j-0t@?)wY>a9PxzCVtBiTKiS1<;-&hv5CHiv=8d$IOnl?aI_>zR3eW}l*}`T zd7%jWK1w(iqAjU37u~dz-4@O^=PWhD7_yL+z1;-hnPx|je;QFR?I_x6McEg|;`Zuf z_}_7>V@hb=%%^H&>8W{N&Ud5bKD%p(B6#&l@nN^wOdQizb`@g}g1c|qGqGr^c>a1w z|5;G!BbS8(8#mlqM+re6&;L0Ba$evPxRGW!koG@-z@*c+8&^U^7Q+0jgUtgB$)Bh)OGD5oa(ju zL&w{}@q-4qVXtvRtXul%gWH0DxXe$&?MN>z2jh1!ElU%a2;fz@xaTyfs`lnr<` zLv5teGAw`KJIh))Wg8JzoRNMyP>X1rhr)=#Y8O6Nf7>}xLS8!@+&6k0h#H>Nn{`&~ z<h^0MI*wtWWT)UGMw#$-to|sCF?yXL$;_=8T>RsAI7ks*W{$R-UI&M5a3{Gda?9J z3PeWSws3vp1$(`F*+<1X7B6hG<6u)lqr|?N&1Up;Si*MeoRFeRNGZa1=`C?4ZaPvJ zuHL9EQ^d$jd1pu9n6iBgWPMtJyxmfJGQf{a*eag-%E@KZ$^*2_&F#h|LL)2_l*QS9(#5T>)&wtE8a=@FF+vG8N zk>*kU^97;}tRP6EGf5HKhlr6@^Nb7N1`_>QnnYF9-8tncspx59kcfE)TtFun#cCjn zEU2;}6Xu~xx+Bv+O;tKLcuo?~kQbcPghcWdz4-^H!wQOhQukRZRMRk>kfMa~V;A;p zSqpR3D87(4X}j4Awfr<~7h4dgK)pzpZf{bn z^yt`yH4+85n%*$3rL0fWi>l^4|J{Qess(a2+0W-O>gl%xIaVi`l9N3Nq}{$Q?o$#6 zP(6};On20~O*x}!V+=9YO)zz4yeTv@_04tEzA@Muc((5aTR+rHpa6@RymHX{a%Ss{ z+ZVey@TSCpCZq6G3WNWPfd3Z(|HlaUnQ37#)!hnd5VH}%lQbK+^qVrFox87bV{eTd zMjY@0wT+?ndYzV$vST&K{gWpow&Zbq;%=a$(B%@MLh@v!P|L4U zgM9JBN_Gb)g+}3@K$8-*b+GGuC&@6v)Fomd?4){kVQ)620*%U<8saNfLM+ndN~1z> zV$;~rU}Fc&M@|;i!@q(ZqbHdoB(EYYOs>u5jd5A-M`}}pr;g+_B5o2kj-|Pa zF8qc!e5d+kUV>;ih=57(*r24g=6@)>+c%LfGLw_-Bbm7r_`az+tag}5rqG&jrg(-W~CJFkaxZTf@_Ofx@ zzxqF#<4|HKKBpc&B9R1r8t{!k_=WNfzbR?aogs939=bT|!c4N>91ai-wsc4|JdG9y zGpB1A4i1ueuSS{R3h}0^YLpx`pB;Ok2-R5 zZzHya))4+|xc0QJ*&1>3;@0$RcgE3M_rt55cZ9<51j!pV&i`8js3v%e$CG{I{X+yj zruhC$iN%UA-Y%u_?FQq!rBg;{`8h`ZCg^bG&OC=733*%4cUW`DPGqp|OgNy?)-Lky zuY7>yw$@M~Jl&X?9MI2RqOdsWZwzFd6{P)UF5-=GVh z;$}}BvAUMs#V{T@TweGxI7dhuIzFqotm&oQreos6)^Nt1G4l8ce%&u1F<%WFM9t;W zBAEtq#1FS}e7Gq{9nzJ-0@1fhx^+w)&5)h+@I@?kv+h4xs>`xqTMB()kR)QH0W6ODL=b|ea)CmcTzPItT=KH66{L4@p}bW9=F z=+(cM#QUgiq$M^X08=_kUPU7sf!8j#4rN7NO0#TX0-;8=ySO&T7v$C}*`++cHZu0; zRv+{Je*j9;z>+TGv1i76Qc^1lu^>XXp&w}t;MzI_nTpY_m?O?J|UF!?x>j)zIZZ*}uTg|S?56^~@P4iEAwq#7&c^D#OmVAeT^&ib{UcAER@k$$X; zQdR$NNz=G^;6|aY!VuP>0e2>_I^ymyjmC*~Oj(aU>lb7XxoNc&mR~HbdffiYw#m3DLJ)nb-vczmSGI=PaP=yOJ4mrW01pSsP02=(ym z!R+#8VFsL>Puje-hBZZ0gY`?oFt44R6Z--pJ~w8q7te$W<+z`WB)mKtrOR>%f~{*2 z8>hh;3|%NPQq8-xDbWw`*n5*Ni7GB0zr7D?q`b1s^a4*X%Jk>EYA*r$va{t*S$Wk8 zL^lqaL9$a?PVadKA#e`-ocbsFKC1awpXsVmMxs^Fnz9Tb*6tD1sa`;k~@OqRo@ub(|hVwu)j^O#EQmIetE!ma(-|!O<`ZRqJb<$^dia$W5ARK;F@n)=G zXY|L|OhQ88G?ay6&;=(qqYF;O$NJ7x1?PPHYJC`UButfql;CF9^Z@N$9e`rgvKY7- zzkY{r^gSjplQ4S;+v7}YOOB)q;im)xJ8Tb}^>Fe{+E{o<&QW1zc~g`vO5=ii`UUW? zZp)~%d!YRLs1P5Gsp1zs3gc8)u&mU&?P*XcG+Tr-__K7L+$}7WQfV_Ngi(tq_9feK zK+m&sYg9Dt?NYYIX6$uOy3OW4i<~fWv+Cf(7LSO2Cy{IK;1#Y8C_5@I{l+TY*=I|v zB849$N`$Qn3)Wezrk#N{(Sj^ujO*o{#sa4oD_O8zmLim4B{5HQWLd}YpB(b z4G-q~15C`KQcuBSO|^7AHPTM2RneHT?`cv7UxhiJ{_{;Q;kGe05x5xg&K3|_>$pD_a&U>aXaI13$(JL50d8Z5nu7>Swu zA*$V;mYnn2)kI5c`a29y*`L60#8U8YzlVb^NVbZO*AIlUcC6{g-vYStoB)oYa(>HrRpU$_+Fu$?E^-+?mgq9i+l>lZ?b zT6(Rs*ytr2RlqzPAC<(}aFaO~EuqFiP9Nk%5YV?9#t-?A=4jtCuRhpfZRc5{uXo+q z=LI8vUYPpMT}NAmAiT1T|Lra-gEjft1a;1k`{Oe~KvJy%Wz~FR@vzsl)Hj`G)zsap zD0(^YuCzHguv&0Ryn%gl!eek+ywQej&`(Qef(ql7EcAYQoG}tAUY=Ns0uhUO05V)*ND z@*NLrHqhR{%JlU-nMJbBbn#Q$0gDOt;1glG|M6dhX@zoq#PRvcMk<`}n-dBYPlDbf zY2&o+<&J4^>4Q557tWSxa)1M;mS}X$!JFe6+N_0AI?erp9CdjDGuyvnelpc04y2u#n8-PU5wo6P&9?ZpnONA+t}Ucy z&nD(V>H%M8avRC7jdV$uW8n|L5W6kw7|(e8$j>_ZLqe`6y!1fWM}{tJ3t7HmzB894QuSOpNj=&WDT3e5Or0)3wFwasb4%9_M@6)K z&l3J-@<{!8U7lZ%P!XZsO|ejU04NSjBEBESP4Ff6+T}!&pxTCxBG{W z{I$5gyC-P##k--2l=5r77AsRg@o4?Q7zqe%7Y9-kbSnK|KDcKK;nZqb@o$i(QzUtW z4FlkIku@T67|OO;)}XWaHSwT$i->~}#O|Bld^q?M%%`d*s2x9BKP zZo$OD?q27J1NAg#Nd(Fn?4I|PbI>nwdR&!F6YOHC^L#n$QG{zQGnjL8QL{~TyS%sy zMT%4c%BbJPXL6?WNg|O1-c<>qUm^=RW`+5)eH2jAI{T^M6-_natW57V(D?*MKT4n;I#vjkQ1Y~X{0hj4% zF}qYRzy8zJX(%d$`X$XgPvDafqM65Qw_;|~(JO*m8-*q1ir0~W4cd`@#KX3_GEp5t z5?rPAGz%$L?%(5dRFgw~R^|tdxXDGF>^=J2drvtC0;nBNt)$2d+>6A}c}i_~ef`fu zywIKq{Tp+H@09h2i{+Dn7?p7~8D%gZ+<(bq<1f|tL;Qy~w3}O7WX))3Ej+(psj!1- zrlt&tNKU|u?sySN{!ByuYY@P5bL5@7&Uld^k~iLzJaP7WDAI|JZrsHHT>hmAC?xw& zC!c!IBNTzL7K;wAXR3vVTe1i(oYdqoy3H0Zw{@>?*4UcFaMCNHwib2efs0(Ync=2q zwM72#(Cn=nv2ablw^j({)fdng^E-(uP|5UD8@CzqpKlZ^=HH}?5{kmM7vLAoAatc; zwH5KZJkkdhh8C1p5+HZgC}LE+Xu}KIn7|*#?;j-8^-VaZ5jOW{JA#*;g5p`(xTiDd zKkPnW*IU@QEsE%-JWbaZU2+aF3<-bfklBU}TCC{E-~c1suP&!}=v`e&X_xF{wro+L zcgxt?1af+ArOGprbI<(>!E99@GkN&7?#q=uz{(bMN@|0qqxcTr07b2;i>k6W8Za(r zOGe?77{mF3SVV_<+hIDRNdbE)(lSDJU|Bf|swOh*8)pQ6AizER8M>1xnN1+Qcqhg$ z&ak{6PD5v75^-mAcvoOH6*!9Hkzpt)*#Ip_vNoGk)^|nj*9+w7+7R(=j4q>aw<4Wc z=nBx)kd4$ER29&>bnknJ`n4)pOczJMPJ! z0)p$AgO&S=`T1(PYN?P}4cSJ%&R?iNexQp^N$*`-AbTP7WfZIW#P4d}}S2|=#O7ke0mzh*aEWQE)y!|#~iGCKXe zpzrFFL$pk!^d8pUI(IfGO<%TTQHsrDXLDNnMC6*d0wT9m7x6Ft7V=_OlTqkuj{x>p z;1kpB_NxE04RdYk)Y!laqUU=rfZJ$T5)`7`QV?5(Ltg_xlECcjtEa{J!@6Brx);>b zl?P)xrifEIfWi;~!Hgrq*7bz~i3BH#^2_mOIb$vnOz3yqef|S?NrX2~aMzcrlIGhJ zJ57YYnbrjk0gMXNJsZ;3!GV3+U0eN7l{dNPN>2^D{M%{F_n#@Jh)M2G9pb6tlT&F# zzc){OFWO&LCDH1cNMGR@X9VA+vt>EiQ|#sD{Y6sIh0eE(T5g#Bhn{L{CgdEL#dtrL zC>~e(BtwcN6QdM$0h>v5cu{@BvleO1d{z*-w8N(k$wHP$AXwvfT1)EL-?E&6nLdTq zFA@*HmwLR__b301zkRRgd(MeG6hCvppG6OwFv=2NKQVx_rQX$Z3q-DFDcOMHtbuC2 zb}=nSGqv$BlXjj(ahhid7ECVPglKaK;z#;LgZZ+OisWYuKBPX7xpErFk*@EYkKqg2 ze61oYkPXBN#&}jK`c6OUoF{pGlCOmyvi0VbqIH)+GaMDJ>Eg{$20?GwP~=nbph7n3wT-iS@IWTjG!q<-}5nJdNKFs75SDJ`2N60FM#00h+c!NU0ufy*_DlHj73t z5%X`Hqe$xxtHUL9%+{FK#XTYqf1a`&Lh=``4pOX3cy239FO^N zfStakz4XYa-?AppcGY?%Pj@WYmLvxBlKhq06UyFTy`Dj|YO2D`3uG#B$$f7PEjp~U zN;XAx*Xx;j?A}%@n)?=Uw67Bf^MPlLUonDdnT0whr^OXyCbtVRp^N&tL4I{~Dg4l+ zvxK9}?_3)Y$>n?i!054VsQ<#MMZ=Q@luen-sz=N_VC}l?`zNJtA`krH?K@>?REBq0S+(}^2UlFWDqHi30Pa~uu05d$T+-JrcJV1?aXOg(}Rs zl`@li5%>|PHxJjZT#h6)u5#ukqU%dvk;$HYi|x;L7naNA&)c1zj7(iIm+BYA&tK7r zwW0zwzaX`x0|CVQVi4}J(N#ScVIBUXBSyY%CN{!aH)SJ(GEwpFU}-yF{d#w05hL=m zqA}!Sf^U&%EPmu~34)ZMEMWZ|Z{ zf+Da%zhehlo-wY?=x^Nensm)O!dR`~B96^wloNE6>dRY#u#pQB(ftm&2{0{aPw);3 zLS~XJegtuFdsZ#-4}Yw<2z1ya*ZublDU*Ut>&i)(l$<$AW-E7gWuf>Kh>nR@=~Jgg zYVeI|2kH%1E@)ScwTRMO*HTWJ!AcdT*o-xoiH_PF%JHNE29RfRx{{W~Mn)HwZeR53 z{~74suQ)4?@;WN79bIYU3yi%hNhnxTu7in4w>kOLA9 z^_cPfyxl`BO^Jaqzdl`|Ez%y3HTE#{dbqX?j$5k&zQxN?z*CZw+vAZV-WEk=-9oI^ zi>;EFv9pBIbUMsM{{@)yaWwa#nUxs`jEZa5y%dJ~ZYpxpbwF;r5KM9NBrtI6bS49Z z{7GcMaXGAxDfXDD;60Li!JF~fHPwUU&ynr@B*@3ChF52>+Zzj(2PL6C2Mor0xpcaX zJz8ihH2PY@>!))WZIW^vV%K*vW$Xw?vcF2|dP9n=qCP9;7B^IZhW=jxJ&T%Ztkc=ADNzA zsx*6uOG(O5$(&<*ti|J7dW)DtZjKZ4%;`A)POZf?A4Jh3X-N5M*8W<2T>+@m+RM zso4=f_o0cfhnM$+auk~mI=kVgHZ;l-+V`UB8DLApLi~fqxxCu82ZpTHwuvkJ zMaL0c$(fK#3^%@^>W3#TVHR`5ZG3y0Clb5K47#1K#yLmQyhW_55~ZZn&H*`)Kcz#xCRQCFdlucHx%dY1wZPf=tL$KK^-_TTkBlg%SX#-AMe8 zDRJaA`0SE_!0FPPn@x{0rimZQd9k+}88MLx`S?6fu6=l1Y@h3fs<=&*q;z=urTS=C zK%}u|(8k5e&Y-zSmoYb|zD$^cY}p6(t?!f9J6m?2>Tc-Xy34Rp*Ug6P;_=3oS~ z%u;Q7%I5MiGqZ{d!-pEl{0|+1NTm+haNN1M^6$Gh!|V@!B;}D{h3pn(C{xBk%}#IR zO1TK6*^j5|!U4^zB>Fw$Ab?>qDPT1M^Jx#~^C&2cPdIB_0;KSVNk9r$##HLTSD_Z& zz)jE%*Gj)7d9uVMl=+HdJ8%e}9%lwaY;_kEvV>UsLHx;mMC@f3lzq5Iv&y8{w)@Z#?E z$bXT?tyF)?<3bugVVY6(e@Vg`2i>|)$^m~$WioLwW}oXXZ}=w;=N0{LOx0{9*as^Bb{)>T@3m+vEip|GPIJDHTEO0j?I58}) z3~@%Q(7?0uCeHM#BsO=kytmWFVcmtD#HF#V$&{e5iF)nW6D|+WjJvd;&5ukcPLykI zL)z_SO#T-IEgtk{E$oT_$8EEJI%wS_Y2C(F)`01pzGC)%N-d}qrB@+6yelt`_?uuN zPMGYZCo678{Kdb+IPo{#IN(js1Ummj@!l19H8oPMb}r|M+d{D&z2T^r|!8rbRwlE=7j zz{QM`99y%o-F!wvWl#jR$l|ML^ohwPPlBQ~Vi{{yBOjvrhl~uf zK5Vk45;70o*YhtM&7#Sc2dfA3wZq@0ZZ6N~v6zg&MzJl<$ZNrwqf-$TiT@#W`2x6Mt;TiS4huyA5^}YIPTFF^l19VciDe9QgSuo770l zz$Fvs?0FY@_UtE2YE##{%dGmgZHHfzsU_`V*H`P4*F`ul(sYs9Jq*h6rbk1>eD34Z{2K;_cLbZ46halLc ze2%NUKU&GA!WwUqG&=coFm>87tCT*F4xGxo74O@5Y3xJVE!8F_1FP%~BdC2FS9Isf zXuW-CnGh!{^D*Drcrxc3Y`W9=5ZVYqn-rEs?8_&q}IoEx+VFS zRga(VCYV$<=Zq#wk?;b+las#o#HsNw*`FGFDeA^*xQuB(cE3~CcEUYt6MjgdL|p=P z2+pPgOZ0Zk#7FPiJV}Wb={;89-U46uTu_QI1&b)P=+se1|88_^!5Um>o)Nj!lfI}_ zA{$}3*734@W4yItj?m zLJCa$`Rn$L_lRPSglt!uro*Wg-e^WHi@NW8q5zxYdq%ULx=%RZ(Ry~zKFHmgD!x8n_+?xj`!7VyZLb@!Ht zcyvx*=Ox|L<#!iwxI;b}HqA-#(_&c7eI; zh0-~Nl>BWL;lGfbd$~ThM~0`;bnAxA&t^Bg46A9F67?ijVTmmSHXl37dKJH@X%pJ( zv;J34-$9e2BLwPjbgdS-#g6)O&a!wuZ-4?=C;(W1fb*oq3F7!&Q;TDT{dSIuAJ0r( zTYW}1z5Y^?(IYRkcvPK{&UNZ!DTD2NG^^l4v6pZ*x!@0~FW+zs*VWLZvD5?b&529v zzAIr#Blpmqud6Eze&qzM(zwET6WE`YFdmz$)SiInkY`uE9 z2W8d!Z|P-BLFnbp3rcnGlI9P_{}G(V#2CJpq^&-OF7u(-e@`ex!`4!J7AZxIWjne$ z*}p)Oo)D;<^YCfczySXZ)mxzJ%Trh$e@@Xs6YI$UjQXTpMM3=OD}yJh-k2t_G}69%^Fr!Z2HQA5*4M*x@spn| zrheG^IKj0ez3X@*QK}PLKen)$lLlOFZ8tSxuEOsfZ4ZBRv~f7a=7}eY0qYvDhVUkw zZOeCWJKZrO(yrm9v!+wYKhPp+8sVTN>nKBQt1)2z7ZTr41?oJxD3UIFa*^`;bD2FhRFQI1$)e-S7>YM&OE5M83i$Yg1gC4XbSB(3HY$XeKc0w~r|t-}85eyvq znGOcAFmP`I@uNFB6D-U3R7zi&HI?4$T$XBCYp7jyF2hIU++&75Z}~Yj0lG(o!Q{%x zle@H4z=iwQ^%fFV}$@P%l|Q*S||Fc=aU(OuYN7&dFa}V3Nc7J*3pGRNHysT zpl1qYqD}+z4udN>1yr0@uF3~3%~hGND|wBbU_IaPN$MmzOSBa(DV?!lmqJAFWhao7 z6XK-N{+v`HO%=al&V4z}>Sa|@+Qf8!nk9bZMS#vdzl+RDih{^-@~-07nqb7URdH*R+DD=7!&A9Oi{-a*?F%R^?_>z|&W zHQ+4C_b)3pp#^K(qJHO8s1UDOMw^aDYOOebgZD{HMbGVDVk$+=PF2;lVmdaX96DD( z2>^x9360&?xbJ=C?ww+GUzY7mi#yf$i@Zi^^Y}?DA8FLB1O|#d@$jX3gICv(QdzlV&8dxsHV(c+LsK>QTvzU6_ zYb0#5dCxZ%c~~}R7+|_=M1NiJ;GL(M6jlh!W$wT&BZz#^;TRxOvOoC5av{aK*jUdB zEJTT7g$OLq7j%VOxq7lBmjswrMs{Cq4i_QLuY?I-R*l_PX%)WEauEF6LE{{cM%g#Z zY=g9-pHTq4-?B_^ws)ot(CdUT(Q;?3ZgB%&0-LSJk}S~oODd0f;gmE$LNlWC)*SZw zTF2tWUDe>}3GAgFzfUW{@fr-5%+TXNF!#@u3xLK#M@{^pJ@RwHxR(mQv$rbM^u)yF zp7gc4+^-scO=w4GnLoUHm&|*G%B4)zdnT-@sLAXD{t?qVWoK?M#QmO7ZDZYumcROM zT0RXq?@|A$uOb2&0IX>Ab9ty?U)lM3)bo7LPM+d~0IDZ9U)9X4Pt|IhEccrc4$Yqg zxN&t9niz^0H@V{LX*57HW5=4LcVn`mZrtz!m-E4LWa#a&|ZE=ZeR z_be>uWC0uQotqmp(+ySAn|+s`Jh^?c#?)U-^^qVEROY9akEY4F$EfL{d=!)6%BG-- zzxb^*e?e$Rf1Wl1QT?k8F>OCoXwv?=Ung`f@oR`*z|{D)G%5h9(2EXaoVg^$f5Zm< zKZTunJXG!9$1R~Oja|ej${K1yXo$j8_FcA;rjQxV!J)?|Gj8yk6(bnRAXg-|KsQuFvOvU}1Q)$#BKFf7rFv3#c^C6nuM& zOO0Gft$Kq{^uZk+fBQMx4ywF#eZ10jN%@}^6Trc3hCtkr5v?qLPeTBZoa}i>5KfE4m^W45!H&tNIy2!R)_bi2pfs)oyorVbu+nl5 ziVqIJzcjU0;LWSXA>n4vmdvWwz`nJ(vB0=#2PO^BiHo&%ecgXrM@U_;#^7aMCflK* zu?J85J`Tl@CXG@Gz9}c1FQwCP4okOwbBpS37P8a>qfV`z9k+`X5YFPzTfu%UP!6y`Fvr_P9?4V5;X6Bf8{U9#rCkAZ zM&uVB!n66B@`9(+a&}!KKRfCf^oQNN+6$^tHoMIK!>*$7-0ZFr=x>*b-P5X-LgxBY zo2Ug*pNH%q>8qqJmtk=~7g&DYcueN3PcuE3&z~%j0gUYgSS9wn57tV0QdV~{+bxEnx{U^j4&k6Tg_t{mX$_Yq$xe=@q|jc4#`MB^ zJT!tidMB9LT+XqKk3JFN=!_dS0?dknKn##1>;EeT2o)}9LyEIBz=e4SFuw9d_vq)Y znKx|vFBXdWkaNz_)-AYMGNnQ9zLj_f%C}~7N!N>u)Lf+CfEIdIU7czh$QbcAide4T zZQJy*?<2fUv(SP%PV21I_X1kz7G8vO5oI)0xCIvcYt6{A`!}bwQlGSad^&0sE+dig ztCN-J!D2iYgG*FJ2{BPzy1^u&y=FXDd67a8y7BGP|L)Sh_Z*1ci7meUFD~utdnA|k z%FkshXa7&|yHfQ-cZaL9*88w++@nx&uAPsEVL*=wVw{~gi>(snR7!xUfN3m@nIRqe z$bxi@pG5F$L=in`nIEOo82`J5h_9j*7~_4)pr(1ea&G+SOCoJiMKDK#1^!`Tmo zu(KAj$s(@Ez}~eSFWD$y#q zslU<&-b60sArh0MhfMd8Ut(rM_CQZ8FfKQivy3;fi)0|#R9eO4o~zDAw8`&mCJBRl zL+V<9>B#dX+=Ch6E=t$PUla#aJlOiq<<`$o@7t~|m@_8YX~f5JPr8|q*x0k}KKaw) zlj4s{p!Bb0(O2I@&cJP`BT4v(=^IBCC}>G;6Pl`dvTGO(u1uHZFzBch#Oi5#?{oUA zMDhff&?FU9`${$qfOt^aXNUDLXp}!L8o++(*YdqI@rZ`e_9q$WGiZtk%BdwBGNUQLOvKhbHU?bZL0ypyF6t66gl zm;}?$LvW7=cpykxJulrHg1_Tybvk9?!FUgQFW7)ZjiG5RKh5P)A-N+a_IR~*prd%Jub(3dwV#iE zEZRnitmR!zrZDwcFZbI$fi zpQ#2NyF^|ZZxhg}_2{p|uY5RbnD8K6ZJ*(Qw2)?}wekp&yaRA|Qo#DxsS?SeI+jqSMG)is9$_pX3e;QRCk`w z6Eyf}-+>ptnm-5fB$ja02cI*FiDNlWz6!au(Hs}CGqc@Mmic~|=QFFJrG1@1hjtXy z4~e%c+1cVu*QrSvt}^-J7&3CYOFA(;0v#pDtP1!!v4p;BvW*`n{US>q(dX{NUrV`ti>sUd7L3MP0-oP`aRTgYw5brGKhov{JH8&ZnR)OJ2X6Hj z*N%E-g5%w9Tu(o3p@Ox209&F)dqM|)8ypzq@>_T7)U{4lXM#FbS?FxaC!G^bZMM9+ z4tmuQbQP|}fWbv^^L6{ks3C9Ej)`TTPs7Rx%f;*+b8A$!FHS$N0rHb7YlE-;Os=Pr zQ{twGcgc=sfxFbo@AZ<0v(i)mIIN>SayZmhz4f%!>5C|cW!)L%h17s1v)z*m@qbN( zLIG`HP@`-xc!<{bo61SZlQWVZ1OuYl!Sb-gF-ru;V-o?-65R4%f%6Z;4dlCb<*tm4 zT`7ejX`!VvI;>13$7YHQz%+8p7l(Tpo$_JB4f^W={o?Bv;zK3iLCjqj{gvE5lo;fd zHH{q|VzJ(ecLFb~dW44K((lhkhDQ$2inQ@ZcRq7Y>-^*1b>gOVEt)4}ovdHpbt^K@ z|3sf`Dm|bJwcZkK{pP34+PPS-&Y(HzYpQh%%*U0(ohJ^qYv&SPhZse79v3M#nTUb? zTTjUjU*9&)0S1{kUx6pKuPYG_c~z}evFZy5xUz{>?k8wd2OGRLnS6!W@2E;KWyJGkUt&UFTh*2NVjj=kW%jj~V001z!4 z=ACav4hf=_2vC25z)FK{a-HCIF%1b@(>NH^N7$**yWUBYO61yA32R`g-kGrQqT2&s zZ1aW~`>zx~03Uhl@0bL?Vul+mpc)cp64nzfU1rpi*eG&?8WU7Xl4Pf1!!_iKpK_${ zC;xLY0h})InNl8x8hkL6Jpz7odsa%}^mCw|17HWPhf{dC+kQ}x((i~n?<}jL=p9a@ z<9^KPtHyuVYuBL`*B7H;P2iVO8ICwx_P&$c40y;=GC7R)u@F`J-|`;#me&bZ9#xFU zJg^Th!=rFfc{Bw+ujIxWBM>U0T(6i0?6X&W^QWn?a#<*foA?<)RQJ+am_wkw5~pN- z7sfTpB>PChT4dEn1d;2VMl0o-hg^bZeAQZSZ%fT*?fK_jkzO;p1^Kn_+yjstFP#ra zNvx;BrMYSMj?`B;0sS zFuJaW4L~Ou?IWxSIxyrDP0$laaSx}5DtUOzHO?=y^m2JYfcOG)&~ws}entE=bCT7$ z=#rYt?lU1eR^i}WaqU8Z0rKPflqR^`l!q|k(Zo+khOK+ubx;hXEPh&3dhXVaKhK_5 zEWuW;iN*%L+&b5&xM}Dl-pY8w8~S%KsSYAxoEeE0RatjS6)vupzw^Mi4zR4J9^a9vEO zGsL1|=&T;B!-Hc|XANCOT4+&_Am}oQeN;)!5I#Ng%dGfD89Z`xzBJfQ5Uq?0g3AeUS9@IhE|>w~}OV)8>HvkoV#COPN{LT#vk8 zt2Z)j@{a(~lW*kv*4-rOL6sffa^(OAYdJ-0AsgF9gwSQe2wH&X@4yh*TSHt#%TNt1(?*1p$1*$&WoXj%(3D- zcQ5QJ#PkYUg9UjMs?vZCI$TX&{X=JmqECeM2>uCx|CpLx$`!gYuDe(vVX}YRkFG^k zURe>tw{_d=^mg9nvS?KtpkI=2?(iG$tPXR5QosdvzxGoCt z$$I=Gfzpq+2F3?10L^~%hk|tHo!byiu28i+0-PzrVDKCekd-_eW}(>Fp}Ancc191J z%LV{ozGVXd7!U|yD)X?cRj`u12B#u~Q22#>5x;tCwV54R+A8Kzk+(poe&f<5a*v*K zT2oU&Cy_LPGej(sedjw!v3{YylrY}sxYF)>cfp<-T!xEu)CFu&YJe?D)I%N!%*L!8 zEi#ZVi4r-oMksMF`zOoUUiq(+KVL}Vgk4zs|M2{i%LBzJSShuf5=6EJK+gfbJ})q= zG0GhyJ>s|)s`}>jgj5{06DiB8;CT5#UeEFuCDRNU65yFEh+SOUYPR?{idoz^hcctc z&442k_wYk5d(L7ZTKmy)4^n0o##7c6!_jl_B86&KbNSP0;&tq_AS1DeI66n%PR*pX zi2%0k-ZNP@3`AaRb)vJ?W}XEv*Z1a+PPd6tY;c0IY-s0=Iw-*C*soU) zC=bBofdMQRHt;f`m;%bDO+Q@6&hS8dvdDDe(V_H-k2t&!J`FL&9w2#0bHLqd5+>n8)4e;ua%TPUO&4#d!TjvD`IHe+m+wqABkj zoNs5r+GI!s>cQZx77EF%7%V;lk~d43R$%h9**@|sc6SSR>J07Anld(@sT0nyR>Qu_ zPhkc@Fj;M*AKsf3%f|p*H1HyY%3g7T%cCKt?y8k0=-`j0laL`{!mVH11jZ{=3)Zbo z21^05#asw*jiv?Hew&@KV*;teNz-jz?UZ2y0k!l8DBW^9Rj~0!uD>Ft|27Lg;_|N} z*?vvL_xnuig>$EG@^@kLoJ?zdbt0stXU1YVLJO_W zCv!h-*}a>}{Q3SZv`DX6-2%p&B;T>R%A72KsxXP5VK54m2trhI`mBmx(#zV{ zInu6zS{==2l?XBO^i7UsOK?Fk{?ekyEXECjxn| ze`kRpJim|8Q}?3d(XG1>vcoX%zs<(_g-QWYTElLe@&5AL%%^F!{2#PFiop zRz~d(ix56>b@e=g)qGNk>2`{de6Q_WxRCIF*6yQFR#bxy#Qy{EQ~~2n-V>tkL{`UY z&0Rmmuj2DpeT)jObl<7A@des_b`d1V25nwoq~e9M<^f>hHSU>co8g(*{m}-YwofiI z-mkS=3Wl~O+8MFVW{YqX8E6K**_pPc`QNK@m~X8Hg&Kle5qX4L!dd6!IWdLU*Nlkc zGiH(n$H6or(h^BfuCPB&?kP`30z;2(u1 zR+FQfD9dIbldYlRvSLo87bRrF5U656yei7F$Z+uFv&!-!9(3wD{QY)By0oUJmuQ{- zU}FV=;Y7LSZ1uxnRdzVY10dxWlIkcKoJet_HxrwC@n~W6^hFyQekJ5|pV<4XQj zka1?kZLfD%g`ld(`_Jln6>AAWt9jnwML-$NI@O($<9KJ{W`C%l?Zl4-L0J7Mr!-?21u}Dy5k;D zu}!eeZ*3?R;L}9xDghYu?{zNJxF-U5o>7it>+~T~$v2ua{;7P)^J*yJ6~TT02(a@l_L<@JIZo3wOYJ9t9BNNUnvpIZ184_1fah;Vh@r1saB z^4y@`7jq3dxmVlsiow+%)C~5)FovY6v>3pvw$J%t@r@7cp&Ec@j$@T1u-i81-!`X5 z*u0~!^hDZq+7k7};*;b~0?h1x(q(|(>8OIVD1hr(THoGWk=iwDyIPzQf69sA=(J+o zn#EcLV}QPlry2xM(Oe*&QuTxz|DO({_ui&T9ig&XSsUK?V&dy)5>MGnr6uw&*J)SR z4O5d0C2t!+(VG{Y3fFU3G4!F~;z`0^Zy$VT zlJGjGSF&$3BUtfc03n5Fp1KQfb~InA&8`q*1q&GG=||Hzpy6L2H1f*;LpyQht{w?} zDZ2kUk>FaSr)>&iD|Z|7sH6U!z%}z@JhB~OedrN<`}Lfq^UV}Y43>cn?*zZ0AOM2< zpX5w(`QSQaEYTvqHz~=NXHUjQf0o%dBkQfeAN31lR&xxOEgYHTdZp%bVXN280=Ana z^M=FH$n=5rl?&BI)^08Qe_`>YwGkkoEIR+Kv^%~Pb0k^b?3|sA#qp8cs#eTueeM2Q zRw=0&M&6mX$~YF!Y0ZBc@63#c7`f!9BKSXd@Voc{RoLU+XN*d^;RK${8T?=LBS%Bk z&gkb&o-U3d6^w6h1+IPUz|;DW zIZ;96kdsD>Qv^q=09&hp0GpEni<1IR%gvP3v%OR9*{MuRTKWHZyIbuBt)Ci`cU_&% z1T+i^Y)o{%281-<3TpPAUTzw5v;RY=>1rvxmPl96#kYc9hX!6V^nB|ad#(S+)}?8C zr_H+lT3B#So$T=?$(w3-{rbQ4R<@nsf$}$hwSO)A$8&`(j+wQf=Jwhb0`CvhR5DCf z^OgI)KQemrUFPH+UynC$Y~QHG%DbTVh-Skz{enNU)cV_hPu~{TD7TPZl>0&K>iuE| z7AYn$7)Jrb9GE&SfQW4q&G*@N|4cHI`VakFa5-C!ov&XD)J(qp$rJJ*9e z-sHv}#g*T7Cv048d1v~BEAzM5FztAse#q78WWC^BUCzQ U&wLp6h6BX&boFyt=akR{0G%$)mH+?% diff --git a/docs/assets/images/widgets@2x.png b/docs/assets/images/widgets@2x.png deleted file mode 100644 index 4bbbd57272f3b28f47527d4951ad10f950b8ad43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 855 zcmeAS@N?(olHy`uVBq!ia0y~yU}^xe12~w0Jcmn z@(X6T|9^jgLcx21{)7exgY)a>N6m2F0<`Rqr;B4q1>>88jUdw-7W`c)zLE*mq8W2H z-<&Jl_Hco5BuC5n@AbF5GD82~-e8-v=#zCyUX0F-o}8pPfAv`!GN$ff+TL<~@kgt} z62eO?_|&+>xBmM$@p|z`tIKEdpPf8%qI>4r7@jn<=eta*{3~?g(zz{Ke9zc-G^gr? z-7foa?LcS!hmbwzru}ICvbWLlW8;+l-}!^=c32!^nV`+`C*;0-*Y%l94pC;Cb3GXz zzSf%a!{gVr{Y_lVuUj+a)*Ca+!-Hu%xmP&&X-2CuANY8^i{D7Kg6qzP zXz_ps9+lN8ESH{K4`yu&b~I>N9xGlE&;2u*b?+Go!AhN?m-bxlLvtC#MzDF2kFzfHJ1W7ybqdefSqVhbOykd*Yi%EDuhs z4wF{ft^bv2+DDnKb8gj1FuvcV`M}luS>lO<^)8x>y1#R;a=-ZKwWTQQb)ioBbi;zh zD!f5V)8581to1LL7c9!l^PSC$NBPYif!_vAZhmL4)v4U)4UsrLYiH_9rmQDd?)(e5 z^pcH>qvBg*i0dus2r*mp4;zKvu=P#s-ti;2obl`NjjwoYd>e(oo#j_uyRb<7Pv^If zzZ|mGHmV)8^tbO%^>eqMw(@7(&3g{jEp-Najo7V75xI_ZHK*FA`elF{r5}E*d7+j_R diff --git a/docs/assets/js/main.js b/docs/assets/js/main.js deleted file mode 100644 index 667b2694..00000000 --- a/docs/assets/js/main.js +++ /dev/null @@ -1 +0,0 @@ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";function x(e){return null!=e&&e===e.window}var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0>10|55296,1023&r|56320)}function oe(){T()}var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,k="sizzle"+1*new Date,m=n.document,S=0,r=0,p=ue(),x=ue(),N=ue(),A=ue(),D=function(e,t){return e===t&&(l=!0),0},j={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){for((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;o--;)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){for(var n=e.split("|"),r=n.length;r--;)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){for(var n,r=a([],e.length,o),i=r.length;i--;)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&void 0!==e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if(void 0!==t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t=void 0!==e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if(void 0!==t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];for(i=t.getElementsByName(e),r=0;o=i[r++];)if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"!==e)return o;for(;n=o[i++];)1===n.nodeType&&r.push(n);return r},b.find.CLASS=d.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)s.unshift(n);for(;a[r]===s[r];)r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"!=typeof e)return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this);if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||"*"):void 0!==e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v)for(n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return void 0!==k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;l--;)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){for(l=(t=(t||"").match(R)||[""]).length;l--;)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){for(f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;o--;)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),i=("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,r.left):(a=parseFloat(o)||0,parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{for(t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position");)e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent;e&&"static"===k.css(e,"position");)e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0":">",'"':""","'":"'","`":"`"},P=h.invert(L);h.escape=W(L),h.unescape=W(P),h.result=function(n,r,t){h.isArray(r)||(r=[r]);var e=r.length;if(!e)return h.isFunction(t)?t.call(n):t;for(var u=0;u/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};function $(n){return"\\"+U[n]}var J=/(.)^/,U={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},V=/\\|'|\r|\n|\u2028|\u2029/g;h.template=function(i,n,r){!n&&r&&(n=r),n=h.defaults({},n,h.templateSettings);var t,e=RegExp([(n.escape||J).source,(n.interpolate||J).source,(n.evaluate||J).source].join("|")+"|$","g"),o=0,a="__p+='";i.replace(e,function(n,r,t,e,u){return a+=i.slice(o,u).replace(V,$),o=u+n.length,r?a+="'+\n((__t=("+r+"))==null?'':_.escape(__t))+\n'":t?a+="'+\n((__t=("+t+"))==null?'':__t)+\n'":e&&(a+="';\n"+e+"\n__p+='"),n}),a+="';\n",n.variable||(a="with(obj||{}){\n"+a+"}\n"),a="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+a+"return __p;\n";try{t=new Function(n.variable||"obj","_",a)}catch(n){throw n.source=a,n}function u(n){return t.call(this,n,h)}var c=n.variable||"obj";return u.source="function("+c+"){\n"+a+"}",u},h.chain=function(n){var r=h(n);return r._chain=!0,r};function G(n,r){return n._chain?h(r).chain():r}h.mixin=function(t){return h.each(h.functions(t),function(n){var r=h[n]=t[n];h.prototype[n]=function(){var n=[this._wrapped];return u.apply(n,arguments),G(this,r.apply(h,n))}}),h},h.mixin(h),h.each(["pop","push","reverse","shift","sort","splice","unshift"],function(r){var t=e[r];h.prototype[r]=function(){var n=this._wrapped;return t.apply(n,arguments),"shift"!==r&&"splice"!==r||0!==n.length||delete n[0],G(this,n)}}),h.each(["concat","join","slice"],function(n){var r=e[n];h.prototype[n]=function(){return G(this,r.apply(this._wrapped,arguments))}}),h.prototype.value=function(){return this._wrapped},h.prototype.valueOf=h.prototype.toJSON=h.prototype.value,h.prototype.toString=function(){return String(this._wrapped)},"function"==typeof define&&define.amd&&define("underscore",[],function(){return h})}(),function(t){var e="object"==typeof self&&self.self===self&&self||"object"==typeof global&&global.global===global&&global;if("function"==typeof define&&define.amd)define(["underscore","jquery","exports"],function(i,n,r){e.Backbone=t(e,r,i,n)});else if("undefined"!=typeof exports){var n,i=require("underscore");try{n=require("jquery")}catch(r){}t(e,exports,i,n)}else e.Backbone=t(e,{},e._,e.jQuery||e.Zepto||e.ender||e.$)}(function(t,e,i,n){var r=t.Backbone,s=Array.prototype.slice;e.VERSION="1.4.0",e.$=n,e.noConflict=function(){return t.Backbone=r,this},e.emulateHTTP=!1,e.emulateJSON=!1;var h,a=e.Events={},o=/\s+/,u=function(t,e,n,r,s){var h,a=0;if(n&&"object"==typeof n){void 0!==r&&"context"in s&&void 0===s.context&&(s.context=r);for(h=i.keys(n);athis.length&&(r=this.length),r<0&&(r+=this.length+1);var g,m,s=[],a=[],o=[],h=[],u={},l=e.add,c=e.merge,f=e.remove,d=!1,v=this.comparator&&null==r&&!1!==e.sort,p=i.isString(this.comparator)?this.comparator:null;for(m=0;m=this.length)return e.QueryLexer.EOS;var t=this.str.charAt(this.pos);return this.pos+=1,t},e.QueryLexer.prototype.width=function(){return this.pos-this.start},e.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},e.QueryLexer.prototype.backup=function(){this.pos-=1},e.QueryLexer.prototype.acceptDigitRun=function(){for(var t,r;47<(r=(t=this.next()).charCodeAt(0))&&r<58;);t!=e.QueryLexer.EOS&&this.backup()},e.QueryLexer.prototype.more=function(){return this.posscrollTop;)index-=1;for(;index ul.current"),_this.$navigation=_this.$el.parents(".menu-sticky-wrap"),_this.$container=_this.$el.parents(".row"),_this.listenTo(typedoc.viewport,"resize",_this.onResize),hasPositionSticky||_this.listenTo(typedoc.viewport,"scroll",_this.onScroll),_this.onResize(typedoc.viewport.width,typedoc.viewport.height),_this}return __extends(MenuSticky,_super),MenuSticky.prototype.setState=function(state){this.state!=state&&(""!=this.state&&this.$navigation.removeClass(this.state),this.state=state,""!=this.state&&this.$navigation.addClass(this.state))},MenuSticky.prototype.onResize=function(width,height){this.stickyMode=StickyMode.None,this.setState("");var containerTop=this.$container.offset().top,containerHeight=this.$container.height()||0,bottom=containerTop+containerHeight;if(this.$navigation.height()this.stickyBottom?this.setState("sticky-bottom"):this.setState(scrollTop+20>this.stickyTop?"sticky-current":""):this.stickyMode==StickyMode.Secondary&&(scrollTop>this.stickyBottom?this.setState("sticky-bottom"):this.setState(scrollTop+20>this.stickyTop?"sticky":""))},MenuSticky}(Backbone.View);typedoc.MenuSticky=MenuSticky,typedoc.registerComponent(MenuSticky,".menu-sticky")}(typedoc||(typedoc={})),function(typedoc){var search;!function(search){var SearchLoadingState;!function(SearchLoadingState){SearchLoadingState[SearchLoadingState.Idle=0]="Idle",SearchLoadingState[SearchLoadingState.Loading=1]="Loading",SearchLoadingState[SearchLoadingState.Ready=2]="Ready",SearchLoadingState[SearchLoadingState.Failure=3]="Failure"}(SearchLoadingState||(SearchLoadingState={}));var $el=$("#tsd-search"),$field=$("#tsd-search-field"),$results=$(".results"),base=$el.attr("data-base")+"/",query="",loadingState=SearchLoadingState.Idle,hasFocus=!1,preventPress=!1,index,resultClicked=!1;function createIndex(){var builder=new lunr.Builder;builder.pipeline.add(lunr.trimmer),builder.field("name",{boost:10}),builder.field("parent"),builder.ref("id");var rows=search.data.rows,pos=0,length=rows.length;!function batch(){for(var cycles=0;cycles++<100;)if(builder.add(rows[pos]),++pos==length)return index=builder.build(),setLoadingState(SearchLoadingState.Ready);setTimeout(batch,10)}()}function loadIndex(){loadingState==SearchLoadingState.Idle&&(setTimeout(function(){loadingState==SearchLoadingState.Idle&&setLoadingState(SearchLoadingState.Loading)},500),void 0!==search.data?createIndex():$.get($el.attr("data-index")).done(function(source){eval(source),createIndex()}).fail(function(){setLoadingState(SearchLoadingState.Failure)}))}function updateResults(){if($results.empty(),loadingState==SearchLoadingState.Ready&&query){var res=index.search("*"+query+"*");0===res.length&&(res=index.search("*"+query+"~1*"));for(var i=0,c=Math.min(10,res.length);i"+match+""}),parent=row.parent||"";(parent=parent.replace(new RegExp(query,"i"),function(match){return""+match+""}))&&(name=''+parent+"."+name),$results.append('
  • '+name+"
  • ")}}}function setLoadingState(value){loadingState!=value&&($el.removeClass(SearchLoadingState[loadingState].toLowerCase()),loadingState=value,$el.addClass(SearchLoadingState[loadingState].toLowerCase()),value==SearchLoadingState.Ready&&updateResults())}function setHasFocus(value){hasFocus!=value&&(hasFocus=value,$el.toggleClass("has-focus"),value?(setQuery(""),$field.val("")):$field.val(query))}function setQuery(value){query=$.trim(value),updateResults()}function setCurrentResult(dir){var $current=$results.find(".current");if(0==$current.length)$results.find(1==dir?"li:first-child":"li:last-child").addClass("current");else{var $rel=1==dir?$current.next("li"):$current.prev("li");0<$rel.length&&($current.removeClass("current"),$rel.addClass("current"))}}function gotoCurrentResult(){var $current=$results.find(".current");0==$current.length&&($current=$results.find("li:first-child")),0<$current.length&&(window.location.href=$current.find("a").prop("href"),$field.blur())}$results.on("mousedown",function(){resultClicked=!0}).on("mouseup",function(){setHasFocus(resultClicked=!1)}),$field.on("focusin",function(){setHasFocus(!0),loadIndex()}).on("focusout",function(){resultClicked?resultClicked=!1:setTimeout(function(){return setHasFocus(!1)},100)}).on("input",function(){setQuery($.trim(($field.val()||"").toString()))}).on("keydown",function(e){13==e.keyCode||27==e.keyCode||38==e.keyCode||40==e.keyCode?(preventPress=!0,e.preventDefault(),13==e.keyCode?gotoCurrentResult():27==e.keyCode?$field.blur():38==e.keyCode?setCurrentResult(-1):40==e.keyCode&&setCurrentResult(1)):preventPress=!1}).on("keypress",function(e){preventPress&&e.preventDefault()}),$("body").on("keydown",function(e){e.altKey||e.ctrlKey||e.metaKey||!hasFocus&&47this.groups.length-1&&(index=this.groups.length-1),this.index!=index){var to=this.groups[index];if(-1 .tsd-signature");if(!($signatures.length<2)){this.$container=this.$el.siblings(".tsd-descriptions");var $descriptions=this.$container.find("> .tsd-description");this.groups=[],$signatures.each(function(index,el){_this.groups.push(new SignatureGroup($(el),$descriptions.eq(index)))})}},Signature.prototype.onClick=function(e){var _this=this;e.preventDefault(),_(this.groups).forEach(function(group,index){group.$signature.is(e.currentTarget)&&_this.setIndex(index)})},Signature}(Backbone.View);typedoc.registerComponent(Signature,".tsd-signatures")}(typedoc||(typedoc={})),function(typedoc){var Toggle=function(_super){function Toggle(options){var _this=_super.call(this,options)||this;return _this.className=_this.$el.attr("data-toggle")||"",_this.$el.on(typedoc.pointerUp,function(e){return _this.onPointerUp(e)}),_this.$el.on("click",function(e){return e.preventDefault()}),typedoc.$document.on(typedoc.pointerDown,function(e){return _this.onDocumentPointerDown(e)}),typedoc.$document.on(typedoc.pointerUp,function(e){return _this.onDocumentPointerUp(e)}),_this}return __extends(Toggle,_super),Toggle.prototype.setActive=function(value){if(this.active!=value){this.active=value,typedoc.$html.toggleClass("has-"+this.className,value),this.$el.toggleClass("active",value);var transition=(this.active?"to-has-":"from-has-")+this.className;typedoc.$html.addClass(transition),setTimeout(function(){return typedoc.$html.removeClass(transition)},500)}},Toggle.prototype.onPointerUp=function(event){typedoc.hasPointerMoved||(this.setActive(!0),event.preventDefault())},Toggle.prototype.onDocumentPointerDown=function(e){if(this.active){var $path=$(e.target).parents().addBack();if($path.hasClass("col-menu"))return;if($path.hasClass("tsd-filter-group"))return;this.setActive(!1)}},Toggle.prototype.onDocumentPointerUp=function(e){var _this=this;if(!typedoc.hasPointerMoved&&this.active){var $path=$(e.target).parents().addBack();if($path.hasClass("col-menu")){var $link=$path.filter("a");if($link.length){var href=window.location.href;-1!=href.indexOf("#")&&(href=href.substr(0,href.indexOf("#"))),$link.prop("href").substr(0,href.length)==href&&setTimeout(function(){return _this.setActive(!1)},250)}}}},Toggle}(Backbone.View);typedoc.registerComponent(Toggle,"a[data-toggle]")}(typedoc||(typedoc={})),function(typedoc){typedoc.app=new typedoc.Application}(typedoc||(typedoc={})); \ No newline at end of file diff --git a/docs/assets/js/search.js b/docs/assets/js/search.js deleted file mode 100644 index a329daa2..00000000 --- a/docs/assets/js/search.js +++ /dev/null @@ -1,3 +0,0 @@ -var typedoc = typedoc || {}; - typedoc.search = typedoc.search || {}; - typedoc.search.data = {"kinds":{"32":"Variable","64":"Function","128":"Class","256":"Interface","512":"Constructor","1024":"Property","65536":"Type literal","262144":"Accessor","4194304":"Type alias"},"rows":[{"id":0,"kind":32,"name":"benchmark","url":"index.html#benchmark","classes":"tsd-kind-variable tsd-is-not-exported"},{"id":1,"kind":32,"name":"plt","url":"index.html#plt","classes":"tsd-kind-variable tsd-is-not-exported"},{"id":2,"kind":32,"name":"execSync","url":"index.html#execsync","classes":"tsd-kind-variable tsd-is-not-exported"},{"id":3,"kind":64,"name":"bench","url":"index.html#bench","classes":"tsd-kind-function"},{"id":4,"kind":256,"name":"INDArray","url":"interfaces/indarray.html","classes":"tsd-kind-interface"},{"id":5,"kind":1024,"name":"data","url":"interfaces/indarray.html#data","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"INDArray"},{"id":6,"kind":1024,"name":"dtype","url":"interfaces/indarray.html#dtype","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"INDArray"},{"id":7,"kind":1024,"name":"length","url":"interfaces/indarray.html#length","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"INDArray"},{"id":8,"kind":1024,"name":"shape","url":"interfaces/indarray.html#shape","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"INDArray"},{"id":9,"kind":4194304,"name":"TypedArray","url":"index.html#typedarray","classes":"tsd-kind-type-alias"},{"id":10,"kind":4194304,"name":"TypedArrayConstructor","url":"index.html#typedarrayconstructor","classes":"tsd-kind-type-alias"},{"id":11,"kind":4194304,"name":"DType","url":"index.html#dtype","classes":"tsd-kind-type-alias"},{"id":12,"kind":64,"name":"flatten","url":"index.html#flatten","classes":"tsd-kind-function"},{"id":13,"kind":64,"name":"get_shape","url":"index.html#get_shape","classes":"tsd-kind-function"},{"id":14,"kind":64,"name":"get_dtype","url":"index.html#get_dtype","classes":"tsd-kind-function"},{"id":15,"kind":64,"name":"get_type","url":"index.html#get_type","classes":"tsd-kind-function"},{"id":16,"kind":64,"name":"is_typed_array","url":"index.html#is_typed_array","classes":"tsd-kind-function"},{"id":17,"kind":32,"name":"nblas","url":"index.html#nblas","classes":"tsd-kind-variable tsd-is-not-exported"},{"id":18,"kind":32,"name":"nlapack","url":"index.html#nlapack","classes":"tsd-kind-variable tsd-is-not-exported"},{"id":19,"kind":64,"name":"rotate","url":"index.html#rotate","classes":"tsd-kind-function tsd-has-type-parameter tsd-is-not-exported"},{"id":20,"kind":64,"name":"magicHelper","url":"index.html#magichelper","classes":"tsd-kind-function tsd-is-not-exported"},{"id":21,"kind":128,"name":"NDArray","url":"classes/ndarray.html","classes":"tsd-kind-class"},{"id":22,"kind":1024,"name":"abs","url":"classes/ndarray.html#abs-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":23,"kind":65536,"name":"__type","url":"classes/ndarray.html#abs-1.__type-79","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.abs"},{"id":24,"kind":1024,"name":"acos","url":"classes/ndarray.html#acos-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":25,"kind":65536,"name":"__type","url":"classes/ndarray.html#acos-1.__type-80","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.acos"},{"id":26,"kind":1024,"name":"acosh","url":"classes/ndarray.html#acosh-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":27,"kind":65536,"name":"__type","url":"classes/ndarray.html#acosh-1.__type-81","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.acosh"},{"id":28,"kind":1024,"name":"add","url":"classes/ndarray.html#add-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":29,"kind":65536,"name":"__type","url":"classes/ndarray.html#add-1.__type-82","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.add"},{"id":30,"kind":1024,"name":"angle","url":"classes/ndarray.html#angle-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":31,"kind":65536,"name":"__type","url":"classes/ndarray.html#angle-1.__type-83","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.angle"},{"id":32,"kind":1024,"name":"array","url":"classes/ndarray.html#array","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":33,"kind":65536,"name":"__type","url":"classes/ndarray.html#array.__type-84","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.array"},{"id":34,"kind":1024,"name":"asin","url":"classes/ndarray.html#asin-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":35,"kind":65536,"name":"__type","url":"classes/ndarray.html#asin-1.__type-85","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.asin"},{"id":36,"kind":1024,"name":"asinh","url":"classes/ndarray.html#asinh-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":37,"kind":65536,"name":"__type","url":"classes/ndarray.html#asinh-1.__type-86","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.asinh"},{"id":38,"kind":1024,"name":"atan","url":"classes/ndarray.html#atan-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":39,"kind":65536,"name":"__type","url":"classes/ndarray.html#atan-1.__type-87","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.atan"},{"id":40,"kind":1024,"name":"atanh","url":"classes/ndarray.html#atanh-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":41,"kind":65536,"name":"__type","url":"classes/ndarray.html#atanh-1.__type-88","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.atanh"},{"id":42,"kind":1024,"name":"augment","url":"classes/ndarray.html#augment-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":43,"kind":65536,"name":"__type","url":"classes/ndarray.html#augment-1.__type-89","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.augment"},{"id":44,"kind":1024,"name":"binOp","url":"classes/ndarray.html#binop-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":45,"kind":65536,"name":"__type","url":"classes/ndarray.html#binop-1.__type-90","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.binOp"},{"id":46,"kind":1024,"name":"cbrt","url":"classes/ndarray.html#cbrt-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":47,"kind":65536,"name":"__type","url":"classes/ndarray.html#cbrt-1.__type-91","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.cbrt"},{"id":48,"kind":1024,"name":"ceil","url":"classes/ndarray.html#ceil-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":49,"kind":65536,"name":"__type","url":"classes/ndarray.html#ceil-1.__type-92","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.ceil"},{"id":50,"kind":1024,"name":"check","url":"classes/ndarray.html#check-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":51,"kind":65536,"name":"__type","url":"classes/ndarray.html#check-1.__type-93","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.check"},{"id":52,"kind":1024,"name":"combine","url":"classes/ndarray.html#combine-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":53,"kind":65536,"name":"__type","url":"classes/ndarray.html#combine-1.__type-94","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.combine"},{"id":54,"kind":1024,"name":"copy","url":"classes/ndarray.html#copy-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":55,"kind":65536,"name":"__type","url":"classes/ndarray.html#copy-1.__type-95","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.copy"},{"id":56,"kind":1024,"name":"cos","url":"classes/ndarray.html#cos-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":57,"kind":65536,"name":"__type","url":"classes/ndarray.html#cos-1.__type-96","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.cos"},{"id":58,"kind":1024,"name":"cosh","url":"classes/ndarray.html#cosh-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":59,"kind":65536,"name":"__type","url":"classes/ndarray.html#cosh-1.__type-97","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.cosh"},{"id":60,"kind":1024,"name":"cross","url":"classes/ndarray.html#cross-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":61,"kind":65536,"name":"__type","url":"classes/ndarray.html#cross-1.__type-98","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.cross"},{"id":62,"kind":1024,"name":"det","url":"classes/ndarray.html#det-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":63,"kind":65536,"name":"__type","url":"classes/ndarray.html#det-1.__type-99","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.det"},{"id":64,"kind":1024,"name":"diagonal","url":"classes/ndarray.html#diagonal-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":65,"kind":65536,"name":"__type","url":"classes/ndarray.html#diagonal-1.__type-100","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.diagonal"},{"id":66,"kind":1024,"name":"dot","url":"classes/ndarray.html#dot-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":67,"kind":65536,"name":"__type","url":"classes/ndarray.html#dot-1.__type-101","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.dot"},{"id":68,"kind":1024,"name":"eig","url":"classes/ndarray.html#eig-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":69,"kind":65536,"name":"__type","url":"classes/ndarray.html#eig-1.__type-102","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.eig"},{"id":70,"kind":1024,"name":"equals","url":"classes/ndarray.html#equals-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":71,"kind":65536,"name":"__type","url":"classes/ndarray.html#equals-1.__type-103","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.equals"},{"id":72,"kind":1024,"name":"equidimensional","url":"classes/ndarray.html#equidimensional-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":73,"kind":65536,"name":"__type","url":"classes/ndarray.html#equidimensional-1.__type-104","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.equidimensional"},{"id":74,"kind":1024,"name":"equilateral","url":"classes/ndarray.html#equilateral-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":75,"kind":65536,"name":"__type","url":"classes/ndarray.html#equilateral-1.__type-105","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.equilateral"},{"id":76,"kind":1024,"name":"exp","url":"classes/ndarray.html#exp-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":77,"kind":65536,"name":"__type","url":"classes/ndarray.html#exp-1.__type-106","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.exp"},{"id":78,"kind":1024,"name":"expm1","url":"classes/ndarray.html#expm1-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":79,"kind":65536,"name":"__type","url":"classes/ndarray.html#expm1-1.__type-107","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.expm1"},{"id":80,"kind":1024,"name":"eye","url":"classes/ndarray.html#eye","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":81,"kind":65536,"name":"__type","url":"classes/ndarray.html#eye.__type-108","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.eye"},{"id":82,"kind":1024,"name":"fill","url":"classes/ndarray.html#fill-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":83,"kind":65536,"name":"__type","url":"classes/ndarray.html#fill-1.__type-109","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.fill"},{"id":84,"kind":1024,"name":"floor","url":"classes/ndarray.html#floor-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":85,"kind":65536,"name":"__type","url":"classes/ndarray.html#floor-1.__type-110","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.floor"},{"id":86,"kind":1024,"name":"forEach","url":"classes/ndarray.html#foreach-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":87,"kind":65536,"name":"__type","url":"classes/ndarray.html#foreach-1.__type-111","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.forEach"},{"id":88,"kind":1024,"name":"fround","url":"classes/ndarray.html#fround-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":89,"kind":65536,"name":"__type","url":"classes/ndarray.html#fround-1.__type-112","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.fround"},{"id":90,"kind":1024,"name":"gauss","url":"classes/ndarray.html#gauss-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":91,"kind":65536,"name":"__type","url":"classes/ndarray.html#gauss-1.__type-113","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.gauss"},{"id":92,"kind":1024,"name":"get","url":"classes/ndarray.html#get-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":93,"kind":65536,"name":"__type","url":"classes/ndarray.html#get-1.__type-114","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.get"},{"id":94,"kind":1024,"name":"inv","url":"classes/ndarray.html#inv-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":95,"kind":65536,"name":"__type","url":"classes/ndarray.html#inv-1.__type-115","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.inv"},{"id":96,"kind":1024,"name":"log","url":"classes/ndarray.html#log-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":97,"kind":65536,"name":"__type","url":"classes/ndarray.html#log-1.__type-116","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.log"},{"id":98,"kind":1024,"name":"log10","url":"classes/ndarray.html#log10-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":99,"kind":65536,"name":"__type","url":"classes/ndarray.html#log10-1.__type-117","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.log10"},{"id":100,"kind":1024,"name":"log1p","url":"classes/ndarray.html#log1p-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":101,"kind":65536,"name":"__type","url":"classes/ndarray.html#log1p-1.__type-118","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.log1p"},{"id":102,"kind":1024,"name":"log2","url":"classes/ndarray.html#log2-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":103,"kind":65536,"name":"__type","url":"classes/ndarray.html#log2-1.__type-119","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.log2"},{"id":104,"kind":1024,"name":"lu","url":"classes/ndarray.html#lu-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":105,"kind":65536,"name":"__type","url":"classes/ndarray.html#lu-1.__type-120","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.lu"},{"id":106,"kind":1024,"name":"lu_factor","url":"classes/ndarray.html#lu_factor-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":107,"kind":65536,"name":"__type","url":"classes/ndarray.html#lu_factor-1.__type-121","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.lu_factor"},{"id":108,"kind":1024,"name":"magic","url":"classes/ndarray.html#magic","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":109,"kind":65536,"name":"__type","url":"classes/ndarray.html#magic.__type-122","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.magic"},{"id":110,"kind":1024,"name":"map","url":"classes/ndarray.html#map-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":111,"kind":65536,"name":"__type","url":"classes/ndarray.html#map-1.__type-123","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.map"},{"id":112,"kind":1024,"name":"matrix","url":"classes/ndarray.html#matrix","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":113,"kind":65536,"name":"__type","url":"classes/ndarray.html#matrix.__type-124","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.matrix"},{"id":114,"kind":1024,"name":"max","url":"classes/ndarray.html#max-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":115,"kind":65536,"name":"__type","url":"classes/ndarray.html#max-1.__type-125","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.max"},{"id":116,"kind":1024,"name":"mean","url":"classes/ndarray.html#mean-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":117,"kind":65536,"name":"__type","url":"classes/ndarray.html#mean-1.__type-126","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.mean"},{"id":118,"kind":1024,"name":"min","url":"classes/ndarray.html#min-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":119,"kind":65536,"name":"__type","url":"classes/ndarray.html#min-1.__type-127","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.min"},{"id":120,"kind":1024,"name":"multiply","url":"classes/ndarray.html#multiply-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":121,"kind":65536,"name":"__type","url":"classes/ndarray.html#multiply-1.__type-128","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.multiply"},{"id":122,"kind":1024,"name":"norm","url":"classes/ndarray.html#norm-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":123,"kind":65536,"name":"__type","url":"classes/ndarray.html#norm-1.__type-129","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.norm"},{"id":124,"kind":1024,"name":"normalize","url":"classes/ndarray.html#normalize-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":125,"kind":65536,"name":"__type","url":"classes/ndarray.html#normalize-1.__type-130","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.normalize"},{"id":126,"kind":1024,"name":"ones","url":"classes/ndarray.html#ones","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":127,"kind":65536,"name":"__type","url":"classes/ndarray.html#ones.__type-131","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.ones"},{"id":128,"kind":1024,"name":"pow","url":"classes/ndarray.html#pow-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":129,"kind":65536,"name":"__type","url":"classes/ndarray.html#pow-1.__type-132","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.pow"},{"id":130,"kind":1024,"name":"prod","url":"classes/ndarray.html#prod-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":131,"kind":65536,"name":"__type","url":"classes/ndarray.html#prod-1.__type-133","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.prod"},{"id":132,"kind":1024,"name":"product","url":"classes/ndarray.html#product-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":133,"kind":65536,"name":"__type","url":"classes/ndarray.html#product-1.__type-134","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.product"},{"id":134,"kind":1024,"name":"project","url":"classes/ndarray.html#project-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":135,"kind":65536,"name":"__type","url":"classes/ndarray.html#project-1.__type-135","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.project"},{"id":136,"kind":1024,"name":"push","url":"classes/ndarray.html#push-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":137,"kind":65536,"name":"__type","url":"classes/ndarray.html#push-1.__type-136","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.push"},{"id":138,"kind":1024,"name":"random","url":"classes/ndarray.html#random","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":139,"kind":65536,"name":"__type","url":"classes/ndarray.html#random.__type-137","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.random"},{"id":140,"kind":1024,"name":"range","url":"classes/ndarray.html#range","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":141,"kind":65536,"name":"__type","url":"classes/ndarray.html#range.__type-138","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.range"},{"id":142,"kind":1024,"name":"rank","url":"classes/ndarray.html#rank-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":143,"kind":65536,"name":"__type","url":"classes/ndarray.html#rank-1.__type-139","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.rank"},{"id":144,"kind":1024,"name":"reciprocal","url":"classes/ndarray.html#reciprocal-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":145,"kind":65536,"name":"__type","url":"classes/ndarray.html#reciprocal-1.__type-140","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.reciprocal"},{"id":146,"kind":1024,"name":"reduce","url":"classes/ndarray.html#reduce-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":147,"kind":65536,"name":"__type","url":"classes/ndarray.html#reduce-1.__type-141","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.reduce"},{"id":148,"kind":1024,"name":"reshape","url":"classes/ndarray.html#reshape-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":149,"kind":65536,"name":"__type","url":"classes/ndarray.html#reshape-1.__type-142","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.reshape"},{"id":150,"kind":1024,"name":"round","url":"classes/ndarray.html#round-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":151,"kind":65536,"name":"__type","url":"classes/ndarray.html#round-1.__type-143","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.round"},{"id":152,"kind":1024,"name":"row_add","url":"classes/ndarray.html#row_add-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":153,"kind":65536,"name":"__type","url":"classes/ndarray.html#row_add-1.__type-144","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.row_add"},{"id":154,"kind":1024,"name":"scale","url":"classes/ndarray.html#scale-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":155,"kind":65536,"name":"__type","url":"classes/ndarray.html#scale-1.__type-145","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.scale"},{"id":156,"kind":1024,"name":"set","url":"classes/ndarray.html#set-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":157,"kind":65536,"name":"__type","url":"classes/ndarray.html#set-1.__type-146","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.set"},{"id":158,"kind":1024,"name":"sign","url":"classes/ndarray.html#sign-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":159,"kind":65536,"name":"__type","url":"classes/ndarray.html#sign-1.__type-147","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.sign"},{"id":160,"kind":1024,"name":"sin","url":"classes/ndarray.html#sin-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":161,"kind":65536,"name":"__type","url":"classes/ndarray.html#sin-1.__type-148","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.sin"},{"id":162,"kind":1024,"name":"sinh","url":"classes/ndarray.html#sinh-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":163,"kind":65536,"name":"__type","url":"classes/ndarray.html#sinh-1.__type-149","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.sinh"},{"id":164,"kind":1024,"name":"slice","url":"classes/ndarray.html#slice-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":165,"kind":65536,"name":"__type","url":"classes/ndarray.html#slice-1.__type-150","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.slice"},{"id":166,"kind":1024,"name":"solve","url":"classes/ndarray.html#solve-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":167,"kind":65536,"name":"__type","url":"classes/ndarray.html#solve-1.__type-151","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.solve"},{"id":168,"kind":1024,"name":"sqrt","url":"classes/ndarray.html#sqrt-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":169,"kind":65536,"name":"__type","url":"classes/ndarray.html#sqrt-1.__type-152","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.sqrt"},{"id":170,"kind":1024,"name":"square","url":"classes/ndarray.html#square-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":171,"kind":65536,"name":"__type","url":"classes/ndarray.html#square-1.__type-153","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.square"},{"id":172,"kind":1024,"name":"subtract","url":"classes/ndarray.html#subtract-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":173,"kind":65536,"name":"__type","url":"classes/ndarray.html#subtract-1.__type-154","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.subtract"},{"id":174,"kind":1024,"name":"sum","url":"classes/ndarray.html#sum-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":175,"kind":65536,"name":"__type","url":"classes/ndarray.html#sum-1.__type-155","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.sum"},{"id":176,"kind":1024,"name":"swap","url":"classes/ndarray.html#swap-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":177,"kind":65536,"name":"__type","url":"classes/ndarray.html#swap-1.__type-156","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.swap"},{"id":178,"kind":1024,"name":"tan","url":"classes/ndarray.html#tan-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":179,"kind":65536,"name":"__type","url":"classes/ndarray.html#tan-1.__type-157","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.tan"},{"id":180,"kind":1024,"name":"tanh","url":"classes/ndarray.html#tanh-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":181,"kind":65536,"name":"__type","url":"classes/ndarray.html#tanh-1.__type-158","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.tanh"},{"id":182,"kind":1024,"name":"toArray","url":"classes/ndarray.html#toarray-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":183,"kind":65536,"name":"__type","url":"classes/ndarray.html#toarray-1.__type-159","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.toArray"},{"id":184,"kind":1024,"name":"toString","url":"classes/ndarray.html#tostring-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":185,"kind":65536,"name":"__type","url":"classes/ndarray.html#tostring-1.__type-160","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.toString"},{"id":186,"kind":1024,"name":"trace","url":"classes/ndarray.html#trace-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":187,"kind":65536,"name":"__type","url":"classes/ndarray.html#trace-1.__type-161","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.trace"},{"id":188,"kind":1024,"name":"transpose","url":"classes/ndarray.html#transpose-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":189,"kind":65536,"name":"__type","url":"classes/ndarray.html#transpose-1.__type-162","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.transpose"},{"id":190,"kind":1024,"name":"trunc","url":"classes/ndarray.html#trunc-1","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":191,"kind":65536,"name":"__type","url":"classes/ndarray.html#trunc-1.__type-163","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.trunc"},{"id":192,"kind":1024,"name":"zeros","url":"classes/ndarray.html#zeros","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-static","parent":"NDArray"},{"id":193,"kind":65536,"name":"__type","url":"classes/ndarray.html#zeros.__type-164","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.zeros"},{"id":194,"kind":1024,"name":"__computed","url":"classes/ndarray.html#__computed","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":195,"kind":65536,"name":"__type","url":"classes/ndarray.html#__computed.__type","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.__computed"},{"id":196,"kind":1024,"name":"abs","url":"classes/ndarray.html#abs","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":197,"kind":65536,"name":"__type","url":"classes/ndarray.html#abs.__type-1","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.abs"},{"id":198,"kind":1024,"name":"acos","url":"classes/ndarray.html#acos","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":199,"kind":65536,"name":"__type","url":"classes/ndarray.html#acos.__type-2","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.acos"},{"id":200,"kind":1024,"name":"acosh","url":"classes/ndarray.html#acosh","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":201,"kind":65536,"name":"__type","url":"classes/ndarray.html#acosh.__type-3","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.acosh"},{"id":202,"kind":1024,"name":"add","url":"classes/ndarray.html#add","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":203,"kind":65536,"name":"__type","url":"classes/ndarray.html#add.__type-4","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.add"},{"id":204,"kind":1024,"name":"angle","url":"classes/ndarray.html#angle","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":205,"kind":65536,"name":"__type","url":"classes/ndarray.html#angle.__type-5","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.angle"},{"id":206,"kind":1024,"name":"asin","url":"classes/ndarray.html#asin","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":207,"kind":65536,"name":"__type","url":"classes/ndarray.html#asin.__type-6","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.asin"},{"id":208,"kind":1024,"name":"asinh","url":"classes/ndarray.html#asinh","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":209,"kind":65536,"name":"__type","url":"classes/ndarray.html#asinh.__type-7","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.asinh"},{"id":210,"kind":1024,"name":"atan","url":"classes/ndarray.html#atan","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":211,"kind":65536,"name":"__type","url":"classes/ndarray.html#atan.__type-8","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.atan"},{"id":212,"kind":1024,"name":"atanh","url":"classes/ndarray.html#atanh","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":213,"kind":65536,"name":"__type","url":"classes/ndarray.html#atanh.__type-9","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.atanh"},{"id":214,"kind":1024,"name":"augment","url":"classes/ndarray.html#augment","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":215,"kind":65536,"name":"__type","url":"classes/ndarray.html#augment.__type-10","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.augment"},{"id":216,"kind":1024,"name":"binOp","url":"classes/ndarray.html#binop","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":217,"kind":65536,"name":"__type","url":"classes/ndarray.html#binop.__type-11","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.binOp"},{"id":218,"kind":1024,"name":"cbrt","url":"classes/ndarray.html#cbrt","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":219,"kind":65536,"name":"__type","url":"classes/ndarray.html#cbrt.__type-12","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.cbrt"},{"id":220,"kind":1024,"name":"ceil","url":"classes/ndarray.html#ceil","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":221,"kind":65536,"name":"__type","url":"classes/ndarray.html#ceil.__type-13","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.ceil"},{"id":222,"kind":1024,"name":"check","url":"classes/ndarray.html#check","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":223,"kind":65536,"name":"__type","url":"classes/ndarray.html#check.__type-14","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.check"},{"id":224,"kind":1024,"name":"combine","url":"classes/ndarray.html#combine","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":225,"kind":65536,"name":"__type","url":"classes/ndarray.html#combine.__type-15","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.combine"},{"id":226,"kind":1024,"name":"copy","url":"classes/ndarray.html#copy","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":227,"kind":65536,"name":"__type","url":"classes/ndarray.html#copy.__type-16","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.copy"},{"id":228,"kind":1024,"name":"cos","url":"classes/ndarray.html#cos","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":229,"kind":65536,"name":"__type","url":"classes/ndarray.html#cos.__type-17","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.cos"},{"id":230,"kind":1024,"name":"cosh","url":"classes/ndarray.html#cosh","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":231,"kind":65536,"name":"__type","url":"classes/ndarray.html#cosh.__type-18","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.cosh"},{"id":232,"kind":1024,"name":"cross","url":"classes/ndarray.html#cross","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":233,"kind":65536,"name":"__type","url":"classes/ndarray.html#cross.__type-19","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.cross"},{"id":234,"kind":1024,"name":"data","url":"classes/ndarray.html#data","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":235,"kind":1024,"name":"det","url":"classes/ndarray.html#det","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":236,"kind":65536,"name":"__type","url":"classes/ndarray.html#det.__type-20","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.det"},{"id":237,"kind":1024,"name":"diagonal","url":"classes/ndarray.html#diagonal","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":238,"kind":65536,"name":"__type","url":"classes/ndarray.html#diagonal.__type-21","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.diagonal"},{"id":239,"kind":1024,"name":"dot","url":"classes/ndarray.html#dot","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":240,"kind":65536,"name":"__type","url":"classes/ndarray.html#dot.__type-22","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.dot"},{"id":241,"kind":1024,"name":"dtype","url":"classes/ndarray.html#dtype","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":242,"kind":1024,"name":"eig","url":"classes/ndarray.html#eig","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":243,"kind":65536,"name":"__type","url":"classes/ndarray.html#eig.__type-23","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.eig"},{"id":244,"kind":1024,"name":"equals","url":"classes/ndarray.html#equals","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":245,"kind":65536,"name":"__type","url":"classes/ndarray.html#equals.__type-24","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.equals"},{"id":246,"kind":1024,"name":"equidimensional","url":"classes/ndarray.html#equidimensional","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":247,"kind":65536,"name":"__type","url":"classes/ndarray.html#equidimensional.__type-25","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.equidimensional"},{"id":248,"kind":1024,"name":"equilateral","url":"classes/ndarray.html#equilateral","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":249,"kind":65536,"name":"__type","url":"classes/ndarray.html#equilateral.__type-26","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.equilateral"},{"id":250,"kind":1024,"name":"exp","url":"classes/ndarray.html#exp","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":251,"kind":65536,"name":"__type","url":"classes/ndarray.html#exp.__type-27","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.exp"},{"id":252,"kind":1024,"name":"expm1","url":"classes/ndarray.html#expm1","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":253,"kind":65536,"name":"__type","url":"classes/ndarray.html#expm1.__type-28","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.expm1"},{"id":254,"kind":1024,"name":"fill","url":"classes/ndarray.html#fill","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":255,"kind":65536,"name":"__type","url":"classes/ndarray.html#fill.__type-29","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.fill"},{"id":256,"kind":1024,"name":"floor","url":"classes/ndarray.html#floor","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":257,"kind":65536,"name":"__type","url":"classes/ndarray.html#floor.__type-30","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.floor"},{"id":258,"kind":1024,"name":"forEach","url":"classes/ndarray.html#foreach","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":259,"kind":65536,"name":"__type","url":"classes/ndarray.html#foreach.__type-31","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.forEach"},{"id":260,"kind":1024,"name":"fround","url":"classes/ndarray.html#fround","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":261,"kind":65536,"name":"__type","url":"classes/ndarray.html#fround.__type-32","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.fround"},{"id":262,"kind":1024,"name":"gauss","url":"classes/ndarray.html#gauss","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":263,"kind":65536,"name":"__type","url":"classes/ndarray.html#gauss.__type-33","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.gauss"},{"id":264,"kind":1024,"name":"get","url":"classes/ndarray.html#get","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":265,"kind":65536,"name":"__type","url":"classes/ndarray.html#get.__type-34","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.get"},{"id":266,"kind":1024,"name":"inv","url":"classes/ndarray.html#inv","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":267,"kind":65536,"name":"__type","url":"classes/ndarray.html#inv.__type-35","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.inv"},{"id":268,"kind":1024,"name":"length","url":"classes/ndarray.html#length","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":269,"kind":1024,"name":"log","url":"classes/ndarray.html#log","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":270,"kind":65536,"name":"__type","url":"classes/ndarray.html#log.__type-36","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.log"},{"id":271,"kind":1024,"name":"log10","url":"classes/ndarray.html#log10","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":272,"kind":65536,"name":"__type","url":"classes/ndarray.html#log10.__type-37","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.log10"},{"id":273,"kind":1024,"name":"log1p","url":"classes/ndarray.html#log1p","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":274,"kind":65536,"name":"__type","url":"classes/ndarray.html#log1p.__type-38","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.log1p"},{"id":275,"kind":1024,"name":"log2","url":"classes/ndarray.html#log2","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":276,"kind":65536,"name":"__type","url":"classes/ndarray.html#log2.__type-39","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.log2"},{"id":277,"kind":1024,"name":"lu","url":"classes/ndarray.html#lu","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":278,"kind":65536,"name":"__type","url":"classes/ndarray.html#lu.__type-40","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.lu"},{"id":279,"kind":1024,"name":"lu_factor","url":"classes/ndarray.html#lu_factor","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":280,"kind":65536,"name":"__type","url":"classes/ndarray.html#lu_factor.__type-41","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.lu_factor"},{"id":281,"kind":1024,"name":"map","url":"classes/ndarray.html#map","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":282,"kind":65536,"name":"__type","url":"classes/ndarray.html#map.__type-42","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.map"},{"id":283,"kind":1024,"name":"max","url":"classes/ndarray.html#max","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":284,"kind":65536,"name":"__type","url":"classes/ndarray.html#max.__type-43","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.max"},{"id":285,"kind":1024,"name":"mean","url":"classes/ndarray.html#mean","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":286,"kind":65536,"name":"__type","url":"classes/ndarray.html#mean.__type-44","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.mean"},{"id":287,"kind":1024,"name":"min","url":"classes/ndarray.html#min","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":288,"kind":65536,"name":"__type","url":"classes/ndarray.html#min.__type-45","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.min"},{"id":289,"kind":1024,"name":"multiply","url":"classes/ndarray.html#multiply","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":290,"kind":65536,"name":"__type","url":"classes/ndarray.html#multiply.__type-46","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.multiply"},{"id":291,"kind":1024,"name":"norm","url":"classes/ndarray.html#norm","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":292,"kind":65536,"name":"__type","url":"classes/ndarray.html#norm.__type-47","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.norm"},{"id":293,"kind":1024,"name":"normalize","url":"classes/ndarray.html#normalize","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":294,"kind":65536,"name":"__type","url":"classes/ndarray.html#normalize.__type-48","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.normalize"},{"id":295,"kind":1024,"name":"pow","url":"classes/ndarray.html#pow","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":296,"kind":65536,"name":"__type","url":"classes/ndarray.html#pow.__type-49","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.pow"},{"id":297,"kind":1024,"name":"prod","url":"classes/ndarray.html#prod","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":298,"kind":65536,"name":"__type","url":"classes/ndarray.html#prod.__type-50","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.prod"},{"id":299,"kind":1024,"name":"product","url":"classes/ndarray.html#product","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":300,"kind":65536,"name":"__type","url":"classes/ndarray.html#product.__type-51","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.product"},{"id":301,"kind":1024,"name":"project","url":"classes/ndarray.html#project","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":302,"kind":65536,"name":"__type","url":"classes/ndarray.html#project.__type-52","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.project"},{"id":303,"kind":1024,"name":"push","url":"classes/ndarray.html#push","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":304,"kind":65536,"name":"__type","url":"classes/ndarray.html#push.__type-53","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.push"},{"id":305,"kind":1024,"name":"rank","url":"classes/ndarray.html#rank","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":306,"kind":65536,"name":"__type","url":"classes/ndarray.html#rank.__type-54","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.rank"},{"id":307,"kind":1024,"name":"reciprocal","url":"classes/ndarray.html#reciprocal","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":308,"kind":65536,"name":"__type","url":"classes/ndarray.html#reciprocal.__type-55","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.reciprocal"},{"id":309,"kind":1024,"name":"reduce","url":"classes/ndarray.html#reduce","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":310,"kind":65536,"name":"__type","url":"classes/ndarray.html#reduce.__type-56","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.reduce"},{"id":311,"kind":1024,"name":"reshape","url":"classes/ndarray.html#reshape","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":312,"kind":65536,"name":"__type","url":"classes/ndarray.html#reshape.__type-57","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.reshape"},{"id":313,"kind":1024,"name":"round","url":"classes/ndarray.html#round","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":314,"kind":65536,"name":"__type","url":"classes/ndarray.html#round.__type-58","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.round"},{"id":315,"kind":1024,"name":"row_add","url":"classes/ndarray.html#row_add","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":316,"kind":65536,"name":"__type","url":"classes/ndarray.html#row_add.__type-59","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.row_add"},{"id":317,"kind":1024,"name":"scale","url":"classes/ndarray.html#scale","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":318,"kind":65536,"name":"__type","url":"classes/ndarray.html#scale.__type-60","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.scale"},{"id":319,"kind":1024,"name":"set","url":"classes/ndarray.html#set","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":320,"kind":65536,"name":"__type","url":"classes/ndarray.html#set.__type-61","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.set"},{"id":321,"kind":1024,"name":"shape","url":"classes/ndarray.html#shape","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":322,"kind":1024,"name":"sign","url":"classes/ndarray.html#sign","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":323,"kind":65536,"name":"__type","url":"classes/ndarray.html#sign.__type-62","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.sign"},{"id":324,"kind":1024,"name":"sin","url":"classes/ndarray.html#sin","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":325,"kind":65536,"name":"__type","url":"classes/ndarray.html#sin.__type-63","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.sin"},{"id":326,"kind":1024,"name":"sinh","url":"classes/ndarray.html#sinh","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":327,"kind":65536,"name":"__type","url":"classes/ndarray.html#sinh.__type-64","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.sinh"},{"id":328,"kind":1024,"name":"slice","url":"classes/ndarray.html#slice","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":329,"kind":65536,"name":"__type","url":"classes/ndarray.html#slice.__type-65","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.slice"},{"id":330,"kind":1024,"name":"solve","url":"classes/ndarray.html#solve","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":331,"kind":65536,"name":"__type","url":"classes/ndarray.html#solve.__type-66","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.solve"},{"id":332,"kind":1024,"name":"sqrt","url":"classes/ndarray.html#sqrt","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":333,"kind":65536,"name":"__type","url":"classes/ndarray.html#sqrt.__type-67","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.sqrt"},{"id":334,"kind":1024,"name":"square","url":"classes/ndarray.html#square","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":335,"kind":65536,"name":"__type","url":"classes/ndarray.html#square.__type-68","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.square"},{"id":336,"kind":1024,"name":"subtract","url":"classes/ndarray.html#subtract","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":337,"kind":65536,"name":"__type","url":"classes/ndarray.html#subtract.__type-69","classes":"tsd-kind-type-literal tsd-parent-kind-property tsd-has-type-parameter","parent":"NDArray.subtract"},{"id":338,"kind":1024,"name":"sum","url":"classes/ndarray.html#sum","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":339,"kind":65536,"name":"__type","url":"classes/ndarray.html#sum.__type-70","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.sum"},{"id":340,"kind":1024,"name":"swap","url":"classes/ndarray.html#swap","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":341,"kind":65536,"name":"__type","url":"classes/ndarray.html#swap.__type-71","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.swap"},{"id":342,"kind":1024,"name":"tan","url":"classes/ndarray.html#tan","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":343,"kind":65536,"name":"__type","url":"classes/ndarray.html#tan.__type-72","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.tan"},{"id":344,"kind":1024,"name":"tanh","url":"classes/ndarray.html#tanh","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":345,"kind":65536,"name":"__type","url":"classes/ndarray.html#tanh.__type-73","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.tanh"},{"id":346,"kind":1024,"name":"toArray","url":"classes/ndarray.html#toarray","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":347,"kind":65536,"name":"__type","url":"classes/ndarray.html#toarray.__type-74","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.toArray"},{"id":348,"kind":1024,"name":"toString","url":"classes/ndarray.html#tostring","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":349,"kind":65536,"name":"__type","url":"classes/ndarray.html#tostring.__type-75","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.toString"},{"id":350,"kind":1024,"name":"trace","url":"classes/ndarray.html#trace","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":351,"kind":65536,"name":"__type","url":"classes/ndarray.html#trace.__type-76","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.trace"},{"id":352,"kind":1024,"name":"transpose","url":"classes/ndarray.html#transpose","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":353,"kind":65536,"name":"__type","url":"classes/ndarray.html#transpose.__type-77","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.transpose"},{"id":354,"kind":1024,"name":"trunc","url":"classes/ndarray.html#trunc","classes":"tsd-kind-property tsd-parent-kind-class","parent":"NDArray"},{"id":355,"kind":65536,"name":"__type","url":"classes/ndarray.html#trunc.__type-78","classes":"tsd-kind-type-literal tsd-parent-kind-property","parent":"NDArray.trunc"},{"id":356,"kind":512,"name":"constructor","url":"classes/ndarray.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"NDArray"},{"id":357,"kind":262144,"name":"x","url":"classes/ndarray.html#x","classes":"tsd-kind-accessor tsd-parent-kind-class","parent":"NDArray"},{"id":358,"kind":262144,"name":"y","url":"classes/ndarray.html#y","classes":"tsd-kind-accessor tsd-parent-kind-class","parent":"NDArray"},{"id":359,"kind":262144,"name":"z","url":"classes/ndarray.html#z","classes":"tsd-kind-accessor tsd-parent-kind-class","parent":"NDArray"},{"id":360,"kind":262144,"name":"w","url":"classes/ndarray.html#w","classes":"tsd-kind-accessor tsd-parent-kind-class","parent":"NDArray"},{"id":361,"kind":262144,"name":"T","url":"classes/ndarray.html#t","classes":"tsd-kind-get-signature tsd-parent-kind-class","parent":"NDArray"},{"id":362,"kind":32,"name":"inspectSymbol","url":"index.html#inspectsymbol","classes":"tsd-kind-variable"},{"id":363,"kind":32,"name":"floor","url":"index.html#floor","classes":"tsd-kind-variable tsd-is-not-exported"},{"id":364,"kind":32,"name":"sqrt","url":"index.html#sqrt","classes":"tsd-kind-variable tsd-is-not-exported"},{"id":365,"kind":32,"name":"random","url":"index.html#random","classes":"tsd-kind-variable tsd-is-not-exported"},{"id":366,"kind":64,"name":"r","url":"index.html#r","classes":"tsd-kind-function tsd-is-not-exported"}]}; \ No newline at end of file diff --git a/docs/classes/ndarray.html b/docs/classes/ndarray.html deleted file mode 100644 index af680d41..00000000 --- a/docs/classes/ndarray.html +++ /dev/null @@ -1,7852 +0,0 @@ - - - - - - NDArray | Vectorious - - - - - -
    -
    -
    -
    - -
    -
    - Options -
    -
    - All -
      -
    • Public
    • -
    • Public/Protected
    • -
    • All
    • -
    -
    - - - - - - -
    -
    - Menu -
    -
    -
    -
    -
    -
    - -

    Class NDArray

    -
    -
    -
    -
    -
    -
    -
    -

    Hierarchy

    -
      -
    • - NDArray -
    • -
    -
    -
    -

    Implements

    - -
    -
    -

    Index

    -
    -
    -
    -

    Constructors

    - -
    -
    -

    Properties

    - -
    -
    -

    Accessors

    - -
    -
    -
    -
    -
    -

    Constructors

    -
    - -

    constructor

    -
      -
    • new NDArray(data?: any, options?: any): NDArray
    • -
    -
      -
    • - -

      Parameters

      -
        -
      • -
        Optional data: any
        -
      • -
      • -
        Optional options: any
        -
      • -
      -

      Returns NDArray

      -
    • -
    -
    -
    -
    -

    Properties

    -
    - -

    __computed

    -
    __computed: function
    - -
    -

    Type declaration

    -
      -
    • -
        -
      • (): string
      • -
      -
        -
      • -

        Returns string

        -
      • -
      -
    • -
    -
    -
    -
    - -

    abs

    -
    abs: function
    - -
    -
    -

    Returns the absolute value of each element of current array.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (): this
      • -
      -
        -
      • -

        Returns this

        -
      • -
      -
    • -
    -
    -
    -
    - -

    acos

    -
    acos: function
    - -
    -
    -

    Returns the arccosine of each element of current array.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (): this
      • -
      -
        -
      • -

        Returns this

        -
      • -
      -
    • -
    -
    -
    -
    - -

    acosh

    -
    acosh: function
    - -
    -
    -

    Returns the hyperbolic arccosine of each element of current array.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (): this
      • -
      -
        -
      • -

        Returns this

        -
      • -
      -
    • -
    -
    -
    -
    - -

    add

    -
    add: function
    - -
    -
    -

    Adds x multiplied by alpha to the current array. - Accelerated with BLAS ?axpy.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(y: T, alpha?: number): this
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          y: T
          -
        • -
        • -
          Optional alpha: number
          -
        • -
        -

        Returns this

        -
      • -
      -
    • -
    -
    -
    -
    - -

    angle

    -
    angle: function
    - -
    -
    -

    Determines the angle between the current vector and x.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T): number
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T
          -
        • -
        -

        Returns number

        -
      • -
      -
    • -
    -
    -
    -
    - -

    asin

    -
    asin: function
    - -
    -
    -

    Returns the arcsine of each element of current array.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (): this
      • -
      -
        -
      • -

        Returns this

        -
      • -
      -
    • -
    -
    -
    -
    - -

    asinh

    -
    asinh: function
    - -
    -
    -

    Returns the hyperbolic arcsine of each element of current array.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (): this
      • -
      -
        -
      • -

        Returns this

        -
      • -
      -
    • -
    -
    -
    -
    - -

    atan

    -
    atan: function
    - -
    -
    -

    Returns the arctangent of each element of current array.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (): this
      • -
      -
        -
      • -

        Returns this

        -
      • -
      -
    • -
    -
    -
    -
    - -

    atanh

    -
    atanh: function
    - -
    -
    -

    Returns the hyperbolic arctangent of each element of current array.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (): this
      • -
      -
        -
      • -

        Returns this

        -
      • -
      -
    • -
    -
    -
    -
    - -

    augment

    -
    augment: function
    - -
    -
    -

    Augments x with current matrix.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T): this
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T
          -
        • -
        -

        Returns this

        -
      • -
      -
    • -
    -
    -
    -
    - -

    binOp

    -
    binOp: function
    - -
    -
    -

    Perform binary operation f on x in the current array.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(y: T, f: function): this
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          y: T
          -
        • -
        • -
          f: function
          -
            -
          • -
              -
            • (a: number, b: number, index: number): number
            • -
            -
              -
            • -

              Parameters

              -
                -
              • -
                a: number
                -
              • -
              • -
                b: number
                -
              • -
              • -
                index: number
                -
              • -
              -

              Returns number

              -
            • -
            -
          • -
          -
        • -
        -

        Returns this

        -
      • -
      -
    • -
    -
    -
    -
    - -

    cbrt

    -
    cbrt: function
    - -
    -
    -

    Returns the cube root of each element of current array.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (): this
      • -
      -
        -
      • -

        Returns this

        -
      • -
      -
    • -
    -
    -
    -
    - -

    ceil

    -
    ceil: function
    - -
    -
    -

    Returns smallest integer greater than or equal to of each element of current array.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (): this
      • -
      -
        -
      • -

        Returns this

        -
      • -
      -
    • -
    -
    -
    -
    - -

    check

    -
    check: function
    - -
    -
    -

    Asserts if indices i, j, ..., n are within the bounds of current array

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (...indices: number[]): void
      • -
      -
        -
      • -

        Parameters

        -
          -
        • -
          Rest ...indices: number[]
          -
        • -
        -

        Returns void

        -
      • -
      -
    • -
    -
    -
    -
    - -

    combine

    -
    combine: function
    - -
    -
    -

    Combines the current vector with x

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T): this
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T
          -
        • -
        -

        Returns this

        -
      • -
      -
    • -
    -
    -
    -
    - -

    copy

    -
    copy: function
    - -
    -
    -

    Makes a copy of the class and underlying data

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (): this
      • -
      -
        -
      • -

        Returns this

        -
      • -
      -
    • -
    -
    -
    -
    - -

    cos

    -
    cos: function
    - -
    -
    -

    Returns the cosine of each element of current array.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (): this
      • -
      -
        -
      • -

        Returns this

        -
      • -
      -
    • -
    -
    -
    -
    - -

    cosh

    -
    cosh: function
    - -
    -
    -

    Returns the hyperbolic cosine of each element of current array.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (): this
      • -
      -
        -
      • -

        Returns this

        -
      • -
      -
    • -
    -
    -
    -
    - -

    cross

    -
    cross: function
    - -
    -
    -

    Computes the cross product of the current vector and the vector x - This operation can only be calculated for vectors with three components. - Otherwise it throws an exception. - The method returns a new (result) vector.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T): this
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T
          -
        • -
        -

        Returns this

        -
      • -
      -
    • -
    -
    -
    -
    - -

    data

    -
    data: TypedArray = new Float32Array(0)
    - -
    -
    - -

    det

    -
    det: function
    - -
    -
    -

    Gets the determinant of current matrix using LU factorization.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (): number
      • -
      -
        -
      • -

        Returns number

        -
      • -
      -
    • -
    -
    -
    -
    - -

    diagonal

    -
    diagonal: function
    - -
    -
    -

    Gets the diagonal of current matrix.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (): this
      • -
      -
        -
      • -

        Returns this

        -
      • -
      -
    • -
    -
    -
    -
    - -

    dot

    -
    dot: function
    - -
    -
    -

    Performs dot multiplication with x and current array - Accelerated with BLAS ?dot.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(y: T): number
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          y: T
          -
        • -
        -

        Returns number

        -
      • -
      -
    • -
    -
    -
    -
    - -

    dtype

    -
    dtype: DType = "float32"
    - -
    -
    - -

    eig

    -
    eig: function
    - -
    -
    -

    Gets eigenvalues and eigenvectors of the current matrix using the Jacobi method. - Accelerated with LAPACK ?geev.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(): [T, T]
      • -
      -
        -
      • -

        Type parameters

        - -

        Returns [T, T]

        -
      • -
      -
    • -
    -
    -
    -
    - -

    equals

    -
    equals: function
    - -
    -
    -

    Checks if current array and x are equal.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(y: T): boolean
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          y: T
          -
        • -
        -

        Returns boolean

        -
      • -
      -
    • -
    -
    -
    -
    - -

    equidimensional

    -
    equidimensional: function
    - -
    -
    -

    Asserts if current array and x have the same shape

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(y: T): void
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          y: T
          -
        • -
        -

        Returns void

        -
      • -
      -
    • -
    -
    -
    -
    - -

    equilateral

    -
    equilateral: function
    - -
    -
    -

    Asserts if current array and x have the same length

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(y: T): void
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          y: T
          -
        • -
        -

        Returns void

        -
      • -
      -
    • -
    -
    -
    -
    - -

    exp

    -
    exp: function
    - -
    -
    -

    Returns e^x of each element of current array, where x is the argument, - and e is Euler's constant (2.718…), the base of the natural logarithm.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (): this
      • -
      -
        -
      • -

        Returns this

        -
      • -
      -
    • -
    -
    -
    -
    - -

    expm1

    -
    expm1: function
    - -
    -
    -

    Returns subtracting 1 from exp(x) of each element of current array.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (): this
      • -
      -
        -
      • -

        Returns this

        -
      • -
      -
    • -
    -
    -
    -
    - -

    fill

    -
    fill: function
    - -
    -
    -

    Fills the current array with a scalar value

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (value: number | function): this
      • -
      -
        -
      • -

        Parameters

        -
          -
        • -
          value: number | function
          -
        • -
        -

        Returns this

        -
      • -
      -
    • -
    -
    -
    -
    - -

    floor

    -
    floor: function
    - -
    -
    -

    Returns the largest integer less than or equal to a number of each element of current array.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (): this
      • -
      -
        -
      • -

        Returns this

        -
      • -
      -
    • -
    -
    -
    -
    - -

    forEach

    -
    forEach: function
    - -
    -
    -

    Equivalent to TypedArray.prototype.forEach.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (f: function): void
      • -
      -
        -
      • -

        Parameters

        -
          -
        • -
          f: function
          -
            -
          • -
              -
            • (value: number, i: number, src: TypedArray): void
            • -
            -
              -
            • -

              Parameters

              -
                -
              • -
                value: number
                -
              • -
              • -
                i: number
                -
              • -
              • -
                src: TypedArray
                -
              • -
              -

              Returns void

              -
            • -
            -
          • -
          -
        • -
        -

        Returns void

        -
      • -
      -
    • -
    -
    -
    -
    - -

    fround

    -
    fround: function
    - -
    -
    -

    Returns the nearest single precision float representation of each element of current array.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (): this
      • -
      -
        -
      • -

        Returns this

        -
      • -
      -
    • -
    -
    -
    -
    - -

    gauss

    -
    gauss: function
    - -
    -
    -

    Gauss-Jordan elimination (i.e. returns the reduced row echelon form) of current matrix.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (): this
      • -
      -
        -
      • -

        Returns this

        -
      • -
      -
    • -
    -
    -
    -
    - -

    get

    -
    get: function
    - -
    -
    -

    Gets the element at i, j, ..., n from current vector.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (...indices: number[]): number
      • -
      -
        -
      • -

        Parameters

        -
          -
        • -
          Rest ...indices: number[]
          -
        • -
        -

        Returns number

        -
      • -
      -
    • -
    -
    -
    -
    - -

    inv

    -
    inv: function
    - -
    -
    -

    Determines the inverse of current matrix using Gaussian elimination. - Accelerated with LAPACK ?getri.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (): this
      • -
      -
        -
      • -

        Returns this

        -
      • -
      -
    • -
    -
    -
    -
    - -

    length

    -
    length: number = 0
    - -
    -
    - -

    log

    -
    log: function
    - -
    -
    -

    Returns the natural logarithm (log_e, also ln) of each element of current array.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (): this
      • -
      -
        -
      • -

        Returns this

        -
      • -
      -
    • -
    -
    -
    -
    - -

    log10

    -
    log10: function
    - -
    -
    -

    Returns the natural logarithm (log_e, also ln) of 1 + x for each element of current array.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (): this
      • -
      -
        -
      • -

        Returns this

        -
      • -
      -
    • -
    -
    -
    -
    - -

    log1p

    -
    log1p: function
    - -
    -
    -

    Returns the base 2 logarithm of each element of current array.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (): this
      • -
      -
        -
      • -

        Returns this

        -
      • -
      -
    • -
    -
    -
    -
    - -

    log2

    -
    log2: function
    - -
    -
    -

    Returns the base 10 logarithm of each element of current array.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (): this
      • -
      -
        -
      • -

        Returns this

        -
      • -
      -
    • -
    -
    -
    -
    - -

    lu

    -
    lu: function
    - -
    -
    -

    Performs full LU decomposition on current matrix. - Accelerated with LAPACK ?getrf.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(): [T, T, Int32Array]
      • -
      -
        -
      • -

        Type parameters

        - -

        Returns [T, T, Int32Array]

        -
      • -
      -
    • -
    -
    -
    -
    - -

    lu_factor

    -
    lu_factor: function
    - -
    -
    -

    Performs LU factorization on current matrix. - Accelerated with LAPACK ?getrf.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (): [this, Int32Array]
      • -
      -
        -
      • -

        Returns [this, Int32Array]

        -
      • -
      -
    • -
    -
    -
    -
    - -

    map

    -
    map: function
    - -
    -
    -

    Equivalent to TypedArray.prototype.map.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (f: function): this
      • -
      -
        -
      • -

        Parameters

        -
          -
        • -
          f: function
          -
            -
          • -
              -
            • (value: number, i: number, src: TypedArray): number
            • -
            -
              -
            • -

              Parameters

              -
                -
              • -
                value: number
                -
              • -
              • -
                i: number
                -
              • -
              • -
                src: TypedArray
                -
              • -
              -

              Returns number

              -
            • -
            -
          • -
          -
        • -
        -

        Returns this

        -
      • -
      -
    • -
    -
    -
    -
    - -

    max

    -
    max: function
    - -
    -
    -

    Gets the maximum value (smallest) element of current array.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (): number
      • -
      -
        -
      • -

        Returns number

        -
      • -
      -
    • -
    -
    -
    -
    - -

    mean

    -
    mean: function
    - -
    -
    -

    Gets the arithmetic mean of current array.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (): number
      • -
      -
        -
      • -

        Returns number

        -
      • -
      -
    • -
    -
    -
    -
    - -

    min

    -
    min: function
    - -
    -
    -

    Gets the minimum value (smallest) element of current array.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (): number
      • -
      -
        -
      • -

        Returns number

        -
      • -
      -
    • -
    -
    -
    -
    - -

    multiply

    -
    multiply: function
    - -
    -
    -

    Multiplies current matrix with x. - Accelerated with BLAS ?gemm.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T): this
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T
          -
        • -
        -

        Returns this

        -
      • -
      -
    • -
    -
    -
    -
    - -

    norm

    -
    norm: function
    - -
    -
    -

    Calculates the norm of current array (also called L2 norm or Euclidean length). - Accelerated with BLAS ?nrm2.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (): number
      • -
      -
        -
      • -

        Returns number

        -
      • -
      -
    • -
    -
    -
    -
    - -

    normalize

    -
    normalize: function
    - -
    -
    -

    Normalizes current vector.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (): this
      • -
      -
        -
      • -

        Returns this

        -
      • -
      -
    • -
    -
    -
    -
    - -

    pow

    -
    pow: function
    - -
    -
    -

    Returns each element of current array to the exponent power, that is, element^exponent.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (exponent: number): this
      • -
      -
        -
      • -

        Parameters

        -
          -
        • -
          exponent: number
          -
        • -
        -

        Returns this

        -
      • -
      -
    • -
    -
    -
    -
    - -

    prod

    -
    prod: function
    - -
    -
    -

    Product of all elements of current array

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (): number
      • -
      -
        -
      • -

        Returns number

        -
      • -
      -
    • -
    -
    -
    -
    - -

    product

    -
    product: function
    - -
    -
    -

    Hadamard product of current matrix and x

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(y: T): this
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          y: T
          -
        • -
        -

        Returns this

        -
      • -
      -
    • -
    -
    -
    -
    - -

    project

    -
    project: function
    - -
    -
    -

    Projects the current vector onto x using the projection formula (y * (x * y / y * y)).

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T): this
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T
          -
        • -
        -

        Returns this

        -
      • -
      -
    • -
    -
    -
    -
    - -

    push

    -
    push: function
    - -
    -
    -

    Pushes a new value into current vector.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (value: number): this
      • -
      -
        -
      • -

        Parameters

        -
          -
        • -
          value: number
          -
        • -
        -

        Returns this

        -
      • -
      -
    • -
    -
    -
    -
    - -

    rank

    -
    rank: function
    - -
    -
    -

    Finds the rank of current matrix using gaussian elimination.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (): number
      • -
      -
        -
      • -

        Returns number

        -
      • -
      -
    • -
    -
    -
    -
    - -

    reciprocal

    -
    reciprocal: function
    - -
    -
    -

    Gets the element-wise reciprocal of current array.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (): this
      • -
      -
        -
      • -

        Returns this

        -
      • -
      -
    • -
    -
    -
    -
    - -

    reduce

    -
    reduce: function
    - -
    -
    -

    Equivalent to TypedArray.prototype.reduce.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (f: function, initialValue?: number): number
      • -
      -
        -
      • -

        Parameters

        -
          -
        • -
          f: function
          -
            -
          • -
              -
            • (acc: number, value: number, i: number, src: TypedArray): number
            • -
            -
              -
            • -

              Parameters

              -
                -
              • -
                acc: number
                -
              • -
              • -
                value: number
                -
              • -
              • -
                i: number
                -
              • -
              • -
                src: TypedArray
                -
              • -
              -

              Returns number

              -
            • -
            -
          • -
          -
        • -
        • -
          Optional initialValue: number
          -
        • -
        -

        Returns number

        -
      • -
      -
    • -
    -
    -
    -
    - -

    reshape

    -
    reshape: function
    - -
    -
    -

    Reshapes current array

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (...shape: number[]): this
      • -
      -
        -
      • -

        Parameters

        -
          -
        • -
          Rest ...shape: number[]
          -
        • -
        -

        Returns this

        -
      • -
      -
    • -
    -
    -
    -
    - -

    round

    -
    round: function
    - -
    -
    -

    Returns the value of each element of current array rounded to the nearest integer.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (): this
      • -
      -
        -
      • -

        Returns this

        -
      • -
      -
    • -
    -
    -
    -
    - -

    row_add

    -
    row_add: function
    - -
    -
    -

    Adds a multiple of one row multiplied by scalar to another inside current matrix.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (dest: number, source: number, scalar?: number): this
      • -
      -
        -
      • -

        Parameters

        -
          -
        • -
          dest: number
          -
        • -
        • -
          source: number
          -
        • -
        • -
          Optional scalar: number
          -
        • -
        -

        Returns this

        -
      • -
      -
    • -
    -
    -
    -
    - -

    scale

    -
    scale: function
    - -
    -
    -

    Multiplies all elements of current array with a specified scalar. - Accelerated with BLAS ?scal.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (scalar: number): this
      • -
      -
        -
      • -

        Parameters

        -
          -
        • -
          scalar: number
          -
        • -
        -

        Returns this

        -
      • -
      -
    • -
    -
    -
    -
    - -

    set

    -
    set: function
    - -
    -
    -

    Sets the element at i, j, ..., n to value.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (...args: number[]): void
      • -
      -
        -
      • -

        Parameters

        -
          -
        • -
          Rest ...args: number[]
          -
        • -
        -

        Returns void

        -
      • -
      -
    • -
    -
    -
    -
    - -

    shape

    -
    shape: number[] = [0]
    - -
    -
    - -

    sign

    -
    sign: function
    - -
    -
    -

    Returns the sign of each element of current array, indicating - whether it is positive, negative or zero.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (): this
      • -
      -
        -
      • -

        Returns this

        -
      • -
      -
    • -
    -
    -
    -
    - -

    sin

    -
    sin: function
    - -
    -
    -

    Returns the sine of each element of current array.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (): this
      • -
      -
        -
      • -

        Returns this

        -
      • -
      -
    • -
    -
    -
    -
    - -

    sinh

    -
    sinh: function
    - -
    -
    -

    Returns the hyperbolic sine of each element of current array.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (): this
      • -
      -
        -
      • -

        Returns this

        -
      • -
      -
    • -
    -
    -
    -
    - -

    slice

    -
    slice: function
    - -
    -
    -

    Slices the current array in the corresponding dimension

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (start?: number, step?: number, end?: number): this
      • -
      -
        -
      • -

        Parameters

        -
          -
        • -
          Optional start: number
          -
        • -
        • -
          Optional step: number
          -
        • -
        • -
          Optional end: number
          -
        • -
        -

        Returns this

        -
      • -
      -
    • -
    -
    -
    -
    - -

    solve

    -
    solve: function
    - -
    -
    -

    Solves the equation AX = B (where A is current matrix and B is x). - Accelerated with LAPACK ?gesv.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T): this
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T
          -
        • -
        -

        Returns this

        -
      • -
      -
    • -
    -
    -
    -
    - -

    sqrt

    -
    sqrt: function
    - -
    -
    -

    Returns the positive square root of each element of current array.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (): this
      • -
      -
        -
      • -

        Returns this

        -
      • -
      -
    • -
    -
    -
    -
    - -

    square

    -
    square: function
    - -
    -
    -

    Asserts if current matrix is square.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (): void
      • -
      -
        -
      • -

        Returns void

        -
      • -
      -
    • -
    -
    -
    -
    - -

    subtract

    -
    subtract: function
    - -
    -
    -

    Subtracts x from the current array. - Accelerated with BLAS ?axpy.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(y: T): this
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          y: T
          -
        • -
        -

        Returns this

        -
      • -
      -
    • -
    -
    -
    -
    - -

    sum

    -
    sum: function
    - -
    -
    -

    Sum of array elements

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (): number
      • -
      -
        -
      • -

        Returns number

        -
      • -
      -
    • -
    -
    -
    -
    - -

    swap

    -
    swap: function
    - -
    -
    -

    Swaps two rows i and j in current matrix

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (i: number, j: number): this
      • -
      -
        -
      • -

        Parameters

        -
          -
        • -
          i: number
          -
        • -
        • -
          j: number
          -
        • -
        -

        Returns this

        -
      • -
      -
    • -
    -
    -
    -
    - -

    tan

    -
    tan: function
    - -
    -
    -

    Returns the tangent of each element of current array.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (): this
      • -
      -
        -
      • -

        Returns this

        -
      • -
      -
    • -
    -
    -
    -
    - -

    tanh

    -
    tanh: function
    - -
    -
    -

    Returns the hyperbolic tangent of each element of current array.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (): this
      • -
      -
        -
      • -

        Returns this

        -
      • -
      -
    • -
    -
    -
    -
    - -

    toArray

    -
    toArray: function
    - -
    -
    -

    Converts current vector into a JavaScript array.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (): number[]
      • -
      -
        -
      • -

        Returns number[]

        -
      • -
      -
    • -
    -
    -
    -
    - -

    toString

    -
    toString: function
    - -
    -
    -

    Converts current vector into a readable formatted string.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (): string
      • -
      -
        -
      • -

        Returns string

        -
      • -
      -
    • -
    -
    -
    -
    - -

    trace

    -
    trace: function
    - -
    -
    -

    Gets the trace of the matrix (the sum of all diagonal elements).

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (): number
      • -
      -
        -
      • -

        Returns number

        -
      • -
      -
    • -
    -
    -
    -
    - -

    transpose

    -
    transpose: function
    - -
    -
    -

    Transposes current matrix (mirror across the diagonal).

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (): this
      • -
      -
        -
      • -

        Returns this

        -
      • -
      -
    • -
    -
    -
    -
    - -

    trunc

    -
    trunc: function
    - -
    -
    -

    Returns the integer part of each element of current array, - removing any fractional digits.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (): this
      • -
      -
        -
      • -

        Returns this

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static abs

    -
    abs: function
    - -
    -
    -

    Returns the absolute value of each element of x.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static acos

    -
    acos: function
    - -
    -
    -

    Returns the arccosine of each element of x.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static acosh

    -
    acosh: function
    - -
    -
    -

    Returns the hyperbolic arccosine of each element of x.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static add

    -
    add: function
    - -
    -
    -

    Adds y multiplied by alpha to x. - Accelerated with BLAS ?axpy.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>, y: T | ArrayLike<any>, alpha?: number): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        • -
          y: T | ArrayLike<any>
          -
        • -
        • -
          Optional alpha: number
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static angle

    -
    angle: function
    - -
    -
    -

    Determines the angle between the x and y

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>, y: T | ArrayLike<any>): number
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        • -
          y: T | ArrayLike<any>
          -
        • -
        -

        Returns number

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static array

    -
    array: function
    - -
    -
    -

    Constructor alias

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(...args: any[]): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          Rest ...args: any[]
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static asin

    -
    asin: function
    - -
    -
    -

    Returns the arcsine of each element of x.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static asinh

    -
    asinh: function
    - -
    -
    -

    Returns the hyperbolic arcsine of each element of x.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static atan

    -
    atan: function
    - -
    -
    -

    Returns the arctangent of each element of x.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static atanh

    -
    atanh: function
    - -
    -
    -

    Returns the hyperbolic arctangent of each element of x.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static augment

    -
    augment: function
    - -
    -
    -

    Augments x and y.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>, y: T | ArrayLike<any>): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        • -
          y: T | ArrayLike<any>
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static binOp

    -
    binOp: function
    - -
    -
    -

    Perform binary operation f on y in x.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>, y: T | ArrayLike<any>, f: function): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        • -
          y: T | ArrayLike<any>
          -
        • -
        • -
          f: function
          -
            -
          • -
              -
            • (a: number, b: number, index: number): number
            • -
            -
              -
            • -

              Parameters

              -
                -
              • -
                a: number
                -
              • -
              • -
                b: number
                -
              • -
              • -
                index: number
                -
              • -
              -

              Returns number

              -
            • -
            -
          • -
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static cbrt

    -
    cbrt: function
    - -
    -
    -

    Returns the cube root of each element of x.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static ceil

    -
    ceil: function
    - -
    -
    -

    Returns smallest integer greater than or equal to of each element of x.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static check

    -
    check: function
    - -
    -
    -

    Asserts if indices i, j, ..., n are within the bounds of x

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>, ...indices: number[]): void
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        • -
          Rest ...indices: number[]
          -
        • -
        -

        Returns void

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static combine

    -
    combine: function
    - -
    -
    -

    Combines the vector x with y

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>, y: T | ArrayLike<any>): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        • -
          y: T | ArrayLike<any>
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static copy

    -
    copy: function
    - -
    -
    -

    Makes a copy of x

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static cos

    -
    cos: function
    - -
    -
    -

    Returns the cosine of each element of x.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static cosh

    -
    cosh: function
    - -
    -
    -

    Returns the hyperbolic cosine of each element of x.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static cross

    -
    cross: function
    - -
    -
    -

    Computes the cross product of the x and the vector y - This operation can only calculated for vectors with three components. - Otherwise it throws an exception. - The method returns a new (result) vector.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>, y: T | ArrayLike<any>): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        • -
          y: T | ArrayLike<any>
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static det

    -
    det: function
    - -
    -
    -

    Gets the determinant of x.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>): number
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        -

        Returns number

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static diagonal

    -
    diagonal: function
    - -
    -
    -

    Gets the diagonal of x.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static dot

    -
    dot: function
    - -
    -
    -

    Performs dot multiplication with x and y. - Accelerated with BLAS ?dot.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>, y: T | ArrayLike<any>): number
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        • -
          y: T | ArrayLike<any>
          -
        • -
        -

        Returns number

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static eig

    -
    eig: function
    - -
    -
    -

    Gets eigenvalues and eigenvectors of x using the Jacobi method. - Accelerated with LAPACK ?geev.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>): [T, T]
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        -

        Returns [T, T]

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static equals

    -
    equals: function
    - -
    -
    -

    Checks if x and y are equal.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>, y: T | ArrayLike<any>): boolean
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        • -
          y: T | ArrayLike<any>
          -
        • -
        -

        Returns boolean

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static equidimensional

    -
    equidimensional: function
    - -
    -
    -

    Asserts if x and y have the same shape

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>, y: T | ArrayLike<any>): void
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        • -
          y: T | ArrayLike<any>
          -
        • -
        -

        Returns void

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static equilateral

    -
    equilateral: function
    - -
    -
    -

    Asserts if x and y have the same length

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>, y: T | ArrayLike<any>): void
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        • -
          y: T | ArrayLike<any>
          -
        • -
        -

        Returns void

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static exp

    -
    exp: function
    - -
    -
    -

    Returns e^x of each element of x, where x is the argument, - and e is Euler's constant (2.718…), the base of the natural logarithm.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static expm1

    -
    expm1: function
    - -
    -
    -

    Returns subtracting 1 from exp(x) of each element of x.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static eye

    -
    eye: function
    - -
    -
    -

    Creates an identity matrix of size n and type type.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(n: number): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          n: number
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static fill

    -
    fill: function
    - -
    -
    -

    Fills x with a scalar value

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>, value: number | function): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        • -
          value: number | function
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static floor

    -
    floor: function
    - -
    -
    -

    Returns the largest integer less than or equal to a number of each element of x.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static forEach

    -
    forEach: function
    - -
    -
    -

    Equivalent to TypedArray.prototype.forEach.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T, f: function): void
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T
          -
        • -
        • -
          f: function
          -
            -
          • -
              -
            • (value: number, i: number, src: TypedArray): void
            • -
            -
              -
            • -

              Parameters

              -
                -
              • -
                value: number
                -
              • -
              • -
                i: number
                -
              • -
              • -
                src: TypedArray
                -
              • -
              -

              Returns void

              -
            • -
            -
          • -
          -
        • -
        -

        Returns void

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static fround

    -
    fround: function
    - -
    -
    -

    Returns the nearest single precision float representation of each element of x.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static gauss

    -
    gauss: function
    - -
    -
    -

    Gauss-Jordan elimination (i.e. returns the reduced row echelon form) of x.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static get

    -
    get: function
    - -
    -
    -

    Gets the element at i, j, ..., n from x

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>, ...indices: number[]): number
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        • -
          Rest ...indices: number[]
          -
        • -
        -

        Returns number

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static inv

    -
    inv: function
    - -
    -
    -

    Determines the inverse of x. - Accelerated with LAPACK ?getri.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static log

    -
    log: function
    - -
    -
    -

    Returns the natural logarithm (log_e, also ln) of each element of x.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static log10

    -
    log10: function
    - -
    -
    -

    Returns the natural logarithm (log_e, also ln) of 1 + x for each element of x.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static log1p

    -
    log1p: function
    - -
    -
    -

    Returns the base 2 logarithm of each element of x.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static log2

    -
    log2: function
    - -
    -
    -

    Returns the base 10 logarithm of each element of x.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static lu

    -
    lu: function
    - -
    -
    -

    Performs full LU decomposition on x. - Accelerated with LAPACK ?getrf.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>): [T, T, Int32Array]
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        -

        Returns [T, T, Int32Array]

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static lu_factor

    -
    lu_factor: function
    - -
    -
    -

    Performs LU factorization on x. - Accelerated with LAPACK ?getrf.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>): [T, Int32Array]
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        -

        Returns [T, Int32Array]

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static magic

    -
    magic: function
    - -
    -
    -

    Creates a magic square matrix of size

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(size: number): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          size: number
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static map

    -
    map: function
    - -
    -
    -

    Equivalent to TypedArray.prototype.map.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>, f: function): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        • -
          f: function
          -
            -
          • -
              -
            • (value: number, i: number, src: TypedArray): number
            • -
            -
              -
            • -

              Parameters

              -
                -
              • -
                value: number
                -
              • -
              • -
                i: number
                -
              • -
              • -
                src: TypedArray
                -
              • -
              -

              Returns number

              -
            • -
            -
          • -
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static matrix

    -
    matrix: function
    - -
    -
    -

    Creates a matrix of r rows and c columns.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(r: number, c: number): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          r: number
          -
        • -
        • -
          c: number
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static max

    -
    max: function
    - -
    -
    -

    Gets the maximum value (largest) element of x. - Accelerated with BLAS i?amax.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>): number
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        -

        Returns number

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static mean

    -
    mean: function
    - -
    -
    -

    Gets the arithmetic mean of x.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>): number
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        -

        Returns number

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static min

    -
    min: function
    - -
    -
    -

    Gets the minimum value (smallest) element of x.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>): number
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        -

        Returns number

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static multiply

    -
    multiply: function
    - -
    -
    -

    Multiplies two matrices x and y of matching dimensions. - Accelerated with BLAS ?gemm.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>, y: T | ArrayLike<any>): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        • -
          y: T | ArrayLike<any>
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static norm

    -
    norm: function
    - -
    -
    -

    Calculates the norm of current array (also called L2 norm or Euclidean length). - Accelerated with BLAS ?nrm2.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>): number
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        -

        Returns number

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static normalize

    -
    normalize: function
    - -
    -
    -

    Normalizes x.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static ones

    -
    ones: function
    - -
    -
    -

    Creates an array containing ones (1) of shape shape

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(...shape: number[]): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          Rest ...shape: number[]
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static pow

    -
    pow: function
    - -
    -
    -

    Returns each element of x to the exponent power, that is, element^exponent.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>, exponent: number): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        • -
          exponent: number
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static prod

    -
    prod: function
    - -
    -
    -

    Product of all elements of x.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>): number
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        -

        Returns number

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static product

    -
    product: function
    - -
    -
    -

    Hadamard product of x and y

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>, y: T | ArrayLike<any>): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        • -
          y: T | ArrayLike<any>
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static project

    -
    project: function
    - -
    -
    -

    Projects the y onto x using the projection formula (y * (x * y / y * y)).

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>, y: T | ArrayLike<any>): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        • -
          y: T | ArrayLike<any>
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static push

    -
    push: function
    - -
    -
    -

    Pushes a new value into x.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>, value: number): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        • -
          value: number
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static random

    -
    random: function
    - -
    -
    -

    Creates a vector containing random samples from a uniform distribution over [0, 1) of shape shape

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(...shape: number[]): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          Rest ...shape: number[]
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static range

    -
    range: function
    - -
    -
    -

    Creates an array containing a range (can be either ascending or descending) - of numbers specified by the arguments provided (e.g. NDArray.range(0, .5, 2) - gives an array containing all numbers in the interval [0, 2) separated by - steps of 0.5)

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(...args: number[]): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          Rest ...args: number[]
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static rank

    -
    rank: function
    - -
    -
    -

    Finds the rank of x using gaussian elimination.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>): number
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        -

        Returns number

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static reciprocal

    -
    reciprocal: function
    - -
    -
    -

    Gets the element-wise reciprocal of x.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static reduce

    -
    reduce: function
    - -
    -
    -

    Equivalent to TypedArray.prototype.reduce.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • (x: NDArray, f: function, initialValue?: number): number
      • -
      -
        -
      • -

        Parameters

        -
          -
        • -
          x: NDArray
          -
        • -
        • -
          f: function
          -
            -
          • -
              -
            • (acc: number, value: number, i: number, src: TypedArray): number
            • -
            -
              -
            • -

              Parameters

              -
                -
              • -
                acc: number
                -
              • -
              • -
                value: number
                -
              • -
              • -
                i: number
                -
              • -
              • -
                src: TypedArray
                -
              • -
              -

              Returns number

              -
            • -
            -
          • -
          -
        • -
        • -
          Optional initialValue: number
          -
        • -
        -

        Returns number

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static reshape

    -
    reshape: function
    - -
    -
    -

    Reshapes x

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>, ...shape: number[]): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        • -
          Rest ...shape: number[]
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static round

    -
    round: function
    - -
    -
    -

    Returns the value of each element of x rounded to the nearest integer.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static row_add

    -
    row_add: function
    - -
    -
    -

    Adds a multiple of one row multiplied by scalar to another inside x.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>, dest: number, source: number, scalar?: number): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        • -
          dest: number
          -
        • -
        • -
          source: number
          -
        • -
        • -
          Optional scalar: number
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static scale

    -
    scale: function
    - -
    -
    -

    Multiplies all elements of x with a specified scalar. - Accelerated with BLAS ?scal.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>, scalar: number): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        • -
          scalar: number
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static set

    -
    set: function
    - -
    -
    -

    Sets the element at i, j, ..., n to value.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T, ...args: number[]): void
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T
          -
        • -
        • -
          Rest ...args: number[]
          -
        • -
        -

        Returns void

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static sign

    -
    sign: function
    - -
    -
    -

    Returns the sign of each element of x, indicating - whether it is positive, negative or zero.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static sin

    -
    sin: function
    - -
    -
    -

    Returns the sine of each element of x.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static sinh

    -
    sinh: function
    - -
    -
    -

    Returns the hyperbolic sine of each element of x.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static slice

    -
    slice: function
    - -
    -
    -

    Slices x in the corresponding dimension

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>, start?: number, step?: number, end?: number): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        • -
          Optional start: number
          -
        • -
        • -
          Optional step: number
          -
        • -
        • -
          Optional end: number
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static solve

    -
    solve: function
    - -
    -
    -

    Solves the equation AX = B (where A is x and B is y). - Accelerated with LAPACK ?gesv.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>, y: T | ArrayLike<any>): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        • -
          y: T | ArrayLike<any>
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static sqrt

    -
    sqrt: function
    - -
    -
    -

    Returns the positive square root of each element of x.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static square

    -
    square: function
    - -
    -
    -

    Asserts if x is square.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>): void
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        -

        Returns void

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static subtract

    -
    subtract: function
    - -
    -
    -

    Subtracts y from x.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>, y: T | ArrayLike<any>): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        • -
          y: T | ArrayLike<any>
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static sum

    -
    sum: function
    - -
    -
    -

    Sum of x

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>): number
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        -

        Returns number

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static swap

    -
    swap: function
    - -
    -
    -

    Swaps two rows i and j in x.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>, i: number, j: number): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        • -
          i: number
          -
        • -
        • -
          j: number
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static tan

    -
    tan: function
    - -
    -
    -

    Returns the tangent of each element of x.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static tanh

    -
    tanh: function
    - -
    -
    -

    Returns the hyperbolic tangent of each element of x.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static toArray

    -
    toArray: function
    - -
    -
    -

    Converts x into a JavaScript array.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>): number[]
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        -

        Returns number[]

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static toString

    -
    toString: function
    - -
    -
    -

    Converts x into a readable formatted string.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>): string
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        -

        Returns string

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static trace

    -
    trace: function
    - -
    -
    -

    Gets the trace of x (the sum of all diagonal elements).

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>): number
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        -

        Returns number

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static transpose

    -
    transpose: function
    - -
    -
    -

    Transposes x (mirror across the diagonal).

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static trunc

    -
    trunc: function
    - -
    -
    -

    Returns the integer part of each element of x, - removing any fractional digits.

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(x: T | ArrayLike<any>): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          x: T | ArrayLike<any>
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    - -

    Static zeros

    -
    zeros: function
    - -
    -
    -

    Creates an array containing zeros (0) of shape shape

    -
    -
    -
    -

    Type declaration

    -
      -
    • -
        -
      • <T>(...shape: number[]): T
      • -
      -
        -
      • -

        Type parameters

        - -

        Parameters

        -
          -
        • -
          Rest ...shape: number[]
          -
        • -
        -

        Returns T

        -
      • -
      -
    • -
    -
    -
    -
    -
    -

    Accessors

    -
    - -

    T

    -
      -
    • get T(): this
    • -
    -
      -
    • - -
      -
      -

      Transposes current matrix (mirror across the diagonal).

      -
      -
      -

      Returns this

      -
    • -
    -
    -
    - -

    w

    -
      -
    • get w(): number
    • -
    • set w(value: number): void
    • -
    -
      -
    • - -
      -
      -

      Equivalent to this.get(3)

      -
      -
      -

      Returns number

      -
    • -
    • - -
      -
      -

      Equivalent to this.set(3, value)

      -
      -
      -

      Parameters

      -
        -
      • -
        value: number
        -
      • -
      -

      Returns void

      -
    • -
    -
    -
    - -

    x

    -
      -
    • get x(): number
    • -
    • set x(value: number): void
    • -
    -
      -
    • - -
      -
      -

      Equivalent to this.get(0)

      -
      -
      -

      Returns number

      -
    • -
    • - -
      -
      -

      Equivalent to this.set(0, value)

      -
      -
      -

      Parameters

      -
        -
      • -
        value: number
        -
      • -
      -

      Returns void

      -
    • -
    -
    -
    - -

    y

    -
      -
    • get y(): number
    • -
    • set y(value: number): void
    • -
    -
      -
    • - -
      -
      -

      Equivalent to this.get(1)

      -
      -
      -

      Returns number

      -
    • -
    • - -
      -
      -

      Equivalent to this.set(1, value)

      -
      -
      -

      Parameters

      -
        -
      • -
        value: number
        -
      • -
      -

      Returns void

      -
    • -
    -
    -
    - -

    z

    -
      -
    • get z(): number
    • -
    • set z(value: number): void
    • -
    -
      -
    • - -
      -
      -

      Equivalent to this.get(2)

      -
      -
      -

      Returns number

      -
    • -
    • - -
      -
      -

      Equivalent to this.set(2, value)

      -
      -
      -

      Parameters

      -
        -
      • -
        value: number
        -
      • -
      -

      Returns void

      -
    • -
    -
    -
    -
    - -
    -
    -
    -
    -

    Legend

    -
    -
      -
    • Module
    • -
    • Object literal
    • -
    • Variable
    • -
    • Function
    • -
    • Function with type parameter
    • -
    • Index signature
    • -
    • Type alias
    • -
    • Type alias with type parameter
    • -
    -
      -
    • Enumeration
    • -
    • Enumeration member
    • -
    • Property
    • -
    • Method
    • -
    -
      -
    • Interface
    • -
    • Interface with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Index signature
    • -
    -
      -
    • Class
    • -
    • Class with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Accessor
    • -
    • Index signature
    • -
    -
      -
    • Inherited constructor
    • -
    • Inherited property
    • -
    • Inherited method
    • -
    • Inherited accessor
    • -
    -
      -
    • Protected property
    • -
    • Protected method
    • -
    • Protected accessor
    • -
    -
      -
    • Private property
    • -
    • Private method
    • -
    • Private accessor
    • -
    -
      -
    • Static property
    • -
    • Static method
    • -
    -
    -
    -
    -
    -

    Generated using TypeDoc

    -
    -
    - - - - \ No newline at end of file diff --git a/docs/index.html b/docs/index.html deleted file mode 100644 index 2872ca62..00000000 --- a/docs/index.html +++ /dev/null @@ -1,873 +0,0 @@ - - - - - - Vectorious - - - - - -
    -
    -
    -
    - -
    -
    - Options -
    -
    - All -
      -
    • Public
    • -
    • Public/Protected
    • -
    • All
    • -
    -
    - - - - - - -
    -
    - Menu -
    -
    -
    -
    -
    -
    - -

    Vectorious

    -
    -
    -
    -
    -
    -
    -
    -

    Index

    -
    -
    -
    -

    Classes

    - -
    -
    -

    Interfaces

    - -
    -
    -

    Type aliases

    - -
    -
    -

    Variables

    - -
    -
    -

    Functions

    - -
    -
    -
    -
    -
    -

    Type aliases

    -
    - -

    DType

    -
    DType: "int8" | "uint8" | "int16" | "uint16" | "int32" | "uint32" | "uint8c" | "float32" | "float64" | "complex64" | "complex128"
    - -
    -
    - -

    TypedArray

    -
    TypedArray: Int8Array | Uint8Array | Int16Array | Uint16Array | Int32Array | Uint32Array | Uint8ClampedArray | Float32Array | Float64Array
    - -
    -
    - -

    TypedArrayConstructor

    -
    TypedArrayConstructor: Int8ArrayConstructor | Uint8ArrayConstructor | Int16ArrayConstructor | Uint16ArrayConstructor | Int32ArrayConstructor | Uint32ArrayConstructor | Uint8ClampedArrayConstructor | Float32ArrayConstructor | Float64ArrayConstructor
    - -
    -
    -
    -

    Variables

    -
    - -

    Const benchmark

    -
    benchmark: any = require('nodemark')
    - -
    -
    - -

    execSync

    -
    execSync: any
    - -
    -
    - -

    floor

    -
    floor: floor
    - -
    -
    - -

    Const inspectSymbol

    -
    inspectSymbol: keyof symbol = Symbol.for('nodejs.util.inspect.custom')
    - -
    -
    - -

    Let nblas

    -
    nblas: any
    - -
    -
    - -

    Let nlapack

    -
    nlapack: any
    - -
    -
    - -

    Const plt

    -
    plt: any = require('matplotnode')
    - -
    -
    - -

    random

    -
    random: random
    - -
    -
    - -

    sqrt

    -
    sqrt: sqrt
    - -
    -
    -
    -

    Functions

    -
    - -

    Const bench

    -
      -
    • bench(group: string, name: string, setup: function, ...funcs: Array<function>): any
    • -
    -
      -
    • - -

      Parameters

      -
        -
      • -
        group: string
        -
      • -
      • -
        name: string
        -
      • -
      • -
        setup: function
        -
          -
        • -
            -
          • (n: number): any[]
          • -
          -
            -
          • -

            Parameters

            -
              -
            • -
              n: number
              -
            • -
            -

            Returns any[]

            -
          • -
          -
        • -
        -
      • -
      • -
        Rest ...funcs: Array<function>
        -
      • -
      -

      Returns any

      -
    • -
    -
    -
    - -

    Const flatten

    -
      -
    • flatten(input: any[]): number[]
    • -
    -
      -
    • - -

      Parameters

      -
        -
      • -
        input: any[]
        -
      • -
      -

      Returns number[]

      -
    • -
    -
    -
    - -

    Const get_dtype

    - - -
    -
    - -

    Const get_shape

    -
      -
    • get_shape(input: any): number[]
    • -
    -
      -
    • - -

      Parameters

      -
        -
      • -
        input: any
        -
      • -
      -

      Returns number[]

      -
    • -
    -
    -
    - -

    Const get_type

    - - -
    -
    - -

    Const is_typed_array

    -
      -
    • is_typed_array(input: any): boolean
    • -
    -
      -
    • - -

      Parameters

      -
        -
      • -
        input: any
        -
      • -
      -

      Returns boolean

      -
    • -
    -
    -
    - -

    Const magicHelper

    -
      -
    • magicHelper(n: number, x: number, y: number): number
    • -
    -
      -
    • - -

      Parameters

      -
        -
      • -
        n: number
        -
      • -
      • -
        x: number
        -
      • -
      • -
        y: number
        -
      • -
      -

      Returns number

      -
    • -
    -
    -
    - -

    Const r

    -
      -
    • r(n: number): v
    • -
    • r(n: number): v
    • -
    • r(n: number): v
    • -
    • r(n: number): v
    • -
    • r(n: number): v
    • -
    • r(n: number): v
    • -
    • r(n: number): v
    • -
    • r(n: number): v
    • -
    • r(n: number): v
    • -
    • r(n: number): v
    • -
    • r(n: number): v
    • -
    - -
    -
    - -

    Const rotate

    -
      -
    • rotate<T>(x: T, c: number, s: number, k: number, l: number, i: number, j: number): void
    • -
    -
      -
    • - -
      -
      -

      ┌ ┐ ┌ ┐┌ ┐ - │Skl│ │c −s││Skl│ - │ │ := │ ││ │ - │Sij│ │s c││Sij│ - └ ┘ └ ┘└ ┘

      -
      -
      -

      Type parameters

      - -

      Parameters

      -
        -
      • -
        x: T
        -
      • -
      • -
        c: number
        -
      • -
      • -
        s: number
        -
      • -
      • -
        k: number
        -
      • -
      • -
        l: number
        -
      • -
      • -
        i: number
        -
      • -
      • -
        j: number
        -
      • -
      -

      Returns void

      -
    • -
    -
    -
    -
    - -
    -
    -
    -
    -

    Legend

    -
    -
      -
    • Module
    • -
    • Object literal
    • -
    • Variable
    • -
    • Function
    • -
    • Function with type parameter
    • -
    • Index signature
    • -
    • Type alias
    • -
    • Type alias with type parameter
    • -
    -
      -
    • Enumeration
    • -
    • Enumeration member
    • -
    • Property
    • -
    • Method
    • -
    -
      -
    • Interface
    • -
    • Interface with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Index signature
    • -
    -
      -
    • Class
    • -
    • Class with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Accessor
    • -
    • Index signature
    • -
    -
      -
    • Inherited constructor
    • -
    • Inherited property
    • -
    • Inherited method
    • -
    • Inherited accessor
    • -
    -
      -
    • Protected property
    • -
    • Protected method
    • -
    • Protected accessor
    • -
    -
      -
    • Private property
    • -
    • Private method
    • -
    • Private accessor
    • -
    -
      -
    • Static property
    • -
    • Static method
    • -
    -
    -
    -
    -
    -

    Generated using TypeDoc

    -
    -
    - - - - \ No newline at end of file diff --git a/docs/interfaces/indarray.html b/docs/interfaces/indarray.html deleted file mode 100644 index 683bb116..00000000 --- a/docs/interfaces/indarray.html +++ /dev/null @@ -1,312 +0,0 @@ - - - - - - INDArray | Vectorious - - - - - -
    -
    -
    -
    - -
    -
    - Options -
    -
    - All -
      -
    • Public
    • -
    • Public/Protected
    • -
    • All
    • -
    -
    - - - - - - -
    -
    - Menu -
    -
    -
    -
    -
    -
    - -

    Interface INDArray

    -
    -
    -
    -
    -
    -
    -
    -

    Hierarchy

    -
      -
    • - INDArray -
    • -
    -
    -
    -

    Implemented by

    - -
    -
    -

    Index

    -
    -
    -
    -

    Properties

    - -
    -
    -
    -
    -
    -

    Properties

    -
    - -

    data

    - - -
    -
    - -

    dtype

    -
    dtype: DType
    - -
    -
    - -

    length

    -
    length: number
    - -
    -
    - -

    shape

    -
    shape: number[]
    - -
    -
    -
    - -
    -
    -
    -
    -

    Legend

    -
    -
      -
    • Module
    • -
    • Object literal
    • -
    • Variable
    • -
    • Function
    • -
    • Function with type parameter
    • -
    • Index signature
    • -
    • Type alias
    • -
    • Type alias with type parameter
    • -
    -
      -
    • Enumeration
    • -
    • Enumeration member
    • -
    • Property
    • -
    • Method
    • -
    -
      -
    • Interface
    • -
    • Interface with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Index signature
    • -
    -
      -
    • Class
    • -
    • Class with type parameter
    • -
    • Constructor
    • -
    • Property
    • -
    • Method
    • -
    • Accessor
    • -
    • Index signature
    • -
    -
      -
    • Inherited constructor
    • -
    • Inherited property
    • -
    • Inherited method
    • -
    • Inherited accessor
    • -
    -
      -
    • Protected property
    • -
    • Protected method
    • -
    • Protected accessor
    • -
    -
      -
    • Private property
    • -
    • Private method
    • -
    • Private accessor
    • -
    -
      -
    • Static property
    • -
    • Static method
    • -
    -
    -
    -
    -
    -

    Generated using TypeDoc

    -
    -
    - - - - \ No newline at end of file diff --git a/examples/blas.ts b/examples/blas.ts index f6c7f2b3..246cb3e0 100644 --- a/examples/blas.ts +++ b/examples/blas.ts @@ -1,4 +1,4 @@ -import v = require('../src'); +import { array } from '../src/core/array'; let nblas: any; try { @@ -7,8 +7,8 @@ try { throw new Error('no blas support!'); } -const a: v = v.array([[1, 2, 3]]); -const b: v = v.array([[3], [2], [1]]); +const a = array([[1, 2, 3]]); +const b = array([[3], [2], [1]]); console.log(`a: ${a}`); console.log(`b: ${b}`); diff --git a/examples/logistic-regression.ts b/examples/logistic-regression.ts index 539a69b2..453f3ea5 100644 --- a/examples/logistic-regression.ts +++ b/examples/logistic-regression.ts @@ -1,15 +1,20 @@ // Logistic regression example based on https://github.com/junku901/dnn -import v = require('../src'); +import { NDArray } from '../src/core'; +import { array } from '../src/core/array'; +import { map } from '../src/core/map'; +import { ones } from '../src/core/ones'; +import { subtract } from '../src/core/subtract'; +import { zeros } from '../src/core/zeros'; // Perform row-wise softmax on matrix -const softmax: (x: v) => v = (x: v): v => { +const softmax = (x: NDArray) => { const { data: d1 } = x; const [, c] = x.shape; const max: number = x.max(); let sum: number; return x - .add(v.ones(...x.shape).scale(-max)) + .add(ones(...x.shape).scale(-max)) .exp() .map((value: number, index: number) => { const i: number = Math.floor(index / c); @@ -29,10 +34,10 @@ const softmax: (x: v) => v = (x: v): v => { }; // Get col-wise mean of matrix as vector -const mean: (x: v) => v = (x: v): v => { +const mean = (x: NDArray) => { const { data: d1 } = x; const [, c] = x.shape; - const vec: v = v.zeros(c); + const vec = zeros(c); return vec.map((_: number, index: number): number => { let sum: number = 0; @@ -46,11 +51,11 @@ const mean: (x: v) => v = (x: v): v => { }; // Row-wise add vector to matrix -const addMatVec: (x: v, y: v) => v = (x: v, y: v): v => { +const addMatVec = (x: NDArray, y: NDArray) => { const { data: d1 } = y; const [, c] = x.shape; - return x.map((value: number, index: number): number => { + return map(x, (value: number, index: number): number => { const j: number = index % c; return value + d1[j]; @@ -58,37 +63,37 @@ const addMatVec: (x: v, y: v) => v = (x: v, y: v): v => { }; ((): void => { - const x: v = v.array([ + const x = array([ [1, 1, 1, 0, 0], [0, 0, 1, 1, 1], ]); - const y: v = v.array([ + const y = array([ [1, 0], [0, 1], ]); - const w: v = v.zeros(x.shape[1], y.shape[1]); - const b: v = v.zeros(y.shape[1]); + const w = zeros(x.shape[1], y.shape[1]); + const b = zeros(y.shape[1]); // Learning rate const alpha: number = 0.01; - let prob: v; - let delta: v; + let prob: NDArray; + let delta: NDArray; // Train let i: number; for (i = 0; i < 800; i += 1) { prob = softmax(addMatVec(x.multiply(w), b)); - delta = v.subtract(y, prob); + delta = subtract(y, prob); w.add(x.T.multiply(delta).scale(alpha)); b.add(mean(delta).scale(alpha)); } // Predict - const z: v = v.array([ + const z = array([ [1, 1, 0, 0, 0], [0, 0, 0, 1, 1], [1, 1, 1, 1, 1], diff --git a/examples/neural-network.ts b/examples/neural-network.ts index d49aa1df..2ded83ec 100644 --- a/examples/neural-network.ts +++ b/examples/neural-network.ts @@ -1,4 +1,8 @@ -import v = require('../src'); +import { array } from '../src/core/array'; +import { random } from '../src/core/random'; +import { ones } from '../src/core/ones'; +import { subtract } from '../src/core/subtract'; +import { map } from '../src/core/map'; const sigmoid: (ddx: boolean) => (value: number) => number = (ddx: boolean): (value: number) => number => (value: number): number => ddx @@ -7,7 +11,7 @@ const sigmoid: (ddx: boolean) => (value: number) => number = (ddx: boolean): (va ((): void => { // Input - const x: v = v.array([ + const x = array([ [0, 0, 1], [0, 1, 1], [1, 0, 1], @@ -15,25 +19,25 @@ const sigmoid: (ddx: boolean) => (value: number) => number = (ddx: boolean): (va ]); // Output - const y: v = v.array([[0, 1, 1, 0]]).T; + const y = array([[0, 1, 1, 0]]).T; // Initialize weights with values in [-1, 1) - const syn0: v = v.random(3, 4).scale(2).subtract(v.ones(3, 4)); - const syn1: v = v.random(4, 1).scale(2).subtract(v.ones(4, 1)); + const syn0 = random(3, 4).scale(2).subtract(ones(3, 4)); + const syn1 = random(4, 1).scale(2).subtract(ones(4, 1)); // Layers and deltas - let l0: v = v.array(4, 4); - let l1: v = v.array(4, 1); - let l0_delta: v = v.array(4, 4); - let l1_delta: v = v.array(4, 1); + let l0 = random(4, 4); + let l1 = random(4, 1); + let l0_delta = random(4, 4); + let l1_delta = random(4, 1); let i: number; for (i = 0; i < 60000; i += 1) { - l0 = x.multiply(syn0).map(sigmoid(false)); - l1 = l0.multiply(syn1).map(sigmoid(false)); + l0 = map(x.multiply(syn0), sigmoid(false)); + l1 = map(l0.multiply(syn1), sigmoid(false)); - l1_delta = v.subtract(y, l1).product(l1.map(sigmoid(true))); - l0_delta = l1_delta.multiply(syn1.T).product(l0.map(sigmoid(true))); + l1_delta = subtract(y, l1).product(map(l1, sigmoid(true))); + l0_delta = l1_delta.multiply(syn1.T).product(map(l0, sigmoid(true))); syn1.add(l0.T.multiply(l1_delta)); syn0.add(x.T.multiply(l0_delta)); diff --git a/examples/solve.ts b/examples/solve.ts index eebde24f..7906c642 100644 --- a/examples/solve.ts +++ b/examples/solve.ts @@ -1,7 +1,7 @@ -import v = require('../src'); +import { random } from '../src/core/random'; -const a: v = v.random(3, 3).scale(10); -const b: v = v.random(3, 1).scale(10); +const a = random(3, 3).scale(10); +const b = random(3, 1).scale(10); console.log(`a: ${a}`); console.log(`b: ${b}`); diff --git a/examples/text_raytracer.ts b/examples/text_raytracer.ts index 0b4602e8..44ad272b 100644 --- a/examples/text_raytracer.ts +++ b/examples/text_raytracer.ts @@ -2,41 +2,46 @@ // URL: https://gist.github.com/joshmarinacci/c84d0979e100d107f685 // URL: http://joshondesign.com/2014/09/17/rustlang // tslint:disable: max-classes-per-file -import v = require('../src'); +import { NDArray } from '../src/core'; +import { array } from '../src/core/array'; +import { add } from '../src/core/add'; +import { dot } from '../src/core/dot'; +import { scale } from '../src/core/scale'; +import { subtract } from '../src/core/subtract'; const render: (pixel: string) => void = process.stdout.write.bind(process.stdout); class Ray { - public dir: v; - public orig: v; + public dir: NDArray; + public orig: NDArray; - public constructor(orig: v, dir: v) { + public constructor(orig: NDArray, dir: NDArray) { this.orig = orig; this.dir = dir; } } class Sphere { - public center: v; - public color: v; + public center: NDArray; + public color: NDArray; public radius: number; - public constructor(center: v, radius: number, color: v) { + public constructor(center: NDArray, radius: number, color: NDArray) { this.center = center; this.radius = radius; this.color = color; } - public normal(pt: v): v { - return v.subtract(pt, this.center).normalize(); + public normal(pt: NDArray) { + return subtract(pt, this.center).normalize(); } } class Light { - public color: v; - public position: v; + public color: NDArray; + public position: NDArray; - public constructor(position: v, color: v) { + public constructor(position: NDArray, color: NDArray) { this.position = position; this.color = color; } @@ -66,26 +71,22 @@ const clamp: return x; }; -const diffuseShading: -(pi: v, obj: Sphere, light: Light) => v = -(pi: v, obj: Sphere, light: Light): v => { - const n: v = obj.normal(pi); - const lam1: number = v.subtract(light.position, pi).normalize().dot(n); +const diffuseShading = (pi: NDArray, obj: Sphere, light: Light) => { + const n = obj.normal(pi); + const lam1: number = subtract(light.position, pi).normalize().dot(n); const lam2: number = clamp(lam1, 0, 1); - return v.scale(light.color, lam2 * 0.5).add(v.scale(obj.color, 0.3)); + return scale(light.color, lam2 * 0.5).add(scale(obj.color, 0.3)); }; -const intersectSphere: -(ray: Ray, center: v, radius: number) => number | undefined = -(ray: Ray, center: v, radius: number): number | undefined => { - const l: v = v.subtract(center, ray.orig); +const intersectSphere = (ray: Ray, center: NDArray, radius: number): number | undefined => { + const l = subtract(center, ray.orig); const tca: number = l.dot(ray.dir); if (tca < 0) { return undefined; } - const d2: number = v.dot(l, l) - tca * tca; + const d2: number = dot(l, l) - tca * tca; const r2: number = radius * radius; if (d2 > r2) { return undefined; @@ -100,9 +101,7 @@ const intersectSphere: return t0; }; -const range: -(lo: number, hi: number, cb: (value: number) => void) => void = -(lo: number, hi: number, cb: (value: number) => void): void => { +const range = (lo: number, hi: number, cb: (value: number) => void): void => { let i: number; for (i = lo; i < hi; i += 1) { cb(i); @@ -110,19 +109,17 @@ const range: }; // Declare colors -const WHITE: v = new v([1, 1, 1]); -const RED: v = new v([1, 0, 0]); -const GREEN: v = new v([0, 1, 0]); -const BLUE: v = new v([0, 0, 1]); +const WHITE = array([1, 1, 1]); +const RED = array([1, 0, 0]); +const GREEN = array([0, 1, 0]); +const BLUE = array([0, 0, 1]); // Declare lighting -const LIGHT1: Light = new Light(new v([0.7, -1, 1.7]), WHITE); +const LIGHT1: Light = new Light(array([0.7, -1, 1.7]), WHITE); -const shadePixel: -(ray: Ray, obj: Sphere, tval: number) => number = -(ray: Ray, obj: Sphere, tval: number): number => { - const pi: v = v.add(ray.orig, v.scale(ray.dir, tval)); - const color: v = diffuseShading(pi, obj, LIGHT1); +const shadePixel = (ray: Ray, obj: Sphere, tval: number): number => { + const pi = add(ray.orig, scale(ray.dir, tval)); + const color = diffuseShading(pi, obj, LIGHT1); const col: number = (color.data[0] + color.data[1] + color.data[2]) / 3; return Math.floor(col * 6); @@ -135,17 +132,17 @@ const h: number = 10 * 4; // Declare scene const scene: Sphere[] = [ - new Sphere(new v([-1, 0, 3]), 0.3, RED), - new Sphere(new v([0, 0, 3]), 0.8, GREEN), - new Sphere(new v([1, 0, 3]), 0.4, BLUE), + new Sphere(array([-1, 0, 3]), 0.3, RED), + new Sphere(array([0, 0, 3]), 0.8, GREEN), + new Sphere(array([1, 0, 3]), 0.4, BLUE), ]; // Render scene range(0, h, (j: number): void => { range(0, w, (i: number): void => { const ray: Ray = new Ray( - new v([0, 0, 0]), - new v([(i - w / 2) / w, (j - h / 2) / h, 1]).normalize() + array([0, 0, 0]), + array([(i - w / 2) / w, (j - h / 2) / h, 1]).normalize() ); let hit: Hit | undefined; diff --git a/gulpfile.js b/gulpfile.js index 1aaf0b41..9fb68d28 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -7,26 +7,12 @@ uglify = require('gulp-uglify'), browserify = require('browserify'), source = require('vinyl-source-stream'), - del = require('del'), - typedoc = require('gulp-typedoc'); + del = require('del'); gulp.task('clean', function () { return del(['built', 'dist']); }); - gulp.task('docs', function () { - return gulp - .src(['src/**/*.ts']) - .pipe(typedoc({ - module: 'commonjs', - target: 'es5', - mode: 'file', - out: 'docs/', - name: 'Vectorious', - readme: 'none', - })) - }); - gulp.task('build', function () { return browserify({ entries: ['src/index.ts'] }) .ignore('nblas') diff --git a/jest.config.js b/jest.config.js new file mode 100644 index 00000000..a0b8ddcb --- /dev/null +++ b/jest.config.js @@ -0,0 +1,195 @@ +// For a detailed explanation regarding each configuration property, visit: +// https://jestjs.io/docs/en/configuration.html + +module.exports = { + // All imported modules in your tests should be mocked automatically + // automock: false, + + // Stop running tests after `n` failures + // bail: 0, + + // The directory where Jest should store its cached dependency information + // cacheDirectory: "/private/var/folders/py/z8cd3knn5k9cm3qwxgcm5k5h0000gn/T/jest_dx", + + // Automatically clear mock calls and instances between every test + clearMocks: true, + + // Indicates whether the coverage information should be collected while executing the test + collectCoverage: true, + + // An array of glob patterns indicating a set of files for which coverage information should be collected + // collectCoverageFrom: undefined, + + // The directory where Jest should output its coverage files + coverageDirectory: "coverage", + + // An array of regexp pattern strings used to skip coverage collection + // coveragePathIgnorePatterns: [ + // "/node_modules/" + // ], + + // Indicates which provider should be used to instrument code for coverage + coverageProvider: "v8", + + // A list of reporter names that Jest uses when writing coverage reports + // coverageReporters: [ + // "json", + // "text", + // "lcov", + // "clover" + // ], + + // An object that configures minimum threshold enforcement for coverage results + // coverageThreshold: undefined, + + // A path to a custom dependency extractor + // dependencyExtractor: undefined, + + // Make calling deprecated APIs throw helpful error messages + // errorOnDeprecated: false, + + // Force coverage collection from ignored files using an array of glob patterns + // forceCoverageMatch: [], + + // A path to a module which exports an async function that is triggered once before all test suites + // globalSetup: undefined, + + // A path to a module which exports an async function that is triggered once after all test suites + // globalTeardown: undefined, + + // A set of global variables that need to be available in all test environments + // globals: {}, + + // The maximum amount of workers used to run your tests. Can be specified as % or a number. E.g. maxWorkers: 10% will use 10% of your CPU amount + 1 as the maximum worker number. maxWorkers: 2 will use a maximum of 2 workers. + // maxWorkers: "50%", + + // An array of directory names to be searched recursively up from the requiring module's location + // moduleDirectories: [ + // "node_modules" + // ], + + // An array of file extensions your modules use + // moduleFileExtensions: [ + // "js", + // "json", + // "jsx", + // "ts", + // "tsx", + // "node" + // ], + + // A map from regular expressions to module names or to arrays of module names that allow to stub out resources with a single module + // moduleNameMapper: {}, + + // An array of regexp pattern strings, matched against all module paths before considered 'visible' to the module loader + // modulePathIgnorePatterns: [], + + // Activates notifications for test results + // notify: false, + + // An enum that specifies notification mode. Requires { notify: true } + // notifyMode: "failure-change", + + // A preset that is used as a base for Jest's configuration + // preset: undefined, + + // Run tests from one or more projects + // projects: undefined, + + // Use this configuration option to add custom reporters to Jest + // reporters: undefined, + + // Automatically reset mock state between every test + // resetMocks: false, + + // Reset the module registry before running each individual test + // resetModules: false, + + // A path to a custom resolver + // resolver: undefined, + + // Automatically restore mock state between every test + // restoreMocks: false, + + // The root directory that Jest should scan for tests and modules within + // rootDir: undefined, + + // A list of paths to directories that Jest should use to search for files in + // roots: [ + // "" + // ], + + // Allows you to use a custom runner instead of Jest's default test runner + // runner: "jest-runner", + + // The paths to modules that run some code to configure or set up the testing environment before each test + // setupFiles: [], + + // A list of paths to modules that run some code to configure or set up the testing framework before each test + // setupFilesAfterEnv: [], + + // The number of seconds after which a test is considered as slow and reported as such in the results. + // slowTestThreshold: 5, + + // A list of paths to snapshot serializer modules Jest should use for snapshot testing + // snapshotSerializers: [], + + // The test environment that will be used for testing + testEnvironment: "node", + + // Options that will be passed to the testEnvironment + // testEnvironmentOptions: {}, + + // Adds a location field to test results + // testLocationInResults: false, + + // The glob patterns Jest uses to detect test files + // testMatch: [ + // "**/__tests__/**/*.[jt]s?(x)", + // "**/?(*.)+(spec|test).[tj]s?(x)" + // ], + + // An array of regexp pattern strings that are matched against all test paths, matched tests are skipped + // testPathIgnorePatterns: [ + // "/node_modules/" + // ], + + // The regexp pattern or array of patterns that Jest uses to detect test files + // testRegex: [], + + // This option allows the use of a custom results processor + // testResultsProcessor: undefined, + + // This option allows use of a custom test runner + // testRunner: "jasmine2", + + // This option sets the URL for the jsdom environment. It is reflected in properties such as location.href + // testURL: "http://localhost", + + // Setting this value to "fake" allows the use of fake timers for functions such as "setTimeout" + // timers: "real", + + // A map from regular expressions to paths to transformers + // transform: undefined, + transform: { + "\\.ts?$": "ts-jest", + } + + // An array of regexp pattern strings that are matched against all source file paths, matched files will skip transformation + // transformIgnorePatterns: [ + // "/node_modules/", + // "\\.pnp\\.[^\\/]+$" + // ], + + // An array of regexp pattern strings that are matched against all modules before the module loader will automatically return a mock for them + // unmockedModulePathPatterns: undefined, + + // Indicates whether each individual test should be reported during the run + // verbose: undefined, + + // An array of regexp patterns that are matched against all source file paths before re-running tests in watch mode + // watchPathIgnorePatterns: [], + + // Whether to use watchman for file crawling + // watchman: true, +}; diff --git a/jsdoc.json b/jsdoc.json new file mode 100644 index 00000000..d3a6ade6 --- /dev/null +++ b/jsdoc.json @@ -0,0 +1,37 @@ +{ + "tags": { + "allowUnknownTags": false, + "dictionaries": ["jsdoc"] + }, + "source": { + "include": ["built", "package.json", "README.md"], + "includePattern": "\\.(jsx|js)$", + "excludePattern": "(node_modules|benchmarks|coverage|dist|docs|examples)" + }, + "plugins": [ + "plugins/markdown" + ], + "templates": { + "cleverLinks": false, + "monospaceLinks": true, + "default": { + "layoutFile": "docs.tmpl" + } + }, + "opts": { + "destination": "./docs/", + "encoding": "utf8", + "private": true, + "recurse": true, + "template": "./node_modules/tidy-jsdoc", + "prism-theme": "prism-custom" + }, + "metadata": { + "title": "Vectorious" + }, + "styles": { + "primary-color": "#0E6EB8", + "secondary-color": "#000000", + "nav-title-size": "0" + } +} diff --git a/package-lock.json b/package-lock.json index 41b4d753..542463a3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,49 +1,42 @@ { "name": "vectorious", - "version": "6.0.0-beta.11", + "version": "6.0.0", "lockfileVersion": 1, "requires": true, "dependencies": { "@babel/code-frame": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", - "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "dev": true, "requires": { - "@babel/highlight": "^7.0.0" + "@babel/highlight": "^7.10.4" } }, "@babel/core": { - "version": "7.7.7", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.7.7.tgz", - "integrity": "sha512-jlSjuj/7z138NLZALxVgrx13AOtqip42ATZP7+kYl53GvDV6+4dCek1mVUo8z8c8Xnw/mx2q3d9HWh3griuesQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.7.7", - "@babel/helpers": "^7.7.4", - "@babel/parser": "^7.7.7", - "@babel/template": "^7.7.4", - "@babel/traverse": "^7.7.4", - "@babel/types": "^7.7.4", + "version": "7.11.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.11.6.tgz", + "integrity": "sha512-Wpcv03AGnmkgm6uS6k8iwhIwTrcP0m17TL1n1sy7qD0qelDu4XNeW0dN0mHfa+Gei211yDaLoEe/VlbXQzM4Bg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.11.6", + "@babel/helper-module-transforms": "^7.11.0", + "@babel/helpers": "^7.10.4", + "@babel/parser": "^7.11.5", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.11.5", + "@babel/types": "^7.11.5", "convert-source-map": "^1.7.0", "debug": "^4.1.0", - "json5": "^2.1.0", - "lodash": "^4.17.13", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", "resolve": "^1.3.2", "semver": "^5.4.1", "source-map": "^0.5.0" }, "dependencies": { - "@babel/code-frame": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", - "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.0.0" - } - }, "convert-source-map": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", @@ -62,6 +55,12 @@ "ms": "^2.1.1" } }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -71,111 +70,303 @@ } }, "@babel/generator": { - "version": "7.7.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.7.tgz", - "integrity": "sha512-/AOIBpHh/JU1l0ZFS4kiRCBnLi6OTHzh0RPk3h9isBxkkqELtQNFi1Vr/tiG9p1yfoUdKVwISuXWQR+hwwM4VQ==", + "version": "7.11.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.6.tgz", + "integrity": "sha512-DWtQ1PV3r+cLbySoHrwn9RWEgKMBLLma4OBQloPRyDYvc5msJM9kvTLo1YnlJd1P/ZuKbdli3ijr5q3FvAF3uA==", "dev": true, "requires": { - "@babel/types": "^7.7.4", + "@babel/types": "^7.11.5", "jsesc": "^2.5.1", - "lodash": "^4.17.13", "source-map": "^0.5.0" } }, "@babel/helper-function-name": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz", - "integrity": "sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.7.4", - "@babel/template": "^7.7.4", - "@babel/types": "^7.7.4" + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/helper-get-function-arity": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz", - "integrity": "sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.11.0.tgz", + "integrity": "sha512-JbFlKHFntRV5qKw3YC0CvQnDZ4XMwgzzBbld7Ly4Mj4cbFy3KywcR8NtNctRToMWJOVvLINJv525Gd6wwVEx/Q==", + "dev": true, + "requires": { + "@babel/types": "^7.11.0" + } + }, + "@babel/helper-module-imports": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz", + "integrity": "sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-module-transforms": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz", + "integrity": "sha512-02EVu8COMuTRO1TAzdMtpBPbe6aQ1w/8fePD2YgQmxZU4gpNWaL9gK3Jp7dxlkUlUCJOTaSeA+Hrm1BRQwqIhg==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-simple-access": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/template": "^7.10.4", + "@babel/types": "^7.11.0", + "lodash": "^4.17.19" + }, + "dependencies": { + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", + "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + }, + "@babel/helper-replace-supers": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz", + "integrity": "sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A==", "dev": true, "requires": { - "@babel/types": "^7.7.4" + "@babel/helper-member-expression-to-functions": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-simple-access": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz", + "integrity": "sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw==", + "dev": true, + "requires": { + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/helper-split-export-declaration": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz", - "integrity": "sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", + "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", "dev": true, "requires": { - "@babel/types": "^7.7.4" + "@babel/types": "^7.11.0" } }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, "@babel/helpers": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.7.4.tgz", - "integrity": "sha512-ak5NGZGJ6LV85Q1Zc9gn2n+ayXOizryhjSUBTdu5ih1tlVCJeuQENzc4ItyCVhINVXvIT/ZQ4mheGIsfBkpskg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.10.4.tgz", + "integrity": "sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA==", "dev": true, "requires": { - "@babel/template": "^7.7.4", - "@babel/traverse": "^7.7.4", - "@babel/types": "^7.7.4" + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/highlight": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", - "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", "dev": true, "requires": { + "@babel/helper-validator-identifier": "^7.10.4", "chalk": "^2.0.0", - "esutils": "^2.0.2", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.7.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.7.tgz", - "integrity": "sha512-WtTZMZAZLbeymhkd/sEaPD8IQyGAhmuTuvTzLiCFM7iXiVdY0gc0IaI+cW0fh1BnSMbJSzXX6/fHllgHKwHhXw==", + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.5.tgz", + "integrity": "sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q==", "dev": true }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.4.tgz", + "integrity": "sha512-GCSBF7iUle6rNugfURwNmCGG3Z/2+opxAMLs1nND4bhEG5PuxTIggDBoeYYSujAlLtsupzOHYJQgPS3pivwXIA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/polyfill": { + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.11.5.tgz", + "integrity": "sha512-FunXnE0Sgpd61pKSj2OSOs1D44rKTD3pGOfGilZ6LGrrIH0QEtJlTjqOqdF8Bs98JmjfGhni2BBkTfv9KcKJ9g==", + "dev": true, + "requires": { + "core-js": "^2.6.5", + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/runtime": { + "version": "7.11.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.11.2.tgz", + "integrity": "sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, "@babel/template": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.4.tgz", - "integrity": "sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.4", - "@babel/types": "^7.7.4" + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/traverse": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.4.tgz", - "integrity": "sha512-P1L58hQyupn8+ezVA2z5KBm4/Zr4lCC8dwKCMYzsa5jFMDMQAzaBNy9W5VjB+KAmBjb40U7a/H6ao+Xo+9saIw==", + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.5.tgz", + "integrity": "sha512-EjiPXt+r7LiCZXEfRpSJd+jUMnBd4/9OUv7Nx3+0u9+eimMwJmG0Q98lw4/289JCoxSE8OolDMNZaaF/JZ69WQ==", "dev": true, "requires": { - "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.7.4", - "@babel/helper-function-name": "^7.7.4", - "@babel/helper-split-export-declaration": "^7.7.4", - "@babel/parser": "^7.7.4", - "@babel/types": "^7.7.4", + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.11.5", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/parser": "^7.11.5", + "@babel/types": "^7.11.5", "debug": "^4.1.0", "globals": "^11.1.0", - "lodash": "^4.17.13" + "lodash": "^4.17.19" }, "dependencies": { - "@babel/code-frame": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", - "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.0.0" - } - }, "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", @@ -185,6 +376,12 @@ "ms": "^2.1.1" } }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -194,24 +391,49 @@ } }, "@babel/types": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz", - "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==", + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", + "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" + }, + "dependencies": { + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } + } + }, + "@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "@cnakazawa/watch": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", + "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", + "dev": true, + "requires": { + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" } }, "@istanbuljs/load-nyc-config": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.0.0.tgz", - "integrity": "sha512-ZR0rq/f/E4f4XcgnDvtMWXCUJpi8eO0rssVhmztsZqLIEFA9UUP9zmpE0VxlM+kv/E1ul2I876Fwil2ayptDVg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "dev": true, "requires": { "camelcase": "^5.3.1", "find-up": "^4.1.0", + "get-package-type": "^0.1.0", "js-yaml": "^3.13.1", "resolve-from": "^5.0.0" }, @@ -241,6 +463,15 @@ "p-locate": "^4.1.0" } }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, "p-locate": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", @@ -264,1400 +495,1746 @@ "integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==", "dev": true }, - "@nodelib/fs.scandir": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.1.tgz", - "integrity": "sha512-NT/skIZjgotDSiXs0WqYhgcuBKhUMgfekCmCGtkUAiLqZdOnrdjmZr9wRl3ll64J9NF79uZ4fk16Dx0yMc/Xbg==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.1", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.1.tgz", - "integrity": "sha512-+RqhBlLn6YRBGOIoVYthsG0J9dfpO79eJyN7BYBkZJtfqrBwf2KK+rD/M/yjZR6WBmIhAgOV7S60eCgaSWtbFw==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.2.tgz", - "integrity": "sha512-J/DR3+W12uCzAJkw7niXDcqcKBg6+5G5Q/ZpThpGNzAUz70eOR6RV4XnnSN01qHZiVl0eavoxJsBypQoKsV2QQ==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.1", - "fastq": "^1.6.0" - } - }, - "@types/color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", - "dev": true - }, - "@types/events": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", - "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", - "dev": true - }, - "@types/glob": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", - "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", - "dev": true, - "requires": { - "@types/events": "*", - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "@types/minimatch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", - "dev": true - }, - "@types/mocha": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-7.0.0.tgz", - "integrity": "sha512-6mh1VlA343Ax31blo37+KZ0DxDOA8b6cL963xPOOt7fMYtG07aJJ+0FRLvcDO4KrL45faOS104G7kwAjZc9l4w==", - "dev": true - }, - "@types/node": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.1.tgz", - "integrity": "sha512-FAYBGwC+W6F9+huFIDtn43cpy7+SzG+atzRiTfdp3inUKL2hXnd4rG8hylJLIh4+hqrQy1P17kvJByE/z825hA==", - "dev": true - }, - "JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", - "dev": true, - "requires": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - } - }, - "acorn": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", - "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", - "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-node": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.7.0.tgz", - "integrity": "sha512-XhahLSsCB6X6CJbe+uNu3Mn9sJBNFxtBN9NLgAOQovfS6Kh0lDUtmlclhjn9CvEK7A7YyRU13PXlNcpSiLI9Yw==", + "@jest/console": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-26.3.0.tgz", + "integrity": "sha512-/5Pn6sJev0nPUcAdpJHMVIsA8sKizL2ZkcKPE5+dJrCccks7tcM7c9wbgHudBJbxXLoTbqsHkG1Dofoem4F09w==", "dev": true, "requires": { - "acorn": "^6.1.1", - "acorn-dynamic-import": "^4.0.0", - "acorn-walk": "^6.1.1", - "xtend": "^4.0.1" + "@jest/types": "^26.3.0", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^26.3.0", + "jest-util": "^26.3.0", + "slash": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, - "acorn-walk": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", - "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", - "dev": true - }, - "agent-base": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", - "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", - "dev": true, - "requires": { - "es6-promisify": "^5.0.0" - } + "@jest/core": { + "version": "26.4.2", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-26.4.2.tgz", + "integrity": "sha512-sDva7YkeNprxJfepOctzS8cAk9TOekldh+5FhVuXS40+94SHbiicRO1VV2tSoRtgIo+POs/Cdyf8p76vPTd6dg==", + "dev": true, + "requires": { + "@jest/console": "^26.3.0", + "@jest/reporters": "^26.4.1", + "@jest/test-result": "^26.3.0", + "@jest/transform": "^26.3.0", + "@jest/types": "^26.3.0", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-changed-files": "^26.3.0", + "jest-config": "^26.4.2", + "jest-haste-map": "^26.3.0", + "jest-message-util": "^26.3.0", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.4.0", + "jest-resolve-dependencies": "^26.4.2", + "jest-runner": "^26.4.2", + "jest-runtime": "^26.4.2", + "jest-snapshot": "^26.4.2", + "jest-util": "^26.3.0", + "jest-validate": "^26.4.2", + "jest-watcher": "^26.3.0", + "micromatch": "^4.0.2", + "p-each-series": "^2.1.0", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } + } }, - "aggregate-error": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.0.tgz", - "integrity": "sha512-yKD9kEoJIR+2IFqhMwayIBgheLYbB3PS2OBhWae1L/ODTd/JF/30cW0bc9TqzRL3k4U41Dieu3BF4I29p8xesA==", + "@jest/environment": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-26.3.0.tgz", + "integrity": "sha512-EW+MFEo0DGHahf83RAaiqQx688qpXgl99wdb8Fy67ybyzHwR1a58LHcO376xQJHfmoXTu89M09dH3J509cx2AA==", "dev": true, "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^3.2.0" + "@jest/fake-timers": "^26.3.0", + "@jest/types": "^26.3.0", + "@types/node": "*", + "jest-mock": "^26.3.0" } }, - "amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", - "dev": true - }, - "ansi-colors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", - "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", + "@jest/fake-timers": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-26.3.0.tgz", + "integrity": "sha512-ZL9ytUiRwVP8ujfRepffokBvD2KbxbqMhrXSBhSdAhISCw3gOkuntisiSFv+A6HN0n0fF4cxzICEKZENLmW+1A==", "dev": true, "requires": { - "ansi-wrap": "^0.1.0" + "@jest/types": "^26.3.0", + "@sinonjs/fake-timers": "^6.0.1", + "@types/node": "*", + "jest-message-util": "^26.3.0", + "jest-mock": "^26.3.0", + "jest-util": "^26.3.0" } }, - "ansi-cyan": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-cyan/-/ansi-cyan-0.1.1.tgz", - "integrity": "sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM=", + "@jest/globals": { + "version": "26.4.2", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-26.4.2.tgz", + "integrity": "sha512-Ot5ouAlehhHLRhc+sDz2/9bmNv9p5ZWZ9LE1pXGGTCXBasmi5jnYjlgYcYt03FBwLmZXCZ7GrL29c33/XRQiow==", "dev": true, "requires": { - "ansi-wrap": "0.1.0" + "@jest/environment": "^26.3.0", + "@jest/types": "^26.3.0", + "expect": "^26.4.2" } }, - "ansi-gray": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", - "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", + "@jest/reporters": { + "version": "26.4.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-26.4.1.tgz", + "integrity": "sha512-aROTkCLU8++yiRGVxLsuDmZsQEKO6LprlrxtAuzvtpbIFl3eIjgIf3EUxDKgomkS25R9ZzwGEdB5weCcBZlrpQ==", "dev": true, "requires": { - "ansi-wrap": "0.1.0" + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^26.3.0", + "@jest/test-result": "^26.3.0", + "@jest/transform": "^26.3.0", + "@jest/types": "^26.3.0", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.4", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^4.0.3", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "jest-haste-map": "^26.3.0", + "jest-resolve": "^26.4.0", + "jest-util": "^26.3.0", + "jest-worker": "^26.3.0", + "node-notifier": "^8.0.0", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^5.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "istanbul-reports": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", + "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, - "ansi-red": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz", - "integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=", + "@jest/source-map": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-26.3.0.tgz", + "integrity": "sha512-hWX5IHmMDWe1kyrKl7IhFwqOuAreIwHhbe44+XH2ZRHjrKIh0LO5eLQ/vxHFeAfRwJapmxuqlGAEYLadDq6ZGQ==", "dev": true, "requires": { - "ansi-wrap": "0.1.0" + "callsites": "^3.0.0", + "graceful-fs": "^4.2.4", + "source-map": "^0.6.0" + }, + "dependencies": { + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "@jest/test-result": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-26.3.0.tgz", + "integrity": "sha512-a8rbLqzW/q7HWheFVMtghXV79Xk+GWwOK1FrtimpI5n1la2SY0qHri3/b0/1F0Ve0/yJmV8pEhxDfVwiUBGtgg==", "dev": true, "requires": { - "color-convert": "^1.9.0" + "@jest/console": "^26.3.0", + "@jest/types": "^26.3.0", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" } }, - "ansi-wrap": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", - "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", - "dev": true - }, - "ansi_up": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/ansi_up/-/ansi_up-1.3.0.tgz", - "integrity": "sha1-yclGv8C5u16qBgaEvyq6r+aLvUQ=", - "dev": true - }, - "any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=", - "dev": true - }, - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "@jest/test-sequencer": { + "version": "26.4.2", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.4.2.tgz", + "integrity": "sha512-83DRD8N3M0tOhz9h0bn6Kl6dSp+US6DazuVF8J9m21WAp5x7CqSMaNycMP0aemC/SH/pDQQddbsfHRTBXVUgog==", "dev": true, "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "append-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", - "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=", + "@jest/test-result": "^26.3.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.3.0", + "jest-runner": "^26.4.2", + "jest-runtime": "^26.4.2" + }, + "dependencies": { + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + } + } + }, + "@jest/transform": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.3.0.tgz", + "integrity": "sha512-Isj6NB68QorGoFWvcOjlUhpkT56PqNIsXKR7XfvoDlCANn/IANlh8DrKAA2l2JKC3yWSMH5wS0GwuQM20w3b2A==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^26.3.0", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.3.0", + "jest-regex-util": "^26.0.0", + "jest-util": "^26.3.0", + "micromatch": "^4.0.2", + "pirates": "^4.0.1", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "@jest/types": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.3.0.tgz", + "integrity": "sha512-BDPG23U0qDeAvU4f99haztXwdAg3hz4El95LkAM+tHAqqhiVzRpEGHHU8EDxT/AnxOrA65YjLBwDahdJ9pTLJQ==", "dev": true, "requires": { - "buffer-equal": "^1.0.0" + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, - "append-transform": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", - "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", + "@nodelib/fs.scandir": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.1.tgz", + "integrity": "sha512-NT/skIZjgotDSiXs0WqYhgcuBKhUMgfekCmCGtkUAiLqZdOnrdjmZr9wRl3ll64J9NF79uZ4fk16Dx0yMc/Xbg==", "dev": true, "requires": { - "default-require-extensions": "^3.0.0" + "@nodelib/fs.stat": "2.0.1", + "run-parallel": "^1.1.9" } }, - "archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", - "dev": true - }, - "arg": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz", - "integrity": "sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==", + "@nodelib/fs.stat": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.1.tgz", + "integrity": "sha512-+RqhBlLn6YRBGOIoVYthsG0J9dfpO79eJyN7BYBkZJtfqrBwf2KK+rD/M/yjZR6WBmIhAgOV7S60eCgaSWtbFw==", "dev": true }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "@nodelib/fs.walk": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.2.tgz", + "integrity": "sha512-J/DR3+W12uCzAJkw7niXDcqcKBg6+5G5Q/ZpThpGNzAUz70eOR6RV4XnnSN01qHZiVl0eavoxJsBypQoKsV2QQ==", "dev": true, "requires": { - "sprintf-js": "~1.0.2" + "@nodelib/fs.scandir": "2.1.1", + "fastq": "^1.6.0" } }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true + "@sinonjs/commons": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.1.tgz", + "integrity": "sha512-892K+kWUUi3cl+LlqEWIDrhvLgdL79tECi8JZUyq6IviKy/DNhuzCRlbHUjxK89f4ypPMMaFnFuR9Ie6DoIMsw==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } }, - "arr-filter": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", - "integrity": "sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4=", + "@sinonjs/fake-timers": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz", + "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==", "dev": true, "requires": { - "make-iterator": "^1.0.0" + "@sinonjs/commons": "^1.7.0" } }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "@types/babel-types": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.9.tgz", + "integrity": "sha512-qZLoYeXSTgQuK1h7QQS16hqLGdmqtRmN8w/rl3Au/l5x/zkHx+a4VHrHyBsi1I1vtK2oBHxSzKIu0R5p6spdOA==", "dev": true }, - "arr-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", - "integrity": "sha1-Onc0X/wc814qkYJWAfnljy4kysQ=", + "@types/babel__core": { + "version": "7.1.9", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.9.tgz", + "integrity": "sha512-sY2RsIJ5rpER1u3/aQ8OFSI7qGIy8o1NEEbgb2UaJcvOtXOMpd39ko723NBpjQFg9SIX7TXtjejZVGeIMLhoOw==", "dev": true, "requires": { - "make-iterator": "^1.0.0" + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" } }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, - "array-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", - "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", - "dev": true + "@types/babel__generator": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.1.tgz", + "integrity": "sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } }, - "array-filter": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", - "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", - "dev": true + "@types/babel__template": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.0.2.tgz", + "integrity": "sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } }, - "array-initial": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", - "integrity": "sha1-L6dLJnOTccOUe9enrcc74zSz15U=", + "@types/babel__traverse": { + "version": "7.0.14", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.14.tgz", + "integrity": "sha512-8w9szzKs14ZtBVuP6Wn7nMLRJ0D6dfB0VEBEyRgxrZ/Ln49aNMykrghM2FaNn4FJRzNppCSa0Rv9pBRM5Xc3wg==", "dev": true, "requires": { - "array-slice": "^1.0.0", - "is-number": "^4.0.0" - }, - "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 - } + "@babel/types": "^7.3.0" } }, - "array-last": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", - "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", + "@types/babylon": { + "version": "6.16.5", + "resolved": "https://registry.npmjs.org/@types/babylon/-/babylon-6.16.5.tgz", + "integrity": "sha512-xH2e58elpj1X4ynnKp9qSnWlsRTIs6n3tgLGNfwAGHwePw0mulHQllV34n0T25uYSu1k0hRKkWXF890B1yS47w==", "dev": true, "requires": { - "is-number": "^4.0.0" - }, - "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 - } + "@types/babel-types": "*" } }, - "array-map": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", - "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", - "dev": true + "@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==" }, - "array-reduce": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", - "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", + "@types/events": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", + "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", "dev": true }, - "array-slice": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", - "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", - "dev": true + "@types/glob": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", + "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", + "dev": true, + "requires": { + "@types/events": "*", + "@types/minimatch": "*", + "@types/node": "*" + } }, - "array-sort": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", - "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", + "@types/graceful-fs": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.3.tgz", + "integrity": "sha512-AiHRaEB50LQg0pZmm659vNBb9f4SJ0qrAnteuzhSeAUcJKxoYgEnprg/83kppCnc2zvtCKbdZry1a5pVY3lOTQ==", "dev": true, "requires": { - "default-compare": "^1.0.0", - "get-value": "^2.0.6", - "kind-of": "^5.0.2" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } + "@types/node": "*" } }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "@types/istanbul-lib-coverage": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", + "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==", "dev": true }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } }, - "asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "@types/istanbul-reports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", + "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", "dev": true, "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" + "@types/istanbul-lib-report": "*" } }, - "assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "@types/jest": { + "version": "26.0.13", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.13.tgz", + "integrity": "sha512-sCzjKow4z9LILc6DhBvn5AkIfmQzDZkgtVVKmGwVrs5tuid38ws281D4l+7x1kP487+FlKDh5kfMZ8WSPAdmdA==", "dev": true, "requires": { - "object-assign": "^4.1.1", - "util": "0.10.3" + "jest-diff": "^25.2.1", + "pretty-format": "^25.2.1" }, "dependencies": { - "inherits": { + "@jest/types": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.5.0.tgz", + "integrity": "sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^15.0.0", + "chalk": "^3.0.0" + } + }, + "@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "diff-sequences": { + "version": "25.2.6", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-25.2.6.tgz", + "integrity": "sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "jest-diff": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-25.5.0.tgz", + "integrity": "sha512-z1kygetuPiREYdNIumRpAHY6RXiGmp70YHptjdaxTWGmA085W3iCnXNx0DhflK3vwrKmrRWyY1wUpkPMVxMK7A==", "dev": true, "requires": { - "inherits": "2.0.1" + "chalk": "^3.0.0", + "diff-sequences": "^25.2.6", + "jest-get-type": "^25.2.6", + "pretty-format": "^25.5.0" + } + }, + "jest-get-type": { + "version": "25.2.6", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-25.2.6.tgz", + "integrity": "sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig==", + "dev": true + }, + "pretty-format": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz", + "integrity": "sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^16.12.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" } } } }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", "dev": true }, - "async-done": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", - "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.2", - "process-nextick-args": "^2.0.0", - "stream-exhaust": "^1.0.1" - } + "@types/mocha": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-8.0.3.tgz", + "integrity": "sha512-vyxR57nv8NfcU0GZu8EUXZLTbCMupIUwy95LJ6lllN+JRPG25CwMHoB1q5xKh8YKhQnHYRAn4yW2yuHbf/5xgg==", + "dev": true }, - "async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "@types/node": { + "version": "14.10.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.10.1.tgz", + "integrity": "sha512-aYNbO+FZ/3KGeQCEkNhHFRIzBOUgc7QvcVNKXbfnhDkSfwUv91JsQQa10rDgKSTSLkXZ1UIyPe4FJJNVgw1xWQ==", "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==", + "@types/normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", "dev": true }, - "async-settle": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", - "integrity": "sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs=", + "@types/prettier": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.1.1.tgz", + "integrity": "sha512-2zs+O+UkDsJ1Vcp667pd3f8xearMdopz/z54i99wtRDI5KLmngk7vlrYZD0ZjKHaROR03EznlBbVY9PfAEyJIQ==", + "dev": true + }, + "@types/stack-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", + "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==", + "dev": true + }, + "@types/yargs": { + "version": "15.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.5.tgz", + "integrity": "sha512-Dk/IDOPtOgubt/IaevIUbTgV7doaKkoorvOyYM2CMwuDyP89bekI7H4xLIwunNYiK9jhCkmc6pUrJk3cj2AB9w==", "dev": true, "requires": { - "async-done": "^1.2.2" + "@types/yargs-parser": "*" } }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "@types/yargs-parser": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-15.0.0.tgz", + "integrity": "sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==", "dev": true }, - "bach": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", - "integrity": "sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA=", + "JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", "dev": true, "requires": { - "arr-filter": "^1.1.1", - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "array-each": "^1.0.0", - "array-initial": "^1.0.0", - "array-last": "^1.1.1", - "async-done": "^1.2.2", - "async-settle": "^1.0.0", - "now-and-later": "^2.0.0" + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" } }, - "backbone": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/backbone/-/backbone-1.4.0.tgz", - "integrity": "sha512-RLmDrRXkVdouTg38jcgHhyQ/2zjg7a8E6sz2zxfz21Hh17xDJYUHBZimVIt5fUyS8vbfpeSmTL3gUjTEvUV3qQ==", + "abab": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", + "dev": true + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", "dev": true, - "requires": { - "underscore": ">=1.8.3" - } + "optional": true }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", "dev": true }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "acorn-globals": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz", + "integrity": "sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=", "dev": true, "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" + "acorn": "^4.0.4" }, "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "dev": true + } + } + }, + "acorn-node": { + "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": "^7.0.0", + "acorn-walk": "^7.0.0", + "xtend": "^4.0.2" + }, + "dependencies": { + "acorn": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.0.tgz", + "integrity": "sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w==", + "dev": true }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true } } }, - "base64-js": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", - "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", + "acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", "dev": true }, - "benchmark": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/benchmark/-/benchmark-2.1.4.tgz", - "integrity": "sha1-CfPeMckWQl1JjMLuVloOvzwqVik=", + "agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", "dev": true, "requires": { - "lodash": "^4.17.4", - "platform": "^1.3.3" + "es6-promisify": "^5.0.0" } }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true - }, - "bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", - "dev": true + "aggregate-error": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.0.tgz", + "integrity": "sha512-yKD9kEoJIR+2IFqhMwayIBgheLYbB3PS2OBhWae1L/ODTd/JF/30cW0bc9TqzRL3k4U41Dieu3BF4I29p8xesA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^3.2.0" + } }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "ajv": { + "version": "6.12.5", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.5.tgz", + "integrity": "sha512-lRF8RORchjpKG50/WFf8xmg7sgCLFiYNNnqdKflk63whMQcWR5ngGjiSXkL9bjxy6B2npOK2HSMN49jEBMSkag==", "dev": true, "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", "dev": true, "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" }, "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-buffer": "^1.1.5" } } } }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", "dev": true }, - "brout": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/brout/-/brout-1.2.0.tgz", - "integrity": "sha1-B3Hav3ltMS8KfB8SgeAPdmDPcC8=", - "dev": true, - "requires": { - "through2": "^2.0.0" - } - }, - "browser-pack": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.1.0.tgz", - "integrity": "sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA==", + "ansi-colors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", + "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", "dev": true, "requires": { - "JSONStream": "^1.0.3", - "combine-source-map": "~0.8.0", - "defined": "^1.0.0", - "safe-buffer": "^5.1.1", - "through2": "^2.0.0", - "umd": "^3.0.0" + "ansi-wrap": "^0.1.0" } }, - "browser-reload": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/browser-reload/-/browser-reload-1.1.0.tgz", - "integrity": "sha1-UTwetc6RP+NqC6GOE5CcsHtCWpI=", - "dev": true - }, - "browser-resolve": { - "version": "1.11.3", - "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", - "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", + "ansi-escapes": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", "dev": true, "requires": { - "resolve": "1.1.7" + "type-fest": "^0.11.0" }, "dependencies": { - "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", "dev": true } } }, - "browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "browserify": { - "version": "16.3.0", - "resolved": "https://registry.npmjs.org/browserify/-/browserify-16.3.0.tgz", - "integrity": "sha512-BWaaD7alyGZVEBBwSTYx4iJF5DswIGzK17o8ai9w4iKRbYpk3EOiprRHMRRA8DCZFmFeOdx7A385w2XdFvxWmg==", + "ansi-gray": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", + "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", "dev": true, "requires": { - "JSONStream": "^1.0.3", - "assert": "^1.4.0", - "browser-pack": "^6.0.1", - "browser-resolve": "^1.11.0", - "browserify-zlib": "~0.2.0", - "buffer": "^5.0.2", - "cached-path-relative": "^1.0.0", - "concat-stream": "^1.6.0", - "console-browserify": "^1.1.0", - "constants-browserify": "~1.0.0", - "crypto-browserify": "^3.0.0", - "defined": "^1.0.0", - "deps-sort": "^2.0.0", - "domain-browser": "^1.2.0", - "duplexer2": "~0.1.2", - "events": "^2.0.0", - "glob": "^7.1.0", - "has": "^1.0.0", - "htmlescape": "^1.1.0", - "https-browserify": "^1.0.0", - "inherits": "~2.0.1", - "insert-module-globals": "^7.0.0", - "labeled-stream-splicer": "^2.0.0", - "mkdirp": "^0.5.0", - "module-deps": "^6.0.0", - "os-browserify": "~0.3.0", - "parents": "^1.0.1", - "path-browserify": "~0.0.0", - "process": "~0.11.0", - "punycode": "^1.3.2", - "querystring-es3": "~0.2.0", - "read-only-stream": "^2.0.0", - "readable-stream": "^2.0.2", - "resolve": "^1.1.4", - "shasum": "^1.0.0", - "shell-quote": "^1.6.1", - "stream-browserify": "^2.0.0", - "stream-http": "^2.0.0", - "string_decoder": "^1.1.1", - "subarg": "^1.0.0", - "syntax-error": "^1.1.1", - "through2": "^2.0.0", - "timers-browserify": "^1.0.1", - "tty-browserify": "0.0.1", - "url": "~0.11.0", - "util": "~0.10.1", - "vm-browserify": "^1.0.0", - "xtend": "^4.0.0" + "ansi-wrap": "0.1.0" } }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "http://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "color-convert": "^1.9.0" } }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", + "dev": true + }, + "ansi_up": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ansi_up/-/ansi_up-1.3.0.tgz", + "integrity": "sha1-yclGv8C5u16qBgaEvyq6r+aLvUQ=", + "dev": true + }, + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=", + "dev": true + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", "dev": true, "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" } }, - "browserify-des": { + "append-buffer": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", + "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=", "dev": true, "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" + "buffer-equal": "^1.0.0" } }, - "browserify-rsa": { - "version": "4.0.1", - "resolved": "http://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", "dev": true, - "requires": { - "bn.js": "^4.1.0", - "randombytes": "^2.0.1" - } + "optional": true }, - "browserify-sign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", - "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", - "dev": true, - "requires": { - "bn.js": "^4.1.1", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.2", - "elliptic": "^6.0.0", - "inherits": "^2.0.1", - "parse-asn1": "^5.0.0" - } + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "dev": true }, - "browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", "dev": true, + "optional": true, "requires": { - "pako": "~1.0.5" + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" } }, - "buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", - "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4" + "sprintf-js": "~1.0.2" } }, - "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-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true - }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true - }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", "dev": true }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "arr-filter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", + "integrity": "sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4=", "dev": true, "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" + "make-iterator": "^1.0.0" } }, - "cached-path-relative": { - "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==", + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", "dev": true }, - "caching-transform": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", - "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", + "arr-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", + "integrity": "sha1-Onc0X/wc814qkYJWAfnljy4kysQ=", "dev": true, "requires": { - "hasha": "^5.0.0", - "make-dir": "^3.0.0", - "package-hash": "^4.0.0", - "write-file-atomic": "^3.0.0" + "make-iterator": "^1.0.0" } }, - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", "dev": true }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", + "dev": true + }, + "array-initial": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", + "integrity": "sha1-L6dLJnOTccOUe9enrcc74zSz15U=", "dev": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "array-slice": "^1.0.0", + "is-number": "^4.0.0" }, "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } + "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 } } }, - "chokidar": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.6.tgz", - "integrity": "sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g==", + "array-last": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", + "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", "dev": true, "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" + "is-number": "^4.0.0" }, "dependencies": { - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "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 } } }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } + "array-slice": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", + "dev": true }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "array-sort": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", + "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", "dev": true, "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" + "default-compare": "^1.0.0", + "get-value": "^2.0.6", + "kind-of": "^5.0.2" }, "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true } } }, - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "array.prototype.map": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array.prototype.map/-/array.prototype.map-1.0.2.tgz", + "integrity": "sha512-Az3OYxgsa1g7xDYp86l0nnN4bcmuEITGe1rbdEBVkrqkzMgDcbdQ2R7r41pNzti+4NMces3H8gMmuioZUilLgw==", "dev": true, "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "es-array-method-boxes-properly": "^1.0.0", + "is-string": "^1.0.4" } }, - "clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", - "dev": true - }, - "clone-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", - "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", - "dev": true - }, - "clone-stats": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", - "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", "dev": true }, - "cloneable-readable": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.2.tgz", - "integrity": "sha512-Bq6+4t+lbM8vhTs/Bef5c5AdEMtapp/iFb6+s4/Hh9MVTt8OLKH7ZOOZSCT+Ys7hsHvqv0GuMPJ1lnQJVHvxpg==", + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", "dev": true, "requires": { - "inherits": "^2.0.1", - "process-nextick-args": "^2.0.0", - "readable-stream": "^2.3.5" + "safer-buffer": "~2.1.0" } }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, - "collection-map": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", - "integrity": "sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw=", - "dev": true, - "requires": { - "arr-map": "^2.0.2", - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - } - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", "dev": true, "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } } }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", "dev": true, "requires": { - "color-name": "1.1.3" + "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" + } + } } }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true }, - "color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", "dev": true }, - "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=", + "ast-types": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", "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" + "tslib": "^2.0.1" } }, - "commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "async-done": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", + "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", "dev": true, "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" + "end-of-stream": "^1.1.0", + "once": "^1.3.2", + "process-nextick-args": "^2.0.0", + "stream-exhaust": "^1.0.1" } }, - "console-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "dev": true, - "requires": { - "date-now": "^0.1.4" - } + "async-each": { + "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 }, - "consolify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/consolify/-/consolify-2.2.0.tgz", - "integrity": "sha1-YiHbEHSgjYQP8wpcDLvzxgmnT4w=", + "async-limiter": { + "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": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", + "integrity": "sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs=", "dev": true, "requires": { - "ansi_up": "^1.3.0", - "brout": "^1.1.0", - "browser-reload": "^1.1.0", - "source-mapper": "^2.0.0", - "through2": "^2.0.0" + "async-done": "^1.2.2" } }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, - "convert-source-map": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz", - "integrity": "sha1-SCnId+n+SbMWHzvzZziI4gRpmGA=", + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", "dev": true }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", "dev": true }, - "copy-props": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.4.tgz", - "integrity": "sha512-7cjuUME+p+S3HZlbllgsn2CDwS+5eCCX16qBgNC4jgSTf49qR1VKy/Zhl400m0IQXl/bPGEVqncgUUMjrr4s8A==", - "dev": true, - "requires": { - "each-props": "^1.3.0", - "is-plain-object": "^2.0.1" - } - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "aws4": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.1.tgz", + "integrity": "sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA==", "dev": true }, - "coverify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/coverify/-/coverify-1.5.1.tgz", - "integrity": "sha512-QnGzWN8VADoub5nUQGFWBX0tvRCedyaXVmEraIjJt7T7v1sk73VdWgSFE7R/P+wHe5sNj0JJVKMzuKZOAhOTLQ==", + "babel-jest": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-26.3.0.tgz", + "integrity": "sha512-sxPnQGEyHAOPF8NcUsD0g7hDCnvLL2XyblRBcgrzTWBB/mAIpWow3n1bEL+VghnnZfreLhFSBsFluRoK2tRK4g==", "dev": true, "requires": { - "convert-source-map": "^1.6.0", - "falafel": "^2.1.0", - "minimist": "^1.2.0", - "slash": "^1.0.0", - "source-map": "~0.4.4", - "split2": "^0.2.1", - "stream-combiner2": "^1.1.1", - "through2": "~0.6.5" + "@jest/transform": "^26.3.0", + "@jest/types": "^26.3.0", + "@types/babel__core": "^7.1.7", + "babel-plugin-istanbul": "^6.0.0", + "babel-preset-jest": "^26.3.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "slash": "^3.0.0" }, "dependencies": { - "convert-source-map": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", - "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", "dev": true, "requires": { - "safe-buffer": "~5.1.1" + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" } }, - "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.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "dev": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, - "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "amdefine": ">=0.0.4" + "color-name": "~1.1.4" } }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "through2": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "readable-stream": ">=1.0.33-1 <1.1.0-0", - "xtend": ">=4.0.0 <4.1.0-0" + "has-flag": "^4.0.0" } } } }, - "create-ecdh": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", - "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "babel-plugin-istanbul": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz", + "integrity": "sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==", "dev": true, "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.0.0" + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^4.0.0", + "test-exclude": "^6.0.0" } }, - "create-hash": { - "version": "1.2.0", - "resolved": "http://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "babel-plugin-jest-hoist": { + "version": "26.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.2.0.tgz", + "integrity": "sha512-B/hVMRv8Nh1sQ1a3EY8I0n4Y1Wty3NrR5ebOyVT302op+DOAau+xNEImGMsUWOC3++ZlMooCytKz+NgN8aKGbA==", "dev": true, "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "http://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dev": true, - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" } }, - "d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "babel-preset-current-node-syntax": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-0.1.3.tgz", + "integrity": "sha512-uyexu1sVwcdFnyq9o8UQYsXwXflIh8LvrF5+cKrYam93ned1CStffB3+BEcsxGSgagoA3GEyjDqO4a/58hyPYQ==", "dev": true, "requires": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, - "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-now": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "babel-preset-jest": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-26.3.0.tgz", + "integrity": "sha512-5WPdf7nyYi2/eRxCbVrE1kKCWxgWY4RsPEbdJWFm7QsesFGqjdkyLeu1zRkwM1cxK6EPIlNd6d2AxLk7J+t4pw==", "dev": true, "requires": { - "ms": "2.0.0" + "babel-plugin-jest-hoist": "^26.2.0", + "babel-preset-current-node-syntax": "^0.1.3" } }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true - }, - "default-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", - "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "dev": true, "requires": { - "kind-of": "^5.0.2" + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" }, "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", "dev": true } } }, - "default-require-extensions": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz", - "integrity": "sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==", + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", "dev": true, "requires": { - "strip-bom": "^4.0.0" + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" }, "dependencies": { - "strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", "dev": true } } }, - "default-resolution": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", - "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ=", + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", "dev": true }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "bach": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", + "integrity": "sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA=", "dev": true, "requires": { - "object-keys": "^1.0.12" + "arr-filter": "^1.1.1", + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "array-each": "^1.0.0", + "array-initial": "^1.0.0", + "array-last": "^1.1.1", + "async-done": "^1.2.2", + "async-settle": "^1.0.0", + "now-and-later": "^2.0.0" } }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", "dev": true, "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" }, "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, "is-accessor-descriptor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", @@ -1689,795 +2266,948 @@ } } }, - "defined": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", + "base64-js": { + "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 }, - "del": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/del/-/del-5.1.0.tgz", - "integrity": "sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA==", + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", "dev": true, "requires": { - "globby": "^10.0.1", - "graceful-fs": "^4.2.2", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.1", - "p-map": "^3.0.0", - "rimraf": "^3.0.0", - "slash": "^3.0.0" - }, - "dependencies": { - "graceful-fs": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz", - "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==", - "dev": true - }, - "rimraf": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.0.tgz", - "integrity": "sha512-NDGVxTsjqfunkds7CqsOiEnxln4Bo7Nddl3XhS4pXg5OzwkLqJ971ZVAAnB+DDLnF76N+VnDEiBHaVV8I06SUg==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - } + "tweetnacl": "^0.14.3" } }, - "deps-sort": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.0.tgz", - "integrity": "sha1-CRckkC6EZYJg65EHSMzNGvbiH7U=", + "benchmark": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/benchmark/-/benchmark-2.1.4.tgz", + "integrity": "sha1-CfPeMckWQl1JjMLuVloOvzwqVik=", "dev": true, "requires": { - "JSONStream": "^1.0.3", - "shasum": "^1.0.0", - "subarg": "^1.0.0", - "through2": "^2.0.0" + "lodash": "^4.17.4", + "platform": "^1.3.3" } }, - "des.js": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", - "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" + "better-docs": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/better-docs/-/better-docs-2.3.2.tgz", + "integrity": "sha512-VlbXQgEftaynJSaPa853XB5WqTlPoQQr2TnxIkKi6OsyJJxF42Ke+9SIES/hqTe58aaBnuoDGrIzOso8RdNx6Q==", + "dev": true, + "requires": { + "brace": "^0.11.1", + "react-ace": "^6.5.0", + "react-docgen": "^5.3.0", + "react-frame-component": "^4.1.1", + "typescript": "^3.7.5", + "underscore": "^1.9.1", + "vue-docgen-api": "^3.22.0", + "vue2-ace-editor": "^0.0.13" + }, + "dependencies": { + "typescript": { + "version": "3.9.7", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.7.tgz", + "integrity": "sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==", + "dev": true + } } }, - "detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", "dev": true }, - "detective": { - "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.6.1", - "defined": "^1.0.0", - "minimist": "^1.1.1" - } + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true }, - "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "bn.js": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz", + "integrity": "sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ==", "dev": true }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "http://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, + "brace": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/brace/-/brace-0.11.1.tgz", + "integrity": "sha1-SJb8ydVE7vRfS7dmDbMg07N5/lg=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, "requires": { - "path-type": "^4.0.0" + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" }, "dependencies": { - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true + "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" + } } } }, - "domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", "dev": true }, - "duplexer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", - "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", - "dev": true + "brout": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/brout/-/brout-1.3.0.tgz", + "integrity": "sha512-wCMjZMH6sCUytoS/aqJBajJREN2wS1GnsNyBqB/Ss1hrcCh0no+Zgk+ebFp9s2yh5lxGfXBRXwNH2N3Ma2RFdQ==", + "dev": true, + "requires": { + "through2": "^2.0.0" + } }, - "duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "browser-pack": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.1.0.tgz", + "integrity": "sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA==", "dev": true, "requires": { - "readable-stream": "^2.0.2" + "JSONStream": "^1.0.3", + "combine-source-map": "~0.8.0", + "defined": "^1.0.0", + "safe-buffer": "^5.1.1", + "through2": "^2.0.0", + "umd": "^3.0.0" } }, - "duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, + "browser-reload": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/browser-reload/-/browser-reload-1.1.0.tgz", + "integrity": "sha1-UTwetc6RP+NqC6GOE5CcsHtCWpI=", + "dev": true + }, + "browser-resolve": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz", + "integrity": "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==", "dev": true, "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" + "resolve": "^1.17.0" + }, + "dependencies": { + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + } } }, - "each-props": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", - "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "browserify": { + "version": "16.5.2", + "resolved": "https://registry.npmjs.org/browserify/-/browserify-16.5.2.tgz", + "integrity": "sha512-TkOR1cQGdmXU9zW4YukWzWVSJwrxmNdADFbqbE3HFgQWe5wqZmOawqZ7J/8MPCwk/W8yY7Y0h+7mOtcZxLP23g==", "dev": true, "requires": { - "is-plain-object": "^2.0.1", - "object.defaults": "^1.1.0" + "JSONStream": "^1.0.3", + "assert": "^1.4.0", + "browser-pack": "^6.0.1", + "browser-resolve": "^2.0.0", + "browserify-zlib": "~0.2.0", + "buffer": "~5.2.1", + "cached-path-relative": "^1.0.0", + "concat-stream": "^1.6.0", + "console-browserify": "^1.1.0", + "constants-browserify": "~1.0.0", + "crypto-browserify": "^3.0.0", + "defined": "^1.0.0", + "deps-sort": "^2.0.0", + "domain-browser": "^1.2.0", + "duplexer2": "~0.1.2", + "events": "^2.0.0", + "glob": "^7.1.0", + "has": "^1.0.0", + "htmlescape": "^1.1.0", + "https-browserify": "^1.0.0", + "inherits": "~2.0.1", + "insert-module-globals": "^7.0.0", + "labeled-stream-splicer": "^2.0.0", + "mkdirp-classic": "^0.5.2", + "module-deps": "^6.2.3", + "os-browserify": "~0.3.0", + "parents": "^1.0.1", + "path-browserify": "~0.0.0", + "process": "~0.11.0", + "punycode": "^1.3.2", + "querystring-es3": "~0.2.0", + "read-only-stream": "^2.0.0", + "readable-stream": "^2.0.2", + "resolve": "^1.1.4", + "shasum": "^1.0.0", + "shell-quote": "^1.6.1", + "stream-browserify": "^2.0.0", + "stream-http": "^3.0.0", + "string_decoder": "^1.1.1", + "subarg": "^1.0.0", + "syntax-error": "^1.1.1", + "through2": "^2.0.0", + "timers-browserify": "^1.0.1", + "tty-browserify": "0.0.1", + "url": "~0.11.0", + "util": "~0.10.1", + "vm-browserify": "^1.0.0", + "xtend": "^4.0.0" } }, - "elliptic": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.0.tgz", - "integrity": "sha512-eFOJTMyCYb7xtE/caJ6JJu+bhi67WCYNbkGSknu20pmM8Ke/bqOfdnZWxyoGN26JgfxTbXrsCkEw4KheCT/KGg==", + "browserify-aes": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", "dev": true, "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" + "safe-buffer": "^5.0.1" } }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", "dev": true, "requires": { - "once": "^1.4.0" + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" } }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", "dev": true, "requires": { - "is-arrayish": "^0.2.1" + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" } }, - "es-abstract": { - "version": "1.17.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", - "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", + "browserify-rsa": { + "version": "4.0.1", + "resolved": "http://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", "dev": true, "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" }, "dependencies": { - "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", "dev": true } } }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dev": true, + "requires": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.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 + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", "dev": true, "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "pako": "~1.0.5" } }, - "es5-ext": { - "version": "0.10.50", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.50.tgz", - "integrity": "sha512-KMzZTPBkeQV/JcSQhI5/z6d9VWJ3EnQ194USTUwIYZ2ZbpN8+SGXQKt1h68EX44+qt+Fzr8DO17vnxrw7c3agw==", + "bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", "dev": true, "requires": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.1", - "next-tick": "^1.0.0" + "fast-json-stable-stringify": "2.x" } }, - "es6-error": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", - "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", - "dev": true - }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", "dev": true, "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" + "node-int64": "^0.4.0" } }, - "es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", - "dev": true - }, - "es6-promisify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", - "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", + "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", "dev": true, "requires": { - "es6-promise": "^4.0.3" + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" } }, - "es6-symbol": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", - "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "~0.10.14" - } + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "dev": true }, - "es6-weak-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", - "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "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-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", "dev": true, "requires": { - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.1" + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" } }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "cached-path-relative": { + "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 }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", "dev": true }, - "event-stream": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", - "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", + "capture-exit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", + "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", "dev": true, "requires": { - "duplexer": "~0.1.1", - "from": "~0", - "map-stream": "~0.1.0", - "pause-stream": "0.0.11", - "split": "0.3", - "stream-combiner": "~0.0.4", - "through": "~2.3.1" + "rsvp": "^4.8.4" } }, - "events": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/events/-/events-2.1.0.tgz", - "integrity": "sha512-3Zmiobend8P9DjmKAty0Era4jV8oJ0yGYe2nJJAxgymF9+N8F2m0hhZiMoWtcfepExzNKZumFU3ksdQbInGWCg==", + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", "dev": true }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "catharsis": { + "version": "0.8.11", + "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.8.11.tgz", + "integrity": "sha512-a+xUyMV7hD1BrDQA/3iPV7oc+6W26BgVJO05PGEoatMyIuPScQKsde6i3YorWX1qs+AZjnJ18NqdKoCtKiNh1g==", "dev": true, "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" + "lodash": "^4.17.14" } }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", "dev": true, "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "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" - } - } + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" } }, - "expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { - "homedir-polyfill": "^1.0.1" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "dev": true }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "character-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", + "integrity": "sha1-x84o821LzZdE5f/CxfzeHHMmH8A=", "dev": true, "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" + "is-regex": "^1.0.3" + } + }, + "chokidar": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.6.tgz", + "integrity": "sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" }, "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } + "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 } } }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true, + "optional": true + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", "dev": true, "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" }, "dependencies": { "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "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" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "is-descriptor": "^0.1.0" } } } }, - "extract-zip": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.7.tgz", - "integrity": "sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k=", + "clean-css": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", + "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", "dev": true, "requires": { - "concat-stream": "1.6.2", - "debug": "2.6.9", - "mkdirp": "0.5.1", - "yauzl": "2.4.1" - } - }, - "falafel": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/falafel/-/falafel-2.1.0.tgz", - "integrity": "sha1-lrsXdh2rqU9G0AFzizzt86Z/4Gw=", - "dev": true, - "requires": { - "acorn": "^5.0.0", - "foreach": "^2.0.5", - "isarray": "0.0.1", - "object-keys": "^1.0.6" + "source-map": "~0.6.0" }, "dependencies": { - "acorn": { - "version": "5.7.4", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", - "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", - "dev": true - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true } } }, - "fancy-log": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", - "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", - "dev": true, - "requires": { - "ansi-gray": "^0.1.1", - "color-support": "^1.1.3", - "parse-node-version": "^1.0.0", - "time-stamp": "^1.0.0" - } + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true }, - "fast-glob": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.0.4.tgz", - "integrity": "sha512-wkIbV6qg37xTJwqSsdnIphL1e+LaGz4AIQqr00mIubMaEhv1/HEmJ0uuCGZRNRUkZZmOB5mJKO0ZUTVq+SxMQg==", + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", "dev": true, "requires": { - "@nodelib/fs.stat": "^2.0.1", - "@nodelib/fs.walk": "^1.2.1", - "glob-parent": "^5.0.0", - "is-glob": "^4.0.1", - "merge2": "^1.2.3", - "micromatch": "^4.0.2" - }, - "dependencies": { - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "glob-parent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.0.0.tgz", - "integrity": "sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.0.5" - } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - } + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" } }, - "fastq": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.6.0.tgz", - "integrity": "sha512-jmxqQ3Z/nXoeyDmWAzF9kH1aGZSis6e/SbfPmJpUnyZ0ogr6iscHQaml4wsEepEWSdtmpy+eVXmCRIMpxaXqOA==", + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "dev": true + }, + "clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", + "dev": true + }, + "clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", + "dev": true + }, + "cloneable-readable": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.2.tgz", + "integrity": "sha512-Bq6+4t+lbM8vhTs/Bef5c5AdEMtapp/iFb6+s4/Hh9MVTt8OLKH7ZOOZSCT+Ys7hsHvqv0GuMPJ1lnQJVHvxpg==", "dev": true, "requires": { - "reusify": "^1.0.0" + "inherits": "^2.0.1", + "process-nextick-args": "^2.0.0", + "readable-stream": "^2.3.5" } }, - "fd-slicer": { + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "collect-v8-coverage": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", - "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", - "dev": true, - "requires": { - "pend": "~1.2.0" - } + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "collection-map": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", + "integrity": "sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw=", "dev": true, "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "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" - } - } + "arr-map": "^2.0.2", + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" } }, - "find-cache-dir": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.2.0.tgz", - "integrity": "sha512-1JKclkYYsf1q9WIJKLZa9S9muC+08RIjzAlLrK4QcYLJMS6mk9yombQ9qf+zJ7H9LS800k0s44L4sDq9VYzqyg==", + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", "dev": true, "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.0", - "pkg-dir": "^4.1.0" + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" } }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" + "color-name": "1.1.3" } }, - "findup-sync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", - "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true + }, + "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": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" + "convert-source-map": "~1.1.0", + "inline-source-map": "~0.6.0", + "lodash.memoize": "~3.0.3", + "source-map": "~0.5.3" } }, - "fined": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", - "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, "requires": { - "expand-tilde": "^2.0.2", - "is-plain-object": "^2.0.3", - "object.defaults": "^1.1.0", - "object.pick": "^1.2.0", - "parse-filepath": "^1.0.1" + "delayed-stream": "~1.0.0" } }, - "flagged-respawn": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", - "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", + "commander": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", "dev": true }, - "flat": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz", - "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==", - "dev": true, - "requires": { - "is-buffer": "~2.0.3" - }, - "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 - } - } + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true }, - "flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "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.3.6" + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" } }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", "dev": true }, - "for-own": { + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true, + "optional": true + }, + "consolify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/consolify/-/consolify-2.2.0.tgz", + "integrity": "sha1-YiHbEHSgjYQP8wpcDLvzxgmnT4w=", + "dev": true, + "requires": { + "ansi_up": "^1.3.0", + "brout": "^1.1.0", + "browser-reload": "^1.1.0", + "source-mapper": "^2.0.0", + "through2": "^2.0.0" + } + }, + "constantinople": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-3.1.2.tgz", + "integrity": "sha512-yePcBqEFhLOqSBtwYOGGS1exHo/s1xjekXiinh4itpNQGCu4KA1euPh1fg07N2wMITZXQkBz75Ntdt1ctGZouw==", + "dev": true, + "requires": { + "@types/babel-types": "^7.0.0", + "@types/babylon": "^6.16.2", + "babel-types": "^6.26.0", + "babylon": "^6.18.0" + } + }, + "constants-browserify": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "convert-source-map": { + "version": "1.1.3", + "resolved": "http://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz", + "integrity": "sha1-SCnId+n+SbMWHzvzZziI4gRpmGA=", + "dev": true + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "copy-props": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.4.tgz", + "integrity": "sha512-7cjuUME+p+S3HZlbllgsn2CDwS+5eCCX16qBgNC4jgSTf49qR1VKy/Zhl400m0IQXl/bPGEVqncgUUMjrr4s8A==", "dev": true, "requires": { - "for-in": "^1.0.1" + "each-props": "^1.3.0", + "is-plain-object": "^2.0.1" } }, - "foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "core-js": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", + "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==", "dev": true }, - "foreground-child": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", - "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "coverify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/coverify/-/coverify-1.5.1.tgz", + "integrity": "sha512-QnGzWN8VADoub5nUQGFWBX0tvRCedyaXVmEraIjJt7T7v1sk73VdWgSFE7R/P+wHe5sNj0JJVKMzuKZOAhOTLQ==", "dev": true, "requires": { - "cross-spawn": "^7.0.0", - "signal-exit": "^3.0.2" + "convert-source-map": "^1.6.0", + "falafel": "^2.1.0", + "minimist": "^1.2.0", + "slash": "^1.0.0", + "source-map": "~0.4.4", + "split2": "^0.2.1", + "stream-combiner2": "^1.1.1", + "through2": "~0.6.5" }, "dependencies": { - "cross-spawn": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz", - "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==", + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", "dev": true, "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "safe-buffer": "~5.1.1" } }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", "dev": true }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "dev": true, "requires": { - "shebang-regex": "^3.0.0" + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" } }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + }, + "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 }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "requires": { + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + } + } + } + }, + "create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "http://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "dependencies": { "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -2489,2470 +3219,5528 @@ } } }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", "dev": true, "requires": { - "map-cache": "^0.2.2" + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" } }, - "from": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", - "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=", - "dev": true - }, - "fromentries": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.2.0.tgz", - "integrity": "sha512-33X7H/wdfO99GdRLLgkjUrD4geAFdq/Uv0kl3HD4da6HDixd2GUg8Mw7dahLCV9r/EARkmtYBB6Tch4EEokFTQ==", + "cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", "dev": true }, - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", "dev": true, "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "cssom": "~0.3.6" }, "dependencies": { - "graceful-fs": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", "dev": true } } }, - "fs-mkdirp-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", - "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=", + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", "dev": true, "requires": { - "graceful-fs": "^4.1.11", - "through2": "^2.0.3" + "es5-ext": "^0.10.50", + "type": "^1.0.1" } }, - "fs.realpath": { + "dash-ast": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-1.0.0.tgz", + "integrity": "sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==", "dev": true }, - "fsevents": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", - "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "dev": true, - "optional": true, "requires": { - "nan": "^2.12.1", - "node-pre-gyp": "^0.12.0" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.5", - "bundled": true, + "assert-plus": "^1.0.0" + } + }, + "data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dev": true, + "requires": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + } + }, + "de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "decimal.js": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.0.tgz", + "integrity": "sha512-vDPw+rDgn3bZe1+F/pyEwb1oMG2XTlRVgAa6B4KccTEpYgF8w6eQllVbQcfIJnZyvzFtFpxnpGtx8dd7DJp/Rw==", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "optional": true + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true + }, + "default-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", + "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", + "dev": true, + "requires": { + "kind-of": "^5.0.2" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "default-resolution": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", + "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ=", + "dev": true + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, - "optional": true, "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" + "kind-of": "^6.0.0" } }, - "balanced-match": { + "is-data-descriptor": { "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, - "optional": true, "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "kind-of": "^6.0.0" } }, - "chownr": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "core-util-is": { + "is-descriptor": { "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "debug": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ms": "^2.1.1" - } - }, - "deep-extend": { - "version": "0.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "fs-minipass": { - "version": "1.2.5", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, - "optional": true, "requires": { - "minipass": "^2.2.1" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } + } + } + }, + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", + "dev": true + }, + "del": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/del/-/del-5.1.0.tgz", + "integrity": "sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA==", + "dev": true, + "requires": { + "globby": "^10.0.1", + "graceful-fs": "^4.2.2", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.1", + "p-map": "^3.0.0", + "rimraf": "^3.0.0", + "slash": "^3.0.0" + }, + "dependencies": { + "acorn": { + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", + "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==" }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true }, - "glob": { - "version": "7.1.3", - "bundled": true, + "rimraf": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.0.tgz", + "integrity": "sha512-NDGVxTsjqfunkds7CqsOiEnxln4Bo7Nddl3XhS4pXg5OzwkLqJ971ZVAAnB+DDLnF76N+VnDEiBHaVV8I06SUg==", "dev": true, - "optional": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "glob": "^7.1.3" } }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "iconv-lite": { - "version": "0.4.24", - "bundled": true, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true, + "optional": true + }, + "deps-sort": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.1.tgz", + "integrity": "sha512-1orqXQr5po+3KI6kQb9A4jnXT1PBwggGl2d7Sq2xsnOeI9GPcE/tGcF9UiSZtZBM7MukY4cAh7MemS6tZYipfw==", + "dev": true, + "requires": { + "JSONStream": "^1.0.3", + "shasum-object": "^1.0.0", + "subarg": "^1.0.0", + "through2": "^2.0.0" + } + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "dev": true + }, + "detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", + "dev": true, + "optional": true + }, + "detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true + }, + "detective": { + "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.6.1", + "defined": "^1.0.0", + "minimist": "^1.1.1" + } + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, + "diff-match-patch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.5.tgz", + "integrity": "sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==", + "dev": true + }, + "diff-sequences": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.3.0.tgz", + "integrity": "sha512-5j5vdRcw3CNctePNYN0Wy2e/JbWT6cAYnXv5OuqPhDpyCGc0uLu2TK0zOCJWNB9kOIfYMSpIulRaDgIi4HJ6Ig==", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "http://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + }, + "dependencies": { + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + } + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "doctypes": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", + "integrity": "sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk=", + "dev": true + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "dev": true, + "requires": { + "webidl-conversions": "^5.0.0" + }, + "dependencies": { + "webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "dev": true + } + } + }, + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "dev": true, + "requires": { + "readable-stream": "^2.0.2" + } + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "each-props": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", + "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.1", + "object.defaults": "^1.1.0" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "elliptic": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", + "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", + "dev": true, + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + }, + "is-buffer": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", + "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==" + } + } + }, + "emittery": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.7.1.tgz", + "integrity": "sha512-d34LN4L6h18Bzz9xpoku2nPwKxCPlPMr3EEKTkoEBi+1/+b0lcRkRJ1UVyyZaKNeqGR3swcGl6s390DNO4YVgQ==", + "dev": true + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "entities": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz", + "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==", + "dev": true + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", + "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.0", + "is-regex": "^1.1.0", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + }, + "dependencies": { + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "is-regex": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + } + } + }, + "es-array-method-boxes-properly": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", + "dev": true + }, + "es-get-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.0.tgz", + "integrity": "sha512-UfrmHuWQlNMTs35e1ypnvikg6jCz3SK8v8ImvmDsh36fCVUR1MqoFDiyn0/k52C8NqO3YsO8Oe0azeesNuqSsQ==", + "dev": true, + "requires": { + "es-abstract": "^1.17.4", + "has-symbols": "^1.0.1", + "is-arguments": "^1.0.4", + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-string": "^1.0.5", + "isarray": "^2.0.5" + }, + "dependencies": { + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es5-ext": { + "version": "0.10.50", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.50.tgz", + "integrity": "sha512-KMzZTPBkeQV/JcSQhI5/z6d9VWJ3EnQ194USTUwIYZ2ZbpN8+SGXQKt1h68EX44+qt+Fzr8DO17vnxrw7c3agw==", + "dev": true, + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.1", + "next-tick": "^1.0.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "dev": true + }, + "es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "dev": true, + "requires": { + "es6-promise": "^4.0.3" + } + }, + "es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "dev": true, + "requires": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "events": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/events/-/events-2.1.0.tgz", + "integrity": "sha512-3Zmiobend8P9DjmKAty0Era4jV8oJ0yGYe2nJJAxgymF9+N8F2m0hhZiMoWtcfepExzNKZumFU3ksdQbInGWCg==", + "dev": true + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "exec-sh": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.4.tgz", + "integrity": "sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A==", + "dev": true + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + } + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "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" + } + } + } + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "expect": { + "version": "26.4.2", + "resolved": "https://registry.npmjs.org/expect/-/expect-26.4.2.tgz", + "integrity": "sha512-IlJ3X52Z0lDHm7gjEp+m76uX46ldH5VpqmU0006vqDju/285twh7zaWMRhs67VpQhBwjjMchk+p5aA0VkERCAA==", + "dev": true, + "requires": { + "@jest/types": "^26.3.0", + "ansi-styles": "^4.0.0", + "jest-get-type": "^26.3.0", + "jest-matcher-utils": "^26.4.2", + "jest-message-util": "^26.3.0", + "jest-regex-util": "^26.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "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" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "extract-zip": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", + "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", + "dev": true, + "requires": { + "concat-stream": "^1.6.2", + "debug": "^2.6.9", + "mkdirp": "^0.5.4", + "yauzl": "^2.10.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "falafel": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/falafel/-/falafel-2.1.0.tgz", + "integrity": "sha1-lrsXdh2rqU9G0AFzizzt86Z/4Gw=", + "dev": true, + "requires": { + "acorn": "^5.0.0", + "foreach": "^2.0.5", + "isarray": "0.0.1", + "object-keys": "^1.0.6" + }, + "dependencies": { + "acorn": { + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", + "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", + "dev": true + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + } + } + }, + "fancy-log": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", + "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", + "dev": true, + "requires": { + "ansi-gray": "^0.1.1", + "color-support": "^1.1.3", + "parse-node-version": "^1.0.0", + "time-stamp": "^1.0.0" + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.0.4.tgz", + "integrity": "sha512-wkIbV6qg37xTJwqSsdnIphL1e+LaGz4AIQqr00mIubMaEhv1/HEmJ0uuCGZRNRUkZZmOB5mJKO0ZUTVq+SxMQg==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.1", + "@nodelib/fs.walk": "^1.2.1", + "glob-parent": "^5.0.0", + "is-glob": "^4.0.1", + "merge2": "^1.2.3", + "micromatch": "^4.0.2" + }, + "dependencies": { + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "glob-parent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.0.0.tgz", + "integrity": "sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fast-safe-stringify": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz", + "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==", + "dev": true + }, + "fastq": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.6.0.tgz", + "integrity": "sha512-jmxqQ3Z/nXoeyDmWAzF9kH1aGZSis6e/SbfPmJpUnyZ0ogr6iscHQaml4wsEepEWSdtmpy+eVXmCRIMpxaXqOA==", + "dev": true, + "requires": { + "reusify": "^1.0.0" + } + }, + "fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "dev": true, + "requires": { + "bser": "2.1.1" + } + }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "dev": true, + "requires": { + "pend": "~1.2.0" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "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" + } + } + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "findup-sync": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", + "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "dev": true, + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + } + }, + "fined": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", + "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "is-plain-object": "^2.0.3", + "object.defaults": "^1.1.0", + "object.pick": "^1.2.0", + "parse-filepath": "^1.0.1" + } + }, + "flagged-respawn": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", + "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", + "dev": true + }, + "flat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz", + "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==", + "dev": true, + "requires": { + "is-buffer": "~2.0.3" + }, + "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 + } + } + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "fs-mkdirp-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", + "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "through2": "^2.0.3" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", + "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.12.1", + "node-pre-gyp": "^0.12.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.1", + "bundled": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true + }, + "debug": { + "version": "4.1.1", + "bundled": true + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.3", + "bundled": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true + }, + "ini": { + "version": "1.3.5", + "bundled": true + } + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "gensync": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", + "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", + "dev": true + }, + "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": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + }, + "dependencies": { + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "glob-stream": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", + "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", + "dev": true, + "requires": { + "extend": "^3.0.0", + "glob": "^7.1.1", + "glob-parent": "^3.1.0", + "is-negated-glob": "^1.0.0", + "ordered-read-streams": "^1.0.0", + "pumpify": "^1.3.5", + "readable-stream": "^2.1.5", + "remove-trailing-separator": "^1.0.1", + "to-absolute-glob": "^2.0.0", + "unique-stream": "^2.0.2" + } + }, + "glob-watcher": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.3.tgz", + "integrity": "sha512-8tWsULNEPHKQ2MR4zXuzSmqbdyV5PtwwCaWSGQ1WwHsJ07ilNeN1JB8ntxhckbnpSHaf9dXFUHzIWvm1I13dsg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-done": "^1.2.0", + "chokidar": "^2.0.0", + "is-negated-glob": "^1.0.0", + "just-debounce": "^1.0.0", + "object.defaults": "^1.1.0" + } + }, + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "globby": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.1.tgz", + "integrity": "sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.0.3", + "glob": "^7.1.3", + "ignore": "^5.1.1", + "merge2": "^1.2.3", + "slash": "^3.0.0" + }, + "dependencies": { + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + } + } + }, + "glogg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.1.tgz", + "integrity": "sha512-ynYqXLoluBKf9XGR1gA59yEJisIL7YHEH4xr3ZziHB5/yl4qWfaK8Js9jGe6gBGCSCKVqiyO30WnRZADvemUNw==", + "dev": true, + "requires": { + "sparkles": "^1.0.0" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", + "dev": true, + "optional": true + }, + "gulp": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", + "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", + "dev": true, + "requires": { + "glob-watcher": "^5.0.3", + "gulp-cli": "^2.2.0", + "undertaker": "^1.2.1", + "vinyl-fs": "^3.0.0" + }, + "dependencies": { + "gulp-cli": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.2.0.tgz", + "integrity": "sha512-rGs3bVYHdyJpLqR0TUBnlcZ1O5O++Zs4bA0ajm+zr3WFCfiSLjGwoCBqFs18wzN+ZxahT9DkOK5nDf26iDsWjA==", + "dev": true, + "requires": { + "ansi-colors": "^1.0.1", + "archy": "^1.0.0", + "array-sort": "^1.0.0", + "color-support": "^1.1.3", + "concat-stream": "^1.6.0", + "copy-props": "^2.0.1", + "fancy-log": "^1.3.2", + "gulplog": "^1.0.0", + "interpret": "^1.1.0", + "isobject": "^3.0.1", + "liftoff": "^3.1.0", + "matchdep": "^2.0.0", + "mute-stdout": "^1.0.0", + "pretty-hrtime": "^1.0.0", + "replace-homedir": "^1.0.0", + "semver-greatest-satisfied-range": "^1.1.0", + "v8flags": "^3.0.1", + "yargs": "^7.1.0" + } + } + } + }, + "gulp-streamify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/gulp-streamify/-/gulp-streamify-1.0.2.tgz", + "integrity": "sha1-ANazgU1IbAiPeHOO0HZqvBY4nk0=", + "dev": true, + "requires": { + "plexer": "1.0.1" + } + }, + "gulp-uglify": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gulp-uglify/-/gulp-uglify-3.0.2.tgz", + "integrity": "sha512-gk1dhB74AkV2kzqPMQBLA3jPoIAPd/nlNzP2XMDSG8XZrqnlCiDGAqC+rZOumzFvB5zOphlFh6yr3lgcAb/OOg==", + "dev": true, + "requires": { + "array-each": "^1.0.1", + "extend-shallow": "^3.0.2", + "gulplog": "^1.0.0", + "has-gulplog": "^0.1.0", + "isobject": "^3.0.1", + "make-error-cause": "^1.1.1", + "safe-buffer": "^5.1.2", + "through2": "^2.0.0", + "uglify-js": "^3.0.5", + "vinyl-sourcemaps-apply": "^0.2.0" + } + }, + "gulplog": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", + "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", + "dev": true, + "requires": { + "glogg": "^1.0.0" + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "dev": true, + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-gulplog": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", + "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", + "dev": true, + "requires": { + "sparkles": "^1.0.0" + } + }, + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "dev": true + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true, + "optional": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.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 + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", + "dev": true + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "requires": { + "parse-passwd": "^1.0.0" + } + }, + "hosted-git-info": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", + "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", + "dev": true + }, + "html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "dev": true, + "requires": { + "whatwg-encoding": "^1.0.5" + } + }, + "html-escaper": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.0.tgz", + "integrity": "sha512-a4u9BeERWGu/S8JiWEAQcdrg9v4QArtP9keViQjGMdff20fBdd8waotXaNmODqBe6uZ3Nafi7K/ho4gCQHV3Ig==", + "dev": true + }, + "htmlescape": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz", + "integrity": "sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E=", + "dev": true + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "https-proxy-agent": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", + "dev": true, + "requires": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "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 + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true + }, + "iconv-lite": { + "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" + } + }, + "ieee754": { + "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": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz", + "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==", + "dev": true + }, + "ignore-walk": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", + "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "import-local": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", + "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", + "dev": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "inline-source-map": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz", + "integrity": "sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU=", + "dev": true, + "requires": { + "source-map": "~0.5.3" + } + }, + "insert-module-globals": { + "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", + "acorn-node": "^1.5.2", + "combine-source-map": "^0.8.0", + "concat-stream": "^1.6.1", + "is-buffer": "^1.1.0", + "path-is-absolute": "^1.0.1", + "process": "~0.11.0", + "through2": "^2.0.0", + "undeclared-identifiers": "^1.1.2", + "xtend": "^4.0.0" + } + }, + "interpret": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", + "dev": true + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", + "dev": true + }, + "is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dev": true, + "requires": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-callable": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.1.tgz", + "integrity": "sha512-wliAfSzx6V+6WfMOmus1xy0XvSgf/dlStkvTfq7F0g4bOIW0PSUbnyse3NhDwdyYS1ozfUtAAySqTws3z9Eqgg==", + "dev": true + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "requires": { + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==" + }, + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==" + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "requires": { + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "requires": { + "decamelize": "^1.2.0", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "requires": { + "decamelize": "^1.2.0" + } + } + } + }, + "is-docker": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz", + "integrity": "sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==", + "dev": true, + "optional": true + }, + "is-expression": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-3.0.0.tgz", + "integrity": "sha1-Oayqa+f9HzRx3ELHQW5hwkMXrJ8=", + "dev": true, + "requires": { + "acorn": "~4.0.2", + "object-assign": "^4.0.1" + }, + "dependencies": { + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "dev": true + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true + }, + "is-glob": { + "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" + } + }, + "is-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.1.tgz", + "integrity": "sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw==", + "dev": true + }, + "is-negated-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", + "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true + }, + "is-path-inside": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.1.tgz", + "integrity": "sha512-CKstxrctq1kUesU6WhtZDbYKzzYBuRH0UYInAVrkc/EYdB9ltbfE0gOoayG9nhohG6447sOOVGhHqsdmBvkbNg==", + "dev": true + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-potential-custom-element-name": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz", + "integrity": "sha1-DFLlS8yjkbssSUsh6GJtczbG45c=", + "dev": true + }, + "is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "dev": true + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dev": true, + "requires": { + "is-unc-path": "^1.0.0" + } + }, + "is-set": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.1.tgz", + "integrity": "sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA==", + "dev": true + }, + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true + }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + }, + "dependencies": { + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + } + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dev": true, + "requires": { + "unc-path-regex": "^0.1.2" + }, + "dependencies": { + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" + } + } + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-valid-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", + "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "optional": true, + "requires": { + "is-docker": "^2.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "istanbul-lib-coverage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "dev": true, + "requires": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", + "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "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 + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "iterate-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/iterate-iterator/-/iterate-iterator-1.0.1.tgz", + "integrity": "sha512-3Q6tudGN05kbkDQDI4CqjaBf4qf85w6W6GnuZDtUVYwKgtC1q8yxYX7CZed7N+tLzQqS6roujWvszf13T+n9aw==", + "dev": true + }, + "iterate-value": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/iterate-value/-/iterate-value-1.0.2.tgz", + "integrity": "sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ==", + "dev": true, + "requires": { + "es-get-iterator": "^1.0.2", + "iterate-iterator": "^1.0.1" + } + }, + "jest": { + "version": "26.4.2", + "resolved": "https://registry.npmjs.org/jest/-/jest-26.4.2.tgz", + "integrity": "sha512-LLCjPrUh98Ik8CzW8LLVnSCfLaiY+wbK53U7VxnFSX7Q+kWC4noVeDvGWIFw0Amfq1lq2VfGm7YHWSLBV62MJw==", + "dev": true, + "requires": { + "@jest/core": "^26.4.2", + "import-local": "^3.0.2", + "jest-cli": "^26.4.2" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "optional": true, "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "color-name": "~1.1.4" } }, - "ignore-walk": { - "version": "3.0.1", - "bundled": true, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, - "optional": true, "requires": { - "minimatch": "^3.0.4" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" } }, - "inflight": { - "version": "1.0.6", - "bundled": true, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "jest-cli": { + "version": "26.4.2", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-26.4.2.tgz", + "integrity": "sha512-zb+lGd/SfrPvoRSC/0LWdaWCnscXc1mGYW//NP4/tmBvRPT3VntZ2jtKUONsRi59zc5JqmsSajA9ewJKFYp8Cw==", "dev": true, - "optional": true, "requires": { - "once": "^1.3.0", - "wrappy": "1" + "@jest/core": "^26.4.2", + "@jest/test-result": "^26.3.0", + "@jest/types": "^26.3.0", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "import-local": "^3.0.2", + "is-ci": "^2.0.0", + "jest-config": "^26.4.2", + "jest-util": "^26.3.0", + "jest-validate": "^26.4.2", + "prompts": "^2.0.1", + "yargs": "^15.3.1" } }, - "inherits": { - "version": "2.0.3", - "bundled": true, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, - "optional": true + "requires": { + "p-locate": "^4.1.0" + } }, - "ini": { - "version": "1.3.5", - "bundled": true, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, - "optional": true + "requires": { + "p-try": "^2.0.0" + } }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, - "optional": true, "requires": { - "number-is-nan": "^1.0.0" + "p-limit": "^2.2.0" } }, - "isarray": { - "version": "1.0.0", - "bundled": true, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", "dev": true, - "optional": true + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } }, - "minimatch": { - "version": "3.0.4", - "bundled": true, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, - "optional": true, "requires": { - "brace-expansion": "^1.1.7" + "ansi-regex": "^5.0.0" } }, - "minimist": { - "version": "0.0.8", - "bundled": true, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "optional": true + "requires": { + "has-flag": "^4.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "jest-changed-files": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-26.3.0.tgz", + "integrity": "sha512-1C4R4nijgPltX6fugKxM4oQ18zimS7LqQ+zTTY8lMCMFPrxqBFb7KJH0Z2fRQJvw2Slbaipsqq7s1mgX5Iot+g==", + "dev": true, + "requires": { + "@jest/types": "^26.3.0", + "execa": "^4.0.0", + "throat": "^5.0.0" + }, + "dependencies": { + "execa": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.0.3.tgz", + "integrity": "sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "jest-config": { + "version": "26.4.2", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-26.4.2.tgz", + "integrity": "sha512-QBf7YGLuToiM8PmTnJEdRxyYy3mHWLh24LJZKVdXZ2PNdizSe1B/E8bVm+HYcjbEzGuVXDv/di+EzdO/6Gq80A==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^26.4.2", + "@jest/types": "^26.3.0", + "babel-jest": "^26.3.0", + "chalk": "^4.0.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.4", + "jest-environment-jsdom": "^26.3.0", + "jest-environment-node": "^26.3.0", + "jest-get-type": "^26.3.0", + "jest-jasmine2": "^26.4.2", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.4.0", + "jest-util": "^26.3.0", + "jest-validate": "^26.4.2", + "micromatch": "^4.0.2", + "pretty-format": "^26.4.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true }, - "minipass": { - "version": "2.3.5", - "bundled": true, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", "dev": true, - "optional": true, "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" + "braces": "^3.0.1", + "picomatch": "^2.0.5" } }, - "minizlib": { - "version": "1.2.1", - "bundled": true, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "optional": true, "requires": { - "minipass": "^2.2.1" + "has-flag": "^4.0.0" } }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, - "optional": true, "requires": { - "minimist": "0.0.8" + "is-number": "^7.0.0" } - }, - "ms": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "needle": { - "version": "2.3.0", - "bundled": true, + } + } + }, + "jest-diff": { + "version": "26.4.2", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.4.2.tgz", + "integrity": "sha512-6T1XQY8U28WH0Z5rGpQ+VqZSZz8EN8rZcBtfvXaOkbwxIEeRre6qnuZQlbY1AJ4MKDxQF8EkrCvK+hL/VkyYLQ==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^26.3.0", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.4.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", "dev": true, - "optional": true, "requires": { - "debug": "^4.1.0", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" } }, - "node-pre-gyp": { - "version": "0.12.0", - "bundled": true, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "dev": true, - "optional": true, "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, - "nopt": { - "version": "4.0.1", - "bundled": true, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "optional": true, "requires": { - "abbrev": "1", - "osenv": "^0.1.4" + "color-name": "~1.1.4" } }, - "npm-bundled": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "optional": true + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, - "npm-packlist": { - "version": "1.4.1", - "bundled": true, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "optional": true, "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" + "has-flag": "^4.0.0" } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, + } + } + }, + "jest-docblock": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz", + "integrity": "sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==", + "dev": true, + "requires": { + "detect-newline": "^3.0.0" + } + }, + "jest-each": { + "version": "26.4.2", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-26.4.2.tgz", + "integrity": "sha512-p15rt8r8cUcRY0Mvo1fpkOGYm7iI8S6ySxgIdfh3oOIv+gHwrHTy5VWCGOecWUhDsit4Nz8avJWdT07WLpbwDA==", + "dev": true, + "requires": { + "@jest/types": "^26.3.0", + "chalk": "^4.0.0", + "jest-get-type": "^26.3.0", + "jest-util": "^26.3.0", + "pretty-format": "^26.4.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", "dev": true, - "optional": true, "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" } }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "dev": true, - "optional": true, "requires": { - "wrappy": "1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "optional": true, "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" + "color-name": "~1.1.4" } }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true }, - "rc": { - "version": "1.2.8", - "bundled": true, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "optional": true, "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - } + "has-flag": "^4.0.0" } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, + } + } + }, + "jest-environment-jsdom": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-26.3.0.tgz", + "integrity": "sha512-zra8He2btIMJkAzvLaiZ9QwEPGEetbxqmjEBQwhH3CA+Hhhu0jSiEJxnJMbX28TGUvPLxBt/zyaTLrOPF4yMJA==", + "dev": true, + "requires": { + "@jest/environment": "^26.3.0", + "@jest/fake-timers": "^26.3.0", + "@jest/types": "^26.3.0", + "@types/node": "*", + "jest-mock": "^26.3.0", + "jest-util": "^26.3.0", + "jsdom": "^16.2.2" + } + }, + "jest-environment-node": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-26.3.0.tgz", + "integrity": "sha512-c9BvYoo+FGcMj5FunbBgtBnbR5qk3uky8PKyRVpSfe2/8+LrNQMiXX53z6q2kY+j15SkjQCOSL/6LHnCPLVHNw==", + "dev": true, + "requires": { + "@jest/environment": "^26.3.0", + "@jest/fake-timers": "^26.3.0", + "@jest/types": "^26.3.0", + "@types/node": "*", + "jest-mock": "^26.3.0", + "jest-util": "^26.3.0" + } + }, + "jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", + "dev": true + }, + "jest-haste-map": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.3.0.tgz", + "integrity": "sha512-DHWBpTJgJhLLGwE5Z1ZaqLTYqeODQIZpby0zMBsCU9iRFHYyhklYqP4EiG73j5dkbaAdSZhgB938mL51Q5LeZA==", + "dev": true, + "requires": { + "@jest/types": "^26.3.0", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.1.2", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^26.0.0", + "jest-serializer": "^26.3.0", + "jest-util": "^26.3.0", + "jest-worker": "^26.3.0", + "micromatch": "^4.0.2", + "sane": "^4.0.3", + "walker": "^1.0.7" + }, + "dependencies": { + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", "dev": true, - "optional": 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" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" } }, - "rimraf": { - "version": "2.6.3", - "bundled": true, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, - "optional": true, "requires": { - "glob": "^7.1.3" + "fill-range": "^7.0.1" } }, - "safe-buffer": { - "version": "5.1.2", - "bundled": true, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, - "optional": true + "requires": { + "to-regex-range": "^5.0.1" + } }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", "dev": true, "optional": true }, - "sax": { - "version": "1.2.4", - "bundled": true, - "dev": true, - "optional": true + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true }, - "semver": { - "version": "5.7.0", - "bundled": true, - "dev": true, - "optional": true + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", "dev": true, - "optional": true + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "optional": true + "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 }, - "string-width": { - "version": "1.0.2", - "bundled": true, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, - "optional": true, "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "is-number": "^7.0.0" } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, + } + } + }, + "jest-jasmine2": { + "version": "26.4.2", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.4.2.tgz", + "integrity": "sha512-z7H4EpCldHN1J8fNgsja58QftxBSL+JcwZmaXIvV9WKIM+x49F4GLHu/+BQh2kzRKHAgaN/E82od+8rTOBPyPA==", + "dev": true, + "requires": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^26.3.0", + "@jest/source-map": "^26.3.0", + "@jest/test-result": "^26.3.0", + "@jest/types": "^26.3.0", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^26.4.2", + "is-generator-fn": "^2.0.0", + "jest-each": "^26.4.2", + "jest-matcher-utils": "^26.4.2", + "jest-message-util": "^26.3.0", + "jest-runtime": "^26.4.2", + "jest-snapshot": "^26.4.2", + "jest-util": "^26.3.0", + "pretty-format": "^26.4.2", + "throat": "^5.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", "dev": true, - "optional": true, "requires": { - "safe-buffer": "~5.1.0" + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" } }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "dev": true, - "optional": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, - "strip-json-comments": { + "color-convert": { "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "tar": { - "version": "4.4.8", - "bundled": true, + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "optional": true, "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.3.4", - "minizlib": "^1.1.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.2" + "color-name": "~1.1.4" } }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, - "wide-align": { - "version": "1.1.3", - "bundled": true, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "optional": true, "requires": { - "string-width": "^1.0.2 || 2" + "has-flag": "^4.0.0" } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "yallist": { - "version": "3.0.3", - "bundled": true, - "dev": true, - "optional": true } } }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "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": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", - "dev": true - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true - }, - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "jest-leak-detector": { + "version": "26.4.2", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.4.2.tgz", + "integrity": "sha512-akzGcxwxtE+9ZJZRW+M2o+nTNnmQZxrHJxX/HjgDaU5+PLmY1qnQPnMjgADPGCRPhB+Yawe1iij0REe+k/aHoA==", "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "jest-get-type": "^26.3.0", + "pretty-format": "^26.4.2" } }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "jest-matcher-utils": { + "version": "26.4.2", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.4.2.tgz", + "integrity": "sha512-KcbNqWfWUG24R7tu9WcAOKKdiXiXCbMvQYT6iodZ9k1f7065k0keUOW6XpJMMvah+hTfqkhJhRXmA3r3zMAg0Q==", "dev": true, "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" + "chalk": "^4.0.0", + "jest-diff": "^26.4.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.4.2" }, "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", "dev": true, "requires": { - "is-extglob": "^2.1.0" + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" } } } }, - "glob-stream": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", - "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", - "dev": true, - "requires": { - "extend": "^3.0.0", - "glob": "^7.1.1", - "glob-parent": "^3.1.0", - "is-negated-glob": "^1.0.0", - "ordered-read-streams": "^1.0.0", - "pumpify": "^1.3.5", - "readable-stream": "^2.1.5", - "remove-trailing-separator": "^1.0.1", - "to-absolute-glob": "^2.0.0", - "unique-stream": "^2.0.2" - } - }, - "glob-watcher": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.3.tgz", - "integrity": "sha512-8tWsULNEPHKQ2MR4zXuzSmqbdyV5PtwwCaWSGQ1WwHsJ07ilNeN1JB8ntxhckbnpSHaf9dXFUHzIWvm1I13dsg==", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "async-done": "^1.2.0", - "chokidar": "^2.0.0", - "is-negated-glob": "^1.0.0", - "just-debounce": "^1.0.0", - "object.defaults": "^1.1.0" - } - }, - "global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "dev": true, - "requires": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - } - }, - "global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", - "dev": true, - "requires": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - } - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - }, - "globby": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.1.tgz", - "integrity": "sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A==", + "jest-message-util": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.3.0.tgz", + "integrity": "sha512-xIavRYqr4/otGOiLxLZGj3ieMmjcNE73Ui+LdSW/Y790j5acqCsAdDiLIbzHCZMpN07JOENRWX5DcU+OQ+TjTA==", "dev": true, "requires": { - "@types/glob": "^7.1.1", - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.0.3", - "glob": "^7.1.3", - "ignore": "^5.1.1", - "merge2": "^1.2.3", - "slash": "^3.0.0" + "@babel/code-frame": "^7.0.0", + "@jest/types": "^26.3.0", + "@types/stack-utils": "^1.0.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.2", + "slash": "^3.0.0", + "stack-utils": "^2.0.2" }, "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, "slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } } } }, - "glogg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.1.tgz", - "integrity": "sha512-ynYqXLoluBKf9XGR1gA59yEJisIL7YHEH4xr3ZziHB5/yl4qWfaK8Js9jGe6gBGCSCKVqiyO30WnRZADvemUNw==", + "jest-mock": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-26.3.0.tgz", + "integrity": "sha512-PeaRrg8Dc6mnS35gOo/CbZovoDPKAeB1FICZiuagAgGvbWdNNyjQjkOaGUa/3N3JtpQ/Mh9P4A2D4Fv51NnP8Q==", "dev": true, "requires": { - "sparkles": "^1.0.0" + "@jest/types": "^26.3.0", + "@types/node": "*" } }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "jest-pnp-resolver": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", + "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", "dev": true }, - "growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "jest-regex-util": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", + "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", "dev": true }, - "gulp": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", - "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", + "jest-resolve": { + "version": "26.4.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.4.0.tgz", + "integrity": "sha512-bn/JoZTEXRSlEx3+SfgZcJAVuTMOksYq9xe9O6s4Ekg84aKBObEaVXKOEilULRqviSLAYJldnoWV9c07kwtiCg==", "dev": true, "requires": { - "glob-watcher": "^5.0.3", - "gulp-cli": "^2.2.0", - "undertaker": "^1.2.1", - "vinyl-fs": "^3.0.0" + "@jest/types": "^26.3.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.3.0", + "read-pkg-up": "^7.0.1", + "resolve": "^1.17.0", + "slash": "^3.0.0" }, "dependencies": { - "gulp-cli": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.2.0.tgz", - "integrity": "sha512-rGs3bVYHdyJpLqR0TUBnlcZ1O5O++Zs4bA0ajm+zr3WFCfiSLjGwoCBqFs18wzN+ZxahT9DkOK5nDf26iDsWjA==", + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", "dev": true, "requires": { - "ansi-colors": "^1.0.1", - "archy": "^1.0.0", - "array-sort": "^1.0.0", - "color-support": "^1.1.3", - "concat-stream": "^1.6.0", - "copy-props": "^2.0.1", - "fancy-log": "^1.3.2", - "gulplog": "^1.0.0", - "interpret": "^1.1.0", - "isobject": "^3.0.1", - "liftoff": "^3.1.0", - "matchdep": "^2.0.0", - "mute-stdout": "^1.0.0", - "pretty-hrtime": "^1.0.0", - "replace-homedir": "^1.0.0", - "semver-greatest-satisfied-range": "^1.1.0", - "v8flags": "^3.0.1", - "yargs": "^7.1.0" + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" } - } - } - }, - "gulp-streamify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/gulp-streamify/-/gulp-streamify-1.0.2.tgz", - "integrity": "sha1-ANazgU1IbAiPeHOO0HZqvBY4nk0=", - "dev": true, - "requires": { - "plexer": "1.0.1" - } - }, - "gulp-typedoc": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/gulp-typedoc/-/gulp-typedoc-2.2.2.tgz", - "integrity": "sha512-Yd/WoB+NHRFgWqFxNEHym2aIykO3koJq7n62indzBnHoHAZNHbKO5eX+ljkX4OVLt5bmYQZ50RqJCZzS40IalA==", - "dev": true, - "requires": { - "ansi-colors": "^1.0.1", - "event-stream": "3.3.4", - "fancy-log": "^1.3.2", - "plugin-error": "^0.1.2" - } - }, - "gulp-uglify": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/gulp-uglify/-/gulp-uglify-3.0.2.tgz", - "integrity": "sha512-gk1dhB74AkV2kzqPMQBLA3jPoIAPd/nlNzP2XMDSG8XZrqnlCiDGAqC+rZOumzFvB5zOphlFh6yr3lgcAb/OOg==", - "dev": true, - "requires": { - "array-each": "^1.0.1", - "extend-shallow": "^3.0.2", - "gulplog": "^1.0.0", - "has-gulplog": "^0.1.0", - "isobject": "^3.0.1", - "make-error-cause": "^1.1.1", - "safe-buffer": "^5.1.2", - "through2": "^2.0.0", - "uglify-js": "^3.0.5", - "vinyl-sourcemaps-apply": "^0.2.0" - } - }, - "gulplog": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", - "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", - "dev": true, - "requires": { - "glogg": "^1.0.0" - } - }, - "handlebars": { - "version": "4.7.3", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.3.tgz", - "integrity": "sha512-SRGwSYuNfx8DwHD/6InAPzD6RgeruWLT+B8e8a7gGs8FWgHzlExpTFMEq2IA6QpAfOClpKHy6+8IqTjeBCu6Kg==", - "dev": true, - "requires": { - "neo-async": "^2.6.0", - "optimist": "^0.6.1", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true - } - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "has-gulplog": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", - "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", - "dev": true, - "requires": { - "sparkles": "^1.0.0" - } - }, - "has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", - "dev": true - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "parse-json": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.1.0.tgz", + "integrity": "sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + } + }, + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" + "jest-resolve-dependencies": { + "version": "26.4.2", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-26.4.2.tgz", + "integrity": "sha512-ADHaOwqEcVc71uTfySzSowA/RdxUpCxhxa2FNLiin9vWLB1uLPad3we+JSSROq5+SrL9iYPdZZF8bdKM7XABTQ==", + "dev": true, + "requires": { + "@jest/types": "^26.3.0", + "jest-regex-util": "^26.0.0", + "jest-snapshot": "^26.4.2" + } + }, + "jest-runner": { + "version": "26.4.2", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-26.4.2.tgz", + "integrity": "sha512-FgjDHeVknDjw1gRAYaoUoShe1K3XUuFMkIaXbdhEys+1O4bEJS8Avmn4lBwoMfL8O5oFTdWYKcf3tEJyyYyk8g==", + "dev": true, + "requires": { + "@jest/console": "^26.3.0", + "@jest/environment": "^26.3.0", + "@jest/test-result": "^26.3.0", + "@jest/types": "^26.3.0", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.7.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-config": "^26.4.2", + "jest-docblock": "^26.0.0", + "jest-haste-map": "^26.3.0", + "jest-leak-detector": "^26.4.2", + "jest-message-util": "^26.3.0", + "jest-resolve": "^26.4.0", + "jest-runtime": "^26.4.2", + "jest-util": "^26.3.0", + "jest-worker": "^26.3.0", + "source-map-support": "^0.5.6", + "throat": "^5.0.0" }, "dependencies": { - "kind-of": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "has-flag": "^4.0.0" } } } }, - "hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "hasha": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.1.0.tgz", - "integrity": "sha512-OFPDWmzPN1l7atOV1TgBVmNtBxaIysToK6Ve9DK+vT6pYuklw/nPNT+HJbZi0KDcI6vWB+9tgvZ5YD7fA3CXcA==", - "dev": true, - "requires": { - "is-stream": "^2.0.0", - "type-fest": "^0.8.0" + "jest-runtime": { + "version": "26.4.2", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.4.2.tgz", + "integrity": "sha512-4Pe7Uk5a80FnbHwSOk7ojNCJvz3Ks2CNQWT5Z7MJo4tX0jb3V/LThKvD9tKPNVNyeMH98J/nzGlcwc00R2dSHQ==", + "dev": true, + "requires": { + "@jest/console": "^26.3.0", + "@jest/environment": "^26.3.0", + "@jest/fake-timers": "^26.3.0", + "@jest/globals": "^26.4.2", + "@jest/source-map": "^26.3.0", + "@jest/test-result": "^26.3.0", + "@jest/transform": "^26.3.0", + "@jest/types": "^26.3.0", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.4", + "jest-config": "^26.4.2", + "jest-haste-map": "^26.3.0", + "jest-message-util": "^26.3.0", + "jest-mock": "^26.3.0", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.4.0", + "jest-snapshot": "^26.4.2", + "jest-util": "^26.3.0", + "jest-validate": "^26.4.2", + "slash": "^3.0.0", + "strip-bom": "^4.0.0", + "yargs": "^15.3.1" }, "dependencies": { - "is-stream": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "which-module": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true - } - } - }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true - }, - "highlight.js": { - "version": "9.18.1", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.18.1.tgz", - "integrity": "sha512-OrVKYz70LHsnCgmbXctv/bfuvntIKDz177h0Co37DQ5jamGZLVmoCVMtjMtNZY3X9DrCcKfklHPNeA0uPZhSJg==", - "dev": true - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", - "dev": true, - "requires": { - "parse-passwd": "^1.0.0" - } - }, - "hosted-git-info": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", - "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", - "dev": true - }, - "html-escaper": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.0.tgz", - "integrity": "sha512-a4u9BeERWGu/S8JiWEAQcdrg9v4QArtP9keViQjGMdff20fBdd8waotXaNmODqBe6uZ3Nafi7K/ho4gCQHV3Ig==", - "dev": true - }, - "htmlescape": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz", - "integrity": "sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E=", - "dev": true - }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", - "dev": true - }, - "https-proxy-agent": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", - "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", - "dev": true, - "requires": { - "agent-base": "^4.3.0", - "debug": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, "requires": { - "ms": "^2.1.1" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", "dev": true - } - } - }, - "ieee754": { - "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": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz", - "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==", - "dev": true - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", - "dev": true - }, - "inline-source-map": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz", - "integrity": "sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU=", - "dev": true, - "requires": { - "source-map": "~0.5.3" - } - }, - "insert-module-globals": { - "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", - "acorn-node": "^1.5.2", - "combine-source-map": "^0.8.0", - "concat-stream": "^1.6.1", - "is-buffer": "^1.1.0", - "path-is-absolute": "^1.0.1", - "process": "~0.11.0", - "through2": "^2.0.0", - "undeclared-identifiers": "^1.1.2", - "xtend": "^4.0.0" - } - }, - "interpret": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", - "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", - "dev": true - }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "dev": true - }, - "is-absolute": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", - "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", - "dev": true, - "requires": { - "is-relative": "^1.0.0", - "is-windows": "^1.0.1" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", "dev": true, "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-callable": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", - "dev": true - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" } } } }, - "is-date-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", - "dev": true - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "jest-serializer": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.3.0.tgz", + "integrity": "sha512-IDRBQBLPlKa4flg77fqg0n/pH87tcRKwe8zxOVTWISxGpPHYkRZ1dXKyh04JOja7gppc60+soKVZ791mruVdow==", "dev": true, "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "@types/node": "*", + "graceful-fs": "^4.2.4" }, "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", "dev": true } } }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "is-glob": { - "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" - } - }, - "is-negated-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", - "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=", - "dev": true - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" + "jest-snapshot": { + "version": "26.4.2", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.4.2.tgz", + "integrity": "sha512-N6Uub8FccKlf5SBFnL2Ri/xofbaA68Cc3MGjP/NuwgnsvWh+9hLIR/DhrxbSiKXMY9vUW5dI6EW1eHaDHqe9sg==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0", + "@jest/types": "^26.3.0", + "@types/prettier": "^2.0.0", + "chalk": "^4.0.0", + "expect": "^26.4.2", + "graceful-fs": "^4.2.4", + "jest-diff": "^26.4.2", + "jest-get-type": "^26.3.0", + "jest-haste-map": "^26.3.0", + "jest-matcher-utils": "^26.4.2", + "jest-message-util": "^26.3.0", + "jest-resolve": "^26.4.0", + "natural-compare": "^1.4.0", + "pretty-format": "^26.4.2", + "semver": "^7.3.2" }, "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" } - } - } - }, - "is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "dev": true - }, - "is-path-inside": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.1.tgz", - "integrity": "sha512-CKstxrctq1kUesU6WhtZDbYKzzYBuRH0UYInAVrkc/EYdB9ltbfE0gOoayG9nhohG6447sOOVGhHqsdmBvkbNg==", - "dev": true - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-relative": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", - "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", - "dev": true, - "requires": { - "is-unc-path": "^1.0.0" - } - }, - "is-symbol": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", - "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - }, - "dependencies": { - "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true - } - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "is-unc-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", - "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", - "dev": true, - "requires": { - "unc-path-regex": "^0.1.2" - } - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, - "is-valid-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", - "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=", - "dev": true - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true - }, - "istanbul-lib-coverage": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", - "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", - "dev": true - }, - "istanbul-lib-hook": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", - "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", - "dev": true, - "requires": { - "append-transform": "^2.0.0" - } - }, - "istanbul-lib-instrument": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.0.tgz", - "integrity": "sha512-Nm4wVHdo7ZXSG30KjZ2Wl5SU/Bw7bDx1PdaiIFzEStdjs0H12mOTncn1GVYuqQSaZxpg87VGBRsVRPGD2cD1AQ==", - "dev": true, - "requires": { - "@babel/core": "^7.7.5", - "@babel/parser": "^7.7.5", - "@babel/template": "^7.7.4", - "@babel/traverse": "^7.7.4", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", - "semver": "^6.3.0" - }, - "dependencies": { + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } } } }, - "istanbul-lib-processinfo": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz", - "integrity": "sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw==", + "jest-util": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.3.0.tgz", + "integrity": "sha512-4zpn6bwV0+AMFN0IYhH/wnzIQzRaYVrz1A8sYnRnj4UXDXbOVtWmlaZkO9mipFqZ13okIfN87aDoJWB7VH6hcw==", "dev": true, "requires": { - "archy": "^1.0.0", - "cross-spawn": "^7.0.0", - "istanbul-lib-coverage": "^3.0.0-alpha.1", - "make-dir": "^3.0.0", - "p-map": "^3.0.0", - "rimraf": "^3.0.0", - "uuid": "^3.3.3" + "@jest/types": "^26.3.0", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" }, "dependencies": { - "cross-spawn": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz", - "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==", + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", "dev": true, "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" } }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } }, - "rimraf": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.0.tgz", - "integrity": "sha512-NDGVxTsjqfunkds7CqsOiEnxln4Bo7Nddl3XhS4pXg5OzwkLqJ971ZVAAnB+DDLnF76N+VnDEiBHaVV8I06SUg==", + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "dev": true, "requires": { - "glob": "^7.1.3" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "shebang-regex": "^3.0.0" + "color-name": "~1.1.4" } }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, "requires": { - "isexe": "^2.0.0" + "to-regex-range": "^5.0.1" } - } - } - }, - "istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "dev": true, - "requires": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - }, - "dependencies": { + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { "has-flag": "^4.0.0" } - } - } - }, - "istanbul-lib-source-maps": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", - "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "requires": { - "ms": "^2.1.1" + "is-number": "^7.0.0" } - }, - "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 - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "istanbul-reports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.0.tgz", - "integrity": "sha512-2osTcC8zcOSUkImzN2EWQta3Vdi4WjjKw99P2yWx5mLnigAM0Rd5uYFn1cf2i/Ois45GkNjaoTqc5CxgMSX80A==", - "dev": true, - "requires": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - } - }, - "jquery": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.5.0.tgz", - "integrity": "sha512-Xb7SVYMvygPxbFMpTFQiHh1J7HClEaThguL15N/Gg37Lri/qKyhRGZYzHRyLH8Stq3Aow0LsHO2O2ci86fCrNQ==", - "dev": true - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "json-stable-stringify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz", - "integrity": "sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U=", - "dev": true, - "requires": { - "jsonify": "~0.0.0" - } - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "json5": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz", - "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "dev": true - }, - "jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", - "dev": true - }, - "just-debounce": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.0.0.tgz", - "integrity": "sha1-h/zPrv/AtozRnVX2cilD+SnqNeo=", - "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 - }, - "labeled-stream-splicer": { - "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", - "stream-splicer": "^2.0.0" - } - }, - "last-run": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", - "integrity": "sha1-RblpQsF7HHnHchmCWbqUO+v4yls=", - "dev": true, - "requires": { - "default-resolution": "^2.0.0", - "es6-weak-map": "^2.0.1" - } - }, - "lazystream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", - "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", - "dev": true, - "requires": { - "readable-stream": "^2.0.5" - } - }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dev": true, - "requires": { - "invert-kv": "^1.0.0" - } - }, - "lead": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", - "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=", - "dev": true, - "requires": { - "flush-write-stream": "^1.0.2" - } - }, - "liftoff": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", - "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", - "dev": true, - "requires": { - "extend": "^3.0.0", - "findup-sync": "^3.0.0", - "fined": "^1.0.1", - "flagged-respawn": "^1.0.0", - "is-plain-object": "^2.0.4", - "object.map": "^1.0.0", - "rechoir": "^0.6.2", - "resolve": "^1.1.7" + } } }, - "listen": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/listen/-/listen-1.0.1.tgz", - "integrity": "sha1-/u3j1ah0xTwihNPDWXpfxa/HTkM=", - "dev": true - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "jest-validate": { + "version": "26.4.2", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.4.2.tgz", + "integrity": "sha512-blft+xDX7XXghfhY0mrsBCYhX365n8K5wNDC4XAcNKqqjEzsRUSXP44m6PL0QJEW2crxQFLLztVnJ4j7oPlQrQ==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" + "@jest/types": "^26.3.0", + "camelcase": "^6.0.0", + "chalk": "^4.0.0", + "jest-get-type": "^26.3.0", + "leven": "^3.1.0", + "pretty-format": "^26.4.2" }, "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "camelcase": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.0.0.tgz", + "integrity": "sha512-8KMDF1Vz2gzOq54ONPJS65IvTUaB1cHJ2DMM7MbPmLZljDH1qpzzLsWdiN9pHh6qvkRVDTi/07+eNGch/oLU4w==", + "dev": true + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } } } }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "jest-watcher": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-26.3.0.tgz", + "integrity": "sha512-XnLdKmyCGJ3VoF6G/p5ohbJ04q/vv5aH9ENI+i6BL0uu9WWB6Z7Z2lhQQk0d2AVZcRGp1yW+/TsoToMhBFPRdQ==", "dev": true, "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "@jest/test-result": "^26.3.0", + "@jest/types": "^26.3.0", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^26.3.0", + "string-length": "^4.0.1" }, "dependencies": { - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } } } }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", - "dev": true + "jest-worker": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.3.0.tgz", + "integrity": "sha512-Vmpn2F6IASefL+DVBhPzI2J9/GJUsqzomdeN+P+dK8/jKxbh8R3BtFnx3FIta7wYlPU62cpJMJQo4kuOowcMnw==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } }, - "lodash.flattendeep": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", - "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", + "js-stringify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz", + "integrity": "sha1-Fzb939lyTyijaCrcYjCufk6Weds=", "dev": true }, - "lodash.memoize": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz", - "integrity": "sha1-LcvSwofLwKVcxCMovQxzYVDVPj8=", + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, - "log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", "dev": true, "requires": { - "chalk": "^2.0.1" + "argparse": "^1.0.7", + "esprima": "^4.0.0" } }, - "lunr": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.8.tgz", - "integrity": "sha512-oxMeX/Y35PNFuZoHp+jUj5OSEmLCaIH4KTFJh7a93cHBoFmpw2IoPs22VIz7vyO2YUnx2Tn9dzIwO2P/4quIRg==", - "dev": true - }, - "make-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.0.tgz", - "integrity": "sha512-grNJDhb8b1Jm1qeqW5R/O63wUo4UXo2v2HMic6YT9i/HBlF93S8jkMgH7yugvY9ABDShH4VZMn8I+U8+fCNegw==", + "js2xmlparser": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.1.tgz", + "integrity": "sha512-KrPTolcw6RocpYjdC7pL7v62e55q7qOMHvLX1UCLc5AAS8qeJ6nukarEJAF2KL2PZxlbGueEbINqZR2bDe/gUw==", "dev": true, "requires": { - "semver": "^6.0.0" + "xmlcreate": "^2.0.3" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "jsdoc": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-3.6.5.tgz", + "integrity": "sha512-SbY+i9ONuxSK35cgVHaI8O9senTE4CDYAmGSDJ5l3+sfe62Ff4gy96osy6OW84t4K4A8iGnMrlRrsSItSNp3RQ==", + "dev": true, + "requires": { + "@babel/parser": "^7.9.4", + "bluebird": "^3.7.2", + "catharsis": "^0.8.11", + "escape-string-regexp": "^2.0.0", + "js2xmlparser": "^4.0.1", + "klaw": "^3.0.0", + "markdown-it": "^10.0.0", + "markdown-it-anchor": "^5.2.7", + "marked": "^0.8.2", + "mkdirp": "^1.0.4", + "requizzle": "^0.2.3", + "strip-json-comments": "^3.1.0", + "taffydb": "2.6.2", + "underscore": "~1.10.2" }, "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "underscore": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.10.2.tgz", + "integrity": "sha512-N4P+Q/BuyuEKFJ43B9gYuOj4TQUHXX+j2FqguVOpjkssLUUrnJofCcBccJSCoeturDoZU6GorDTHSvUDlSQbTg==", "dev": true } } }, - "make-error": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz", - "integrity": "sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==", - "dev": true - }, - "make-error-cause": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/make-error-cause/-/make-error-cause-1.2.2.tgz", - "integrity": "sha1-3wOI/NCzeBbf8KX7gQiTl3fcvJ0=", - "dev": true, - "requires": { - "make-error": "^1.2.0" - } - }, - "make-iterator": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", - "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", - "dev": true, - "requires": { - "kind-of": "^6.0.2" + "jsdom": { + "version": "16.4.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.4.0.tgz", + "integrity": "sha512-lYMm3wYdgPhrl7pDcRmvzPhhrGVBeVhPIqeHjzeiHN3DFmD1RBpbExbi8vU7BJdH8VAZYovR8DMt0PNNDM7k8w==", + "dev": true, + "requires": { + "abab": "^2.0.3", + "acorn": "^7.1.1", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.2.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.0", + "domexception": "^2.0.1", + "escodegen": "^1.14.1", + "html-encoding-sniffer": "^2.0.1", + "is-potential-custom-element-name": "^1.0.0", + "nwsapi": "^2.2.0", + "parse5": "5.1.1", + "request": "^2.88.2", + "request-promise-native": "^1.0.8", + "saxes": "^5.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^3.0.1", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0", + "ws": "^7.2.3", + "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "acorn": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.0.tgz", + "integrity": "sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w==", + "dev": true + }, + "acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + } + }, + "ws": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.3.1.tgz", + "integrity": "sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA==", + "dev": true + } } }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true }, - "map-stream": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", - "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=", + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true }, - "marked": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.8.0.tgz", - "integrity": "sha512-MyUe+T/Pw4TZufHkzAfDj6HarCBWia2y27/bhuYkTaiUnfDYFnCP3KUN+9oM7Wi6JA2rymtVYbQu3spE0GCmxQ==", + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, - "matchdep": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", - "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=", + "json-stable-stringify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz", + "integrity": "sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U=", "dev": true, "requires": { - "findup-sync": "^2.0.0", - "micromatch": "^3.0.4", - "resolve": "^1.4.0", - "stack-trace": "0.0.10" - }, - "dependencies": { - "findup-sync": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", - "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", - "dev": true, - "requires": { - "detect-file": "^1.0.0", - "is-glob": "^3.1.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - } - }, - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } + "jsonify": "~0.0.0" } }, - "matplotnode": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/matplotnode/-/matplotnode-0.4.2.tgz", - "integrity": "sha512-PvamLgebQbPQ9eJs8bkyODnabWRmKivAAgEuP9Kg8gpXiEUwPFL3cPfLfZtHQhqYCwmzjIsMjrWfz2UPf2jrUA==", + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", "dev": true }, - "md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", "dev": true, "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" + "minimist": "^1.2.5" + }, + "dependencies": { + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + } } }, - "merge2": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.4.tgz", - "integrity": "sha512-FYE8xI+6pjFOhokZu0We3S5NKCirLbCzSh2Usf3qEyr4X8U+0jNg9P8RZ4qz+V2UoECLVwSyzU3LxXBaLGtD3A==", + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", "dev": true }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", "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" + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" } }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "jstransformer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", + "integrity": "sha1-7Yvwkh4vPx7U1cGkT2hwntJHIsM=", "dev": true, "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" + "is-promise": "^2.0.0", + "promise": "^7.0.1" } }, - "mime": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", - "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "just-debounce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.0.0.tgz", + "integrity": "sha1-h/zPrv/AtozRnVX2cilD+SnqNeo=", "dev": true }, - "min-wd": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/min-wd/-/min-wd-2.12.0.tgz", - "integrity": "sha512-wCCeyM9tZCla5AP9KdR+GAaNUL5zOwXYTQAUQVO+GmeuajQHXKJEQJfGumUfygZ6KbmhvuViuwOIZ0EUlZMMpw==", + "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 + }, + "klaw": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz", + "integrity": "sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==", "dev": true, "requires": { - "brout": "^1.1.0", - "listen": "^1.0.0", - "resolve": "^1.8.1", - "saucelabs": "^1.5.0", - "source-mapper": "^2.0.0", - "through2": "^2.0.0" + "graceful-fs": "^4.1.9" } }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "dev": true }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true + "labeled-stream-splicer": { + "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", + "stream-splicer": "^2.0.0" + } }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "last-run": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", + "integrity": "sha1-RblpQsF7HHnHchmCWbqUO+v4yls=", "dev": true, "requires": { - "brace-expansion": "^1.1.7" + "default-resolution": "^2.0.0", + "es6-weak-map": "^2.0.1" } }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", "dev": true }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "lazystream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", + "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", "dev": true, "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } + "readable-stream": "^2.0.5" } }, - "mkdirp": { - "version": "0.5.1", - "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", "dev": true, "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - } + "invert-kv": "^1.0.0" } }, - "mocaccino": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/mocaccino/-/mocaccino-4.1.1.tgz", - "integrity": "sha512-/sYoNH7bl+73XZEtcFt0xLt9WZckr65FDzlW2MumQbE21JFJaXrtlSs+j9rfucZmw/yzFiBYL+apQmlw/0GP6A==", + "lead": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", + "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=", "dev": true, "requires": { - "brout": "^1.1.0", - "listen": "^1.0.0", - "mocha": "^5.2.0", - "resolve": "^1.8.1", - "supports-color": "^5.5.0", - "through2": "^2.0.5" - }, - "dependencies": { - "commander": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", - "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", - "dev": true - }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "he": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", - "dev": true - }, - "mocha": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", - "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", - "dev": true, - "requires": { - "browser-stdout": "1.3.1", - "commander": "2.15.1", - "debug": "3.1.0", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "glob": "7.1.2", - "growl": "1.10.5", - "he": "1.1.1", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "supports-color": "5.4.0" - }, - "dependencies": { - "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - } + "flush-write-stream": "^1.0.2" + } + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "liftoff": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", + "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", + "dev": true, + "requires": { + "extend": "^3.0.0", + "findup-sync": "^3.0.0", + "fined": "^1.0.1", + "flagged-respawn": "^1.0.0", + "is-plain-object": "^2.0.4", + "object.map": "^1.0.0", + "rechoir": "^0.6.2", + "resolve": "^1.1.7" } }, - "mocha": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-7.0.1.tgz", - "integrity": "sha512-9eWmWTdHLXh72rGrdZjNbG3aa1/3NRPpul1z0D979QpEnFdCG0Q5tv834N+94QEN2cysfV72YocQ3fn87s70fg==", + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "dev": true + }, + "linkify-it": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz", + "integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==", "dev": true, "requires": { - "ansi-colors": "3.2.3", - "browser-stdout": "1.3.1", - "chokidar": "3.3.0", - "debug": "3.2.6", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "find-up": "3.0.0", - "glob": "7.1.3", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "3.13.1", - "log-symbols": "2.2.0", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "ms": "2.1.1", - "node-environment-flags": "1.0.6", - "object.assign": "4.1.0", - "strip-json-comments": "2.0.1", - "supports-color": "6.0.0", - "which": "1.3.1", - "wide-align": "1.1.3", - "yargs": "13.3.0", - "yargs-parser": "13.1.1", - "yargs-unparser": "1.6.0" + "uc.micro": "^1.0.1" + } + }, + "listen": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/listen/-/listen-1.0.1.tgz", + "integrity": "sha1-/u3j1ah0xTwihNPDWXpfxa/HTkM=", + "dev": true + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" }, "dependencies": { - "ansi-colors": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", - "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", - "dev": true - }, - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "binary-extensions": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", - "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", - "dev": true - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "chokidar": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", - "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", - "dev": true, - "requires": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "fsevents": "~2.1.1", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.2.0" - } - }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "fsevents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", - "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", - "dev": true, - "optional": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true - }, - "glob-parent": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", - "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", + } + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", + "dev": true + }, + "lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", + "dev": true + }, + "lodash.memoize": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz", + "integrity": "sha1-LcvSwofLwKVcxCMovQxzYVDVPj8=", + "dev": true + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, + "log-symbols": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", + "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", + "dev": true, + "requires": { + "chalk": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", "dev": true, "requires": { - "is-glob": "^4.0.1" + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" } }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "dev": true, "requires": { - "binary-extensions": "^2.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - }, - "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 - }, - "readdirp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", - "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "picomatch": "^2.0.4" + "color-name": "~1.1.4" } }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" + "has-flag": "^4.0.0" } - }, - "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + } + } + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true - }, - "yargs": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", - "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", + } + } + }, + "make-error": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz", + "integrity": "sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==", + "dev": true + }, + "make-error-cause": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/make-error-cause/-/make-error-cause-1.2.2.tgz", + "integrity": "sha1-3wOI/NCzeBbf8KX7gQiTl3fcvJ0=", + "dev": true, + "requires": { + "make-error": "^1.2.0" + } + }, + "make-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", + "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "dev": true, + "requires": { + "tmpl": "1.0.x" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "markdown-it": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-10.0.0.tgz", + "integrity": "sha512-YWOP1j7UbDNz+TumYP1kpwnP0aEa711cJjrAQrzd0UXlbJfc5aAq0F/PZHjiioqDC1NKgvIMX+o+9Bk7yuM2dg==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "entities": "~2.0.0", + "linkify-it": "^2.0.0", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + } + }, + "markdown-it-anchor": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-5.3.0.tgz", + "integrity": "sha512-/V1MnLL/rgJ3jkMWo84UR+K+jF1cxNG1a+KwqeXqTIJ+jtA8aWSHuigx8lTzauiIjBDbwF3NcWQMotd0Dm39jA==", + "dev": true + }, + "marked": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/marked/-/marked-0.8.2.tgz", + "integrity": "sha512-EGwzEeCcLniFX51DhTpmTom+dSA/MG/OBUDjnWtHbEnjAH180VzUeAw+oE4+Zv+CoYBWyRlYOTR0N8SO9R1PVw==", + "dev": true + }, + "matchdep": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", + "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=", + "dev": true, + "requires": { + "findup-sync": "^2.0.0", + "micromatch": "^3.0.4", + "resolve": "^1.4.0", + "stack-trace": "0.0.10" + }, + "dependencies": { + "findup-sync": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", + "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", "dev": true, "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.1" + "detect-file": "^1.0.0", + "is-glob": "^3.1.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" } }, - "yargs-parser": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", - "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "matplotnode": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/matplotnode/-/matplotnode-0.4.2.tgz", + "integrity": "sha512-PvamLgebQbPQ9eJs8bkyODnabWRmKivAAgEuP9Kg8gpXiEUwPFL3cPfLfZtHQhqYCwmzjIsMjrWfz2UPf2jrUA==", + "dev": true + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=", + "dev": true + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "merge2": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.4.tgz", + "integrity": "sha512-FYE8xI+6pjFOhokZu0We3S5NKCirLbCzSh2Usf3qEyr4X8U+0jNg9P8RZ4qz+V2UoECLVwSyzU3LxXBaLGtD3A==", + "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" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "mime": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "dev": true + }, + "mime-db": { + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", + "dev": true + }, + "mime-types": { + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "dev": true, + "requires": { + "mime-db": "1.44.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true + }, + "min-wd": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/min-wd/-/min-wd-2.12.0.tgz", + "integrity": "sha512-wCCeyM9tZCla5AP9KdR+GAaNUL5zOwXYTQAUQVO+GmeuajQHXKJEQJfGumUfygZ6KbmhvuViuwOIZ0EUlZMMpw==", + "dev": true, + "requires": { + "brout": "^1.1.0", + "listen": "^1.0.0", + "resolve": "^1.8.1", + "saucelabs": "^1.5.0", + "source-mapper": "^2.0.0", + "through2": "^2.0.0" + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + }, + "dependencies": { + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + } + } + }, + "minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "mixin-deep": { + "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", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "is-plain-object": "^2.0.4" } } } }, - "mochify": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/mochify/-/mochify-6.3.0.tgz", - "integrity": "sha512-ZL5G+VnH4oGbbomhdyrQgoZnS3qy6mp72suyIOmRIpXV59stnurnjRyz/hERwBdYaMyAdMzKhLEd0i5zbx6sqQ==", + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", "dev": true, + "optional": true, "requires": { - "brout": "^1.1.0", - "browserify": "^16.2.3", - "consolify": "^2.1.0", - "coverify": "^1.4.1", - "glob": "^7.1.2", - "mime": "^2.3.1", - "min-wd": "^2.11.0", - "mocaccino": "^4.1.0", + "minimist": "^1.2.5" + } + }, + "mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true + }, + "mocaccino": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/mocaccino/-/mocaccino-4.1.2.tgz", + "integrity": "sha512-lTlZ47MiMVco1gQhYGh75/U6t6cMNxLVhQTLNsJWPZlWY9dlF+SS9vKrnjaNpRzYThh8yVJpI8+hpChyUj+Qzg==", + "dev": true, + "requires": { + "brout": "^1.3.0", + "listen": "^1.0.0", "mocha": "^5.2.0", - "puppeteer": "^1.13.0", - "resolve": "^1.5.0", - "source-mapper": "^2.1.0", - "subarg": "^1.0.0", - "through2": "^2.0.0", - "watchify": "^3.11.1" + "resolve": "^1.8.1", + "supports-color": "^5.5.0", + "through2": "^2.0.5" }, "dependencies": { "commander": { @@ -4970,6 +8758,20 @@ "ms": "2.0.0" } }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, "he": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", @@ -4991,244 +8793,109 @@ "growl": "1.10.5", "he": "1.1.1", "minimatch": "3.0.4", - "mkdirp": "0.5.1", "supports-color": "5.4.0" }, "dependencies": { - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "supports-color": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "has-flag": "^3.0.0" } } } }, "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { "has-flag": "^3.0.0" } - } - } - }, - "module-deps": { - "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.2", - "concat-stream": "~1.6.0", - "defined": "^1.0.0", - "detective": "^5.0.2", - "duplexer2": "^0.1.2", - "inherits": "^2.0.1", - "parents": "^1.0.0", - "readable-stream": "^2.0.2", - "resolve": "^1.4.0", - "stream-combiner2": "^1.1.1", - "subarg": "^1.0.0", - "through2": "^2.0.0", - "xtend": "^4.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "mute-stdout": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", - "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==", - "dev": true - }, - "nan": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", - "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", - "dev": true, - "optional": true - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, - "nblas": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/nblas/-/nblas-2.1.6.tgz", - "integrity": "sha512-j2exkYE1T2mk+xohPEBkcaG3BgGvjAVM+m9vsc40+CMhD+9kLQQvV4sALxgOHeaGgOXXTMZyhd5D5eN26yz7qQ==", - "optional": true - }, - "neo-async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", - "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", - "dev": true - }, - "next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", - "dev": true - }, - "nlapack": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/nlapack/-/nlapack-2.0.2.tgz", - "integrity": "sha512-UxePSRYkvylnjEqv9IjoQ5ZHALr+0QzSXsUmvkJ6fQ5A+R9KV8O94TaS9NZ/PKHj0epG04JrcKOq7B+pN4zTBw==", - "optional": true - }, - "node-environment-flags": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz", - "integrity": "sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==", - "dev": true, - "requires": { - "object.getownpropertydescriptors": "^2.0.3", - "semver": "^5.7.0" - } - }, - "node-preload": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", - "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", - "dev": true, - "requires": { - "process-on-spawn": "^1.0.0" - } - }, - "nodemark": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/nodemark/-/nodemark-0.3.0.tgz", - "integrity": "sha512-ehT+NfV5liLY1sZVcosWiCViWHltQTnjsh/7GYkMkirzuyYw/K2VAbgwEIldAM1e9LJ3coGF6uBlTw1/EdZ1XA==", - "dev": true - }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - }, - "dependencies": { - "resolve": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz", - "integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } - } - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, - "now-and-later": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", - "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", - "dev": true, - "requires": { - "once": "^1.3.2" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, - "nyc": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.0.0.tgz", - "integrity": "sha512-qcLBlNCKMDVuKb7d1fpxjPR8sHeMVX0CHarXAVzrVWoFrigCkYR8xcrjfXSPi5HXM7EU78L6ywO7w1c5rZNCNg==", - "dev": true, - "requires": { - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "caching-transform": "^4.0.0", - "convert-source-map": "^1.7.0", - "decamelize": "^1.2.0", - "find-cache-dir": "^3.2.0", - "find-up": "^4.1.0", - "foreground-child": "^2.0.0", - "glob": "^7.1.6", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-hook": "^3.0.0", - "istanbul-lib-instrument": "^4.0.0", - "istanbul-lib-processinfo": "^2.0.2", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.0", - "js-yaml": "^3.13.1", - "make-dir": "^3.0.0", - "node-preload": "^0.2.0", - "p-map": "^3.0.0", - "process-on-spawn": "^1.0.0", - "resolve-from": "^5.0.0", - "rimraf": "^3.0.0", - "signal-exit": "^3.0.2", - "spawn-wrap": "^2.0.0", - "test-exclude": "^6.0.0", - "uuid": "^3.3.3", - "yargs": "^15.0.2" + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + } + } + }, + "mocha": { + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.1.3.tgz", + "integrity": "sha512-ZbaYib4hT4PpF4bdSO2DohooKXIn4lDeiYqB+vTmCdr6l2woW0b6H3pf5x4sM5nwQMru9RvjjHYWVGltR50ZBw==", + "dev": true, + "requires": { + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.4.2", + "debug": "4.1.1", + "diff": "4.0.2", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.1.6", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "3.14.0", + "log-symbols": "4.0.0", + "minimatch": "3.0.4", + "ms": "2.1.2", + "object.assign": "4.1.0", + "promise.allsettled": "1.0.2", + "serialize-javascript": "4.0.0", + "strip-json-comments": "3.0.1", + "supports-color": "7.1.0", + "which": "2.0.2", + "wide-align": "1.1.3", + "workerpool": "6.0.0", + "yargs": "13.3.2", + "yargs-parser": "13.1.2", + "yargs-unparser": "1.6.1" }, "dependencies": { + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, - "ansi-styles": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.0.tgz", - "integrity": "sha512-7kFQgnEaMdRtwf6uSfUnVr9gSGC7faurn+J/Mv90/W+iTtN0405/nLdopfMWwchyxhbGYl6TC4Sccn9TUkGAgg==", + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", "dev": true, "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "binary-extensions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", + "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", + "dev": true + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" } }, "camelcase": { @@ -5237,201 +8904,763 @@ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true }, + "chokidar": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.2.tgz", + "integrity": "sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A==", + "dev": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.4.0" + } + }, "cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", "dev": true, "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" } }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "color-name": "~1.1.4" + "ms": "^2.1.1" } }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true }, - "convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, "requires": { - "safe-buffer": "~5.1.1" + "to-regex-range": "^5.0.1" } }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "dev": true, + "optional": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "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 + }, + "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 + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "readdirp": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", + "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + }, + "dependencies": { + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true + } + } + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "strip-json-comments": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", + "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "isexe": "^2.0.0" } }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" } }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", "dev": true }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", "dev": true, "requires": { - "p-locate": "^4.1.0" + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + } } }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", "dev": true, "requires": { - "p-limit": "^2.2.0" + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + } + } + }, + "mochify": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/mochify/-/mochify-6.6.0.tgz", + "integrity": "sha512-4rM4N/+sevEEa3RKq3VAcMXMBEWgLtXOgdrvBUDuRr2Bne91C+Ka5yQv9cXHEbS7iQm/YAbgszyHkBHWMuX+4w==", + "dev": true, + "requires": { + "brout": "^1.3.0", + "browserify": "^16.2.3", + "consolify": "^2.1.0", + "coverify": "^1.4.1", + "glob": "^7.1.2", + "mime": "^2.3.1", + "min-wd": "^2.11.0", + "mocaccino": "^4.1.2", + "mocha": "^5.2.0", + "puppeteer": "^1.19.0", + "resolve": "^1.5.0", + "source-mapper": "^2.1.0", + "subarg": "^1.0.0", + "through2": "^2.0.0", + "watchify": "^3.11.1" + }, + "dependencies": { + "commander": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", "dev": true }, - "rimraf": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.0.tgz", - "integrity": "sha512-NDGVxTsjqfunkds7CqsOiEnxln4Bo7Nddl3XhS4pXg5OzwkLqJ971ZVAAnB+DDLnF76N+VnDEiBHaVV8I06SUg==", + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "dev": true, "requires": { - "glob": "^7.1.3" + "ms": "2.0.0" } }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true + }, + "mocha": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", + "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", "dev": true, "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "browser-stdout": "1.3.1", + "commander": "2.15.1", + "debug": "3.1.0", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "glob": "7.1.2", + "growl": "1.10.5", + "he": "1.1.1", + "minimatch": "3.0.4", + "supports-color": "5.4.0" + }, + "dependencies": { + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } } }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "supports-color": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "dev": true, "requires": { - "ansi-regex": "^5.0.0" + "has-flag": "^3.0.0" } - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + } + } + }, + "module-deps": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-6.2.3.tgz", + "integrity": "sha512-fg7OZaQBcL4/L+AK5f4iVqf9OMbCclXfy/znXRxTVhJSeW5AIlS9AwheYwDaXM3lVW7OBeaeUEY3gbaC6cLlSA==", + "dev": true, + "requires": { + "JSONStream": "^1.0.3", + "browser-resolve": "^2.0.0", + "cached-path-relative": "^1.0.2", + "concat-stream": "~1.6.0", + "defined": "^1.0.0", + "detective": "^5.2.0", + "duplexer2": "^0.1.2", + "inherits": "^2.0.1", + "parents": "^1.0.0", + "readable-stream": "^2.0.2", + "resolve": "^1.4.0", + "stream-combiner2": "^1.1.1", + "subarg": "^1.0.0", + "through2": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "mute-stdout": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", + "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==", + "dev": true + }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "nblas": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/nblas/-/nblas-2.1.9.tgz", + "integrity": "sha512-nMMTKm+ETAT2fYbR54Y3v448iu9akEA2wDRM0mQL8bvjBHBL2zRu3Ww68k0/OLwWb5uQG9ovRNunV1UUjZEREw==", + "optional": true + }, + "needle": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.5.2.tgz", + "integrity": "sha512-LbRIwS9BfkPvNwNHlsA41Q29kL2L/6VaOJ0qisM5lLWsTV3nP15abO5ITL6L81zqFhzjRKDAYjpcBcwM0AVvLQ==", + "dev": true, + "optional": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", "dev": true, + "optional": true, "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "ms": "^2.1.1" } }, - "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", - "dev": true + "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, + "optional": true + } + } + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "nlapack": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/nlapack/-/nlapack-2.0.4.tgz", + "integrity": "sha512-wOSREY+1LoAQCJkOR+d4xNFXYZEPaXH8iLxbAHCFj/+ynMtNGfWOihMzTEo6rL+fzVIWcoU00zFxNB34+8BXSw==" + }, + "node-dir": { + "version": "0.1.17", + "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz", + "integrity": "sha1-X1Zl2TNRM1yqvvjxxVRRbPXx5OU=", + "dev": true, + "requires": { + "minimatch": "^3.0.2" + } + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "dev": true + }, + "node-modules-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", + "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", + "dev": true + }, + "node-notifier": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.0.tgz", + "integrity": "sha512-46z7DUmcjoYdaWyXouuFNNfUo6eFa94t23c53c+lG/9Cvauk4a98rAUp9672X5dxGdQmLpPzTxzu8f/OeEPaFA==", + "dev": true, + "optional": true, + "requires": { + "growly": "^1.3.0", + "is-wsl": "^2.2.0", + "semver": "^7.3.2", + "shellwords": "^0.1.1", + "uuid": "^8.3.0", + "which": "^2.0.2" + }, + "dependencies": { + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "dev": true, + "optional": true }, - "yargs": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.0.2.tgz", - "integrity": "sha512-GH/X/hYt+x5hOat4LMnCqMd8r5Cv78heOMIJn1hr7QPPBqfeC6p89Y78+WB9yGDvfpCvgasfmWLzNzEioOUD9Q==", + "uuid": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.0.tgz", + "integrity": "sha512-fX6Z5o4m6XsXBdli9g7DtWgAx+osMsRRZFKma1mIUsLCz6vRvv+pz5VNbyu9UEDzpMWulZfvpgb/cmDXVulYFQ==", "dev": true, + "optional": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "optional": true, "requires": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^16.1.0" + "isexe": "^2.0.0" } - }, - "yargs-parser": { - "version": "16.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-16.1.0.tgz", - "integrity": "sha512-H/V41UNZQPkUMIT5h5hiwg4QKIY1RPvoBV4XcjUbRM8Bk2oKqqyZ0DIEbTFZB0XjbtSPG8SAa/0DxCQmiRgzKg==", + } + } + }, + "node-pre-gyp": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz", + "integrity": "sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A==", + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nodemark": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/nodemark/-/nodemark-0.3.0.tgz", + "integrity": "sha512-ehT+NfV5liLY1sZVcosWiCViWHltQTnjsh/7GYkMkirzuyYw/K2VAbgwEIldAM1e9LJ3coGF6uBlTw1/EdZ1XA==", + "dev": true + }, + "nopt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", + "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "resolve": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz", + "integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==", "dev": true, "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "path-parse": "^1.0.6" } } } }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "now-and-later": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", + "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", + "dev": true, + "requires": { + "once": "^1.3.2" + } + }, + "npm-bundled": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz", + "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==", + "dev": true, + "optional": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz", + "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==", + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + }, + "dependencies": { + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + } + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, "object-copy": { "version": "0.1.0", @@ -5465,9 +9694,9 @@ } }, "object-inspect": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", "dev": true }, "object-keys": { @@ -5509,16 +9738,6 @@ "isobject": "^3.0.0" } }, - "object.getownpropertydescriptors": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", - "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" - } - }, "object.map": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", @@ -5552,27 +9771,31 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, "requires": { "wrappy": "1" } }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - }, - "dependencies": { - "minimist": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", - "dev": true - } + "mimic-fn": "^2.1.0" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" } }, "ordered-read-streams": { @@ -5590,15 +9813,40 @@ "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", "dev": true }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true, + "optional": true + }, "os-locale": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "resolved": "http://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", "dev": true, "requires": { "lcid": "^1.0.0" } }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, "outpipe": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/outpipe/-/outpipe-1.1.1.tgz", @@ -5608,22 +9856,34 @@ "shell-quote": "^1.4.2" } }, + "p-each-series": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.1.0.tgz", + "integrity": "sha512-ZuRs1miPT4HrjFa+9fRfOFXxGJfORgelKV9f9nNOWw2gl6gVsRaVDOQP0+MI0G0wGKns1Yacsu0GjOFbTK0JFQ==", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, "p-limit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.0.2.tgz", + "integrity": "sha512-iwqZSOoWIW+Ew4kAGUlN16J4M7OB3ysMLSZtnhmqx7njIHFPlxWBX8xo3lVTyFVq6mI/lL9qt2IsN1sHwaxJkg==", "dev": true, "requires": { "p-try": "^2.0.0" } }, "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "requires": { - "p-limit": "^2.0.0" + "p-limit": "^3.0.2" } }, "p-map": { @@ -5641,30 +9901,10 @@ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, - "package-hash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", - "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.15", - "hasha": "^5.0.0", - "lodash.flattendeep": "^4.4.0", - "release-zalgo": "^1.0.0" - }, - "dependencies": { - "graceful-fs": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", - "dev": true - } - } - }, "pako": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz", - "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", "dev": true }, "parents": { @@ -5677,14 +9917,13 @@ } }, "parse-asn1": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.4.tgz", - "integrity": "sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", "dev": true, "requires": { - "asn1.js": "^4.0.0", + "asn1.js": "^5.2.0", "browserify-aes": "^1.0.0", - "create-hash": "^1.1.0", "evp_bytestokey": "^1.0.0", "pbkdf2": "^3.0.3", "safe-buffer": "^5.1.1" @@ -5722,6 +9961,12 @@ "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", "dev": true }, + "parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "dev": true + }, "pascalcase": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", @@ -5752,7 +9997,12 @@ "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true }, "path-parse": { @@ -5801,19 +10051,10 @@ } } }, - "pause-stream": { - "version": "0.0.11", - "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", - "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", - "dev": true, - "requires": { - "through": "~2.3" - } - }, "pbkdf2": { - "version": "3.0.17", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", - "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", + "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", "dev": true, "requires": { "create-hash": "^1.1.2", @@ -5829,6 +10070,12 @@ "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", "dev": true }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, "picomatch": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.0.7.tgz", @@ -5850,6 +10097,15 @@ "pinkie": "^2.0.0" } }, + "pirates": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", + "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "dev": true, + "requires": { + "node-modules-regexp": "^1.0.0" + } + }, "pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", @@ -5878,6 +10134,15 @@ "p-locate": "^4.1.0" } }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, "p-locate": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", @@ -5911,70 +10176,75 @@ "readable-stream": "^2.0.2" } }, - "plugin-error": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz", - "integrity": "sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4=", + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "pretty-format": { + "version": "26.4.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.4.2.tgz", + "integrity": "sha512-zK6Gd8zDsEiVydOCGLkoBoZuqv8VTiHyAbKznXe/gaph/DAeZOmit9yMfgIz5adIgAMMs5XfoYSwAX3jcCO1tA==", "dev": true, "requires": { - "ansi-cyan": "^0.1.1", - "ansi-red": "^0.1.1", - "arr-diff": "^1.0.1", - "arr-union": "^2.0.1", - "extend-shallow": "^1.1.2" + "@jest/types": "^26.3.0", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^16.12.0" }, "dependencies": { - "arr-diff": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz", - "integrity": "sha1-aHwydYFjWI/vfeezb6vklesaOZo=", + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", "dev": true, "requires": { - "arr-flatten": "^1.0.1", - "array-slice": "^0.2.3" + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" } }, - "arr-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-2.1.0.tgz", - "integrity": "sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0=", - "dev": true - }, - "array-slice": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", - "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=", - "dev": true - }, - "extend-shallow": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz", - "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "kind-of": "^1.1.0" + "color-name": "~1.1.4" } }, - "kind-of": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", - "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ=", + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true } } }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true - }, "pretty-hrtime": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", "dev": true }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, "process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -5984,17 +10254,7 @@ "process-nextick-args": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", - "dev": true - }, - "process-on-spawn": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", - "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", - "dev": true, - "requires": { - "fromentries": "^1.2.0" - } + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" }, "progress": { "version": "2.0.3", @@ -6002,12 +10262,67 @@ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, + "requires": { + "asap": "~2.0.3" + } + }, + "promise.allsettled": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/promise.allsettled/-/promise.allsettled-1.0.2.tgz", + "integrity": "sha512-UpcYW5S1RaNKT6pd+s9jp9K9rlQge1UXKskec0j6Mmuq7UJCvlS2J2/s/yuPN8ehftf9HXMxWlKiPbGGUzpoRg==", + "dev": true, + "requires": { + "array.prototype.map": "^1.0.1", + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "iterate-value": "^1.0.0" + } + }, + "prompts": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.3.2.tgz", + "integrity": "sha512-Q06uKs2CkNYVID0VqwfAl9mipo99zkBv/n2JtWY89Yxa3ZabWSrs0e2KTudKVa3peLUvYXMefDqIleLPVUBZMA==", + "dev": true, + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.4" + } + }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "dev": true, + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, "proxy-from-env": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", "integrity": "sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4=", "dev": true }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, "public-encrypt": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", @@ -6020,8 +10335,184 @@ "parse-asn1": "^5.0.0", "randombytes": "^2.0.1", "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "pug": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pug/-/pug-2.0.4.tgz", + "integrity": "sha512-XhoaDlvi6NIzL49nu094R2NA6P37ijtgMDuWE+ofekDChvfKnzFal60bhSdiy8y2PBO6fmz3oMEIcfpBVRUdvw==", + "dev": true, + "requires": { + "pug-code-gen": "^2.0.2", + "pug-filters": "^3.1.1", + "pug-lexer": "^4.1.0", + "pug-linker": "^3.0.6", + "pug-load": "^2.0.12", + "pug-parser": "^5.0.1", + "pug-runtime": "^2.0.5", + "pug-strip-comments": "^1.0.4" + } + }, + "pug-attrs": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-2.0.4.tgz", + "integrity": "sha512-TaZ4Z2TWUPDJcV3wjU3RtUXMrd3kM4Wzjbe3EWnSsZPsJ3LDI0F3yCnf2/W7PPFF+edUFQ0HgDL1IoxSz5K8EQ==", + "dev": true, + "requires": { + "constantinople": "^3.0.1", + "js-stringify": "^1.0.1", + "pug-runtime": "^2.0.5" + } + }, + "pug-code-gen": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-2.0.2.tgz", + "integrity": "sha512-kROFWv/AHx/9CRgoGJeRSm+4mLWchbgpRzTEn8XCiwwOy6Vh0gAClS8Vh5TEJ9DBjaP8wCjS3J6HKsEsYdvaCw==", + "dev": true, + "requires": { + "constantinople": "^3.1.2", + "doctypes": "^1.1.0", + "js-stringify": "^1.0.1", + "pug-attrs": "^2.0.4", + "pug-error": "^1.3.3", + "pug-runtime": "^2.0.5", + "void-elements": "^2.0.1", + "with": "^5.0.0" + } + }, + "pug-error": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-1.3.3.tgz", + "integrity": "sha512-qE3YhESP2mRAWMFJgKdtT5D7ckThRScXRwkfo+Erqga7dyJdY3ZquspprMCj/9sJ2ijm5hXFWQE/A3l4poMWiQ==", + "dev": true + }, + "pug-filters": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-3.1.1.tgz", + "integrity": "sha512-lFfjNyGEyVWC4BwX0WyvkoWLapI5xHSM3xZJFUhx4JM4XyyRdO8Aucc6pCygnqV2uSgJFaJWW3Ft1wCWSoQkQg==", + "dev": true, + "requires": { + "clean-css": "^4.1.11", + "constantinople": "^3.0.1", + "jstransformer": "1.0.0", + "pug-error": "^1.3.3", + "pug-walk": "^1.1.8", + "resolve": "^1.1.6", + "uglify-js": "^2.6.1" + }, + "dependencies": { + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, + "requires": { + "center-align": "^0.1.1", + "right-align": "^0.1.1", + "wordwrap": "0.0.2" + } + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "dev": true, + "requires": { + "source-map": "~0.5.1", + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.10.0" + } + }, + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "requires": { + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", + "window-size": "0.1.0" + } + } + } + }, + "pug-lexer": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-4.1.0.tgz", + "integrity": "sha512-i55yzEBtjm0mlplW4LoANq7k3S8gDdfC6+LThGEvsK4FuobcKfDAwt6V4jKPH9RtiE3a2Akfg5UpafZ1OksaPA==", + "dev": true, + "requires": { + "character-parser": "^2.1.1", + "is-expression": "^3.0.0", + "pug-error": "^1.3.3" + } + }, + "pug-linker": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-3.0.6.tgz", + "integrity": "sha512-bagfuHttfQOpANGy1Y6NJ+0mNb7dD2MswFG2ZKj22s8g0wVsojpRlqveEQHmgXXcfROB2RT6oqbPYr9EN2ZWzg==", + "dev": true, + "requires": { + "pug-error": "^1.3.3", + "pug-walk": "^1.1.8" + } + }, + "pug-load": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-2.0.12.tgz", + "integrity": "sha512-UqpgGpyyXRYgJs/X60sE6SIf8UBsmcHYKNaOccyVLEuT6OPBIMo6xMPhoJnqtB3Q3BbO4Z3Bjz5qDsUWh4rXsg==", + "dev": true, + "requires": { + "object-assign": "^4.1.0", + "pug-walk": "^1.1.8" + } + }, + "pug-parser": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-5.0.1.tgz", + "integrity": "sha512-nGHqK+w07p5/PsPIyzkTQfzlYfuqoiGjaoqHv1LjOv2ZLXmGX1O+4Vcvps+P4LhxZ3drYSljjq4b+Naid126wA==", + "dev": true, + "requires": { + "pug-error": "^1.3.3", + "token-stream": "0.0.1" } }, + "pug-runtime": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-2.0.5.tgz", + "integrity": "sha512-P+rXKn9un4fQY77wtpcuFyvFaBww7/91f3jHa154qU26qFAnOe6SW1CbIDcxiG5lLK9HazYrMCCuDvNgDQNptw==", + "dev": true + }, + "pug-strip-comments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-1.0.4.tgz", + "integrity": "sha512-i5j/9CS4yFhSxHp5iKPHwigaig/VV9g+FgReLJWWHEHbvKsbqL0oP/K5ubuLco6Wu3Kan5p7u7qk8A4oLLh6vw==", + "dev": true, + "requires": { + "pug-error": "^1.3.3" + } + }, + "pug-walk": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-1.1.8.tgz", + "integrity": "sha512-GMu3M5nUL3fju4/egXwZO0XLi6fW/K3T3VTgFQ14GxNi8btlxgT5qZL//JwZFm/2Fa64J/PNS8AZeys3wiMkVA==", + "dev": true + }, "pump": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", @@ -6050,9 +10541,9 @@ "dev": true }, "puppeteer": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-1.18.0.tgz", - "integrity": "sha512-NCwSN4wEIj43k4jO8Asa5nzibrIDFHWykqkZFjkGr0/f6U73k1ysql0gadQmOGLtZewXvvWqlNo+4ZMgX+5vZA==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-1.20.0.tgz", + "integrity": "sha512-bt48RDBy2eIwZPrkgbcwHtb51mj2nKvHOPMaSH2IsWiv7lOG9k9zhaRzpDZafrk05ajMc3cu+lSQYYOfH2DkVQ==", "dev": true, "requires": { "debug": "^4.1.0", @@ -6082,6 +10573,12 @@ } } }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, "querystring": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", @@ -6113,6 +10610,78 @@ "safe-buffer": "^5.1.0" } }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true, + "optional": true + } + } + }, + "react-ace": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/react-ace/-/react-ace-6.6.0.tgz", + "integrity": "sha512-Jehhp8bxa8kqiXk07Jzy+uD5qZMBwo43O+raniGHjdX7Qk93xFkKaAz8LxtUVZPJGlRnV5ODMNj0qHwDSN+PBw==", + "dev": true, + "requires": { + "@babel/polyfill": "^7.4.4", + "brace": "^0.11.1", + "diff-match-patch": "^1.0.4", + "lodash.get": "^4.4.2", + "lodash.isequal": "^4.5.0", + "prop-types": "^15.7.2" + } + }, + "react-docgen": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/react-docgen/-/react-docgen-5.3.0.tgz", + "integrity": "sha512-hUrv69k6nxazOuOmdGeOpC/ldiKy7Qj/UFpxaQi0eDMrUFUTIPGtY5HJu7BggSmiyAMfREaESbtBL9UzdQ+hyg==", + "dev": true, + "requires": { + "@babel/core": "^7.7.5", + "@babel/runtime": "^7.7.6", + "ast-types": "^0.13.2", + "commander": "^2.19.0", + "doctrine": "^3.0.0", + "neo-async": "^2.6.1", + "node-dir": "^0.1.10", + "strip-indent": "^3.0.0" + }, + "dependencies": { + "commander": { + "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 + } + } + }, + "react-frame-component": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/react-frame-component/-/react-frame-component-4.1.3.tgz", + "integrity": "sha512-4PurhctiqnmC1F5prPZ+LdsalH7pZ3SFA5xoc0HBe8mSHctdLLt4Cr2WXfXOoajHBYq/yiipp9zOgx+vy8GiEA==", + "dev": true + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, "read-only-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz", @@ -6145,9 +10714,8 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "http://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", @@ -6169,6 +10737,32 @@ "readable-stream": "^2.0.2" } }, + "recast": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.17.6.tgz", + "integrity": "sha512-yoQRMRrK1lszNtbkGyM4kN45AwylV5hMiuEveUBlxytUViWevjvX6w+tzJt1LH4cfUhWt4NZvy3ThIhu6+m5wQ==", + "dev": true, + "requires": { + "ast-types": "0.12.4", + "esprima": "~4.0.0", + "private": "^0.1.8", + "source-map": "~0.6.1" + }, + "dependencies": { + "ast-types": { + "version": "0.12.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.12.4.tgz", + "integrity": "sha512-ky/YVYCbtVAS8TdMIaTiPFHwEpRB5z1hctepJplTr3UW5q8TDrpIMCILyk8pmLxGtn2KCtC/lSn7zOsaI7nzDw==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, "rechoir": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", @@ -6178,6 +10772,12 @@ "resolve": "^1.1.6" } }, + "regenerator-runtime": { + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", + "dev": true + }, "regex-not": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", @@ -6188,15 +10788,6 @@ "safe-regex": "^1.1.0" } }, - "release-zalgo": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", - "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", - "dev": true, - "requires": { - "es6-error": "^4.0.1" - } - }, "remove-bom-buffer": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", @@ -6253,11 +10844,102 @@ "remove-trailing-separator": "^1.1.0" } }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + } + } + }, + "request-promise-core": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", + "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", + "dev": true, + "requires": { + "lodash": "^4.17.19" + }, + "dependencies": { + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } + } + }, + "request-promise-native": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", + "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", + "dev": true, + "requires": { + "request-promise-core": "1.1.4", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + } + } + }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" }, "require-main-filename": { "version": "1.0.1", @@ -6265,6 +10947,15 @@ "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", "dev": true }, + "requizzle": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.3.tgz", + "integrity": "sha512-YanoyJjykPxGHii0fZP0uUPEXpvqfBDxWV7s6GKAiiOsiqhX6vHNyW3Qzdmqp/iq/ExbhaGbVrjB4ruEVSM4GQ==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, "resolve": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", @@ -6274,6 +10965,15 @@ "path-parse": "^1.0.5" } }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + } + }, "resolve-dir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", @@ -6317,6 +11017,15 @@ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "dev": true, + "requires": { + "align-text": "^0.1.1" + } + }, "rimraf": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", @@ -6336,6 +11045,12 @@ "inherits": "^2.0.1" } }, + "rsvp": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", + "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", + "dev": true + }, "run-parallel": { "version": "1.1.9", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz", @@ -6345,8 +11060,7 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "safe-regex": { "version": "1.1.0", @@ -6357,6 +11071,28 @@ "ret": "~0.1.10" } }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sane": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", + "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", + "dev": true, + "requires": { + "@cnakazawa/watch": "^1.0.3", + "anymatch": "^2.0.0", + "capture-exit": "^2.0.0", + "exec-sh": "^0.3.2", + "execa": "^1.0.0", + "fb-watchman": "^2.0.0", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5" + } + }, "saucelabs": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-1.5.0.tgz", @@ -6366,6 +11102,22 @@ "https-proxy-agent": "^2.2.1" } }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true, + "optional": true + }, + "saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dev": true, + "requires": { + "xmlchars": "^2.2.0" + } + }, "semver": { "version": "5.7.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", @@ -6381,11 +11133,19 @@ "sver-compat": "^1.5.0" } }, + "serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, "set-value": { "version": "2.0.1", @@ -6430,39 +11190,58 @@ "sha.js": "~2.4.4" } }, - "shell-quote": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", - "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", + "shasum-object": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shasum-object/-/shasum-object-1.0.0.tgz", + "integrity": "sha512-Iqo5rp/3xVi6M4YheapzZhhGPVs0yZwHj7wvwQ1B9z8H6zk+FEnI7y3Teq7qwnekfEhu8WmG2z0z4iWZaxLWVg==", "dev": true, "requires": { - "array-filter": "~0.0.0", - "array-map": "~0.0.0", - "array-reduce": "~0.0.0", - "jsonify": "~0.0.0" + "fast-safe-stringify": "^2.0.7" } }, - "shelljs": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.3.tgz", - "integrity": "sha512-fc0BKlAWiLpwZljmOvAOTE/gXawtCoNrP5oaY7KIaQbbyHeQVg01pSEuEGvGh3HEdBU4baCD7wQBwADmM/7f7A==", + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "requires": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" + "shebang-regex": "^3.0.0" } }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "shell-quote": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", + "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==", "dev": true }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" + }, "simple-concat": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.0.tgz", - "integrity": "sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "dev": true + }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", "dev": true }, "slash": { @@ -6598,9 +11377,9 @@ } }, "source-map-support": { - "version": "0.5.12", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz", - "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==", + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -6638,40 +11417,6 @@ "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", "dev": true }, - "spawn-wrap": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", - "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", - "dev": true, - "requires": { - "foreground-child": "^2.0.0", - "is-windows": "^1.0.2", - "make-dir": "^3.0.0", - "rimraf": "^3.0.0", - "signal-exit": "^3.0.2", - "which": "^2.0.1" - }, - "dependencies": { - "rimraf": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.0.tgz", - "integrity": "sha512-NDGVxTsjqfunkds7CqsOiEnxln4Bo7Nddl3XhS4pXg5OzwkLqJ971ZVAAnB+DDLnF76N+VnDEiBHaVV8I06SUg==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, "spdx-correct": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", @@ -6704,15 +11449,6 @@ "integrity": "sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA==", "dev": true }, - "split": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", - "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", - "dev": true, - "requires": { - "through": "2" - } - }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -6773,12 +11509,46 @@ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, "stack-trace": { "version": "0.0.10", "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", "dev": true }, + "stack-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.2.tgz", + "integrity": "sha512-0H7QK2ECz3fyZMzQ8rH0j2ykpfbnd20BFtfg/SqVC2+sCTtcw0aDTGB7dk+de4U4uUeuz6nOtJcrkFFLG1B0Rg==", + "dev": true, + "requires": { + "escape-string-regexp": "^2.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true + } + } + }, "static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", @@ -6800,6 +11570,12 @@ } } }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true + }, "stream-browserify": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", @@ -6810,15 +11586,6 @@ "readable-stream": "^2.0.2" } }, - "stream-combiner": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", - "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", - "dev": true, - "requires": { - "duplexer": "~0.1.1" - } - }, "stream-combiner2": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", @@ -6836,16 +11603,40 @@ "dev": true }, "stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.1.1.tgz", + "integrity": "sha512-S7OqaYu0EkFpgeGFb/NPOoPLxFko7TPqtEeFg5DXPB4v/KETHG0Ln6fRFrNezoelpaDKmycEmmZ81cC9DAwgYg==", "dev": true, "requires": { "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "xtend": "^4.0.2" + }, + "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 + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + } } }, "stream-shift": { @@ -6864,42 +11655,67 @@ "readable-stream": "^2.0.2" } }, + "string-length": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.1.tgz", + "integrity": "sha512-PKyXUd0LK0ePjSOnWn34V2uD6acUWev9uy0Ft05k0E8xRW+SKcA0F7eMr7h5xlzfn+4O3N+55rduYyet3Jk+jw==", + "dev": true, + "requires": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", "strip-ansi": "^3.0.0" } }, - "string.prototype.trimleft": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", - "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "string.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", "dev": true, "requires": { "define-properties": "^1.1.3", - "function-bind": "^1.1.1" + "es-abstract": "^1.17.5" } }, - "string.prototype.trimright": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", - "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "string.prototype.trimstart": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", "dev": true, "requires": { "define-properties": "^1.1.3", - "function-bind": "^1.1.1" + "es-abstract": "^1.17.5" } }, "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" } @@ -6908,7 +11724,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, "requires": { "ansi-regex": "^2.0.0" } @@ -6922,10 +11737,31 @@ "is-utf8": "^0.2.0" } }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "requires": { + "min-indent": "^1.0.0" + } + }, "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true }, "subarg": { @@ -6938,14 +11774,41 @@ } }, "supports-color": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", - "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { "has-flag": "^3.0.0" } }, + "supports-hyperlinks": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz", + "integrity": "sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA==", + "dev": true, + "requires": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "sver-compat": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", @@ -6956,6 +11819,12 @@ "es6-symbol": "^3.1.1" } }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, "syntax-error": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz", @@ -6965,6 +11834,47 @@ "acorn-node": "^1.2.0" } }, + "taffydb": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz", + "integrity": "sha1-fLy2S1oUG2ou/CxdLGe04VCyomg=", + "dev": true + }, + "tar": { + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", + "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + }, + "dependencies": { + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "optional": true + } + } + }, + "terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + } + }, "test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -6992,6 +11902,12 @@ } } }, + "throat": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", + "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", + "dev": true + }, "through": { "version": "2.3.8", "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -7018,6 +11934,25 @@ "xtend": "~4.0.0" } }, + "tidy-jsdoc": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/tidy-jsdoc/-/tidy-jsdoc-1.4.0.tgz", + "integrity": "sha512-NzLZHsWEp28NVkAr6GzTxPnZVXqjW2M6vvlewy9KzQBC7fTgf7K1lwp3WVfRMFwD+17c1RERPutQl9pL8XhPBQ==", + "dev": true, + "requires": { + "jsdoc": "^3.6.3", + "taffydb": "^2.7.3", + "util": "^0.10.3" + }, + "dependencies": { + "taffydb": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.7.3.tgz", + "integrity": "sha1-KtNxaWKUmPylvIQkMJbTzeDsOjQ=", + "dev": true + } + } + }, "time-stamp": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", @@ -7033,6 +11968,12 @@ "process": "~0.11.0" } }, + "tmpl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", + "dev": true + }, "to-absolute-glob": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", @@ -7043,12 +11984,6 @@ "is-negated-glob": "^1.0.0" } }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", - "dev": true - }, "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -7087,42 +12022,145 @@ "safe-regex": "^1.1.0" } }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "to-through": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", + "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=", + "dev": true, + "requires": { + "through2": "^2.0.3" + } + }, + "token-stream": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-0.0.1.tgz", + "integrity": "sha1-zu78cXp2xDFvEm0LnbqlXX598Bo=", + "dev": true + }, + "tough-cookie": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", + "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", + "dev": true, + "requires": { + "ip-regex": "^2.1.0", + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + } + } + }, + "tr46": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.0.2.tgz", + "integrity": "sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg==", "dev": true, "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "punycode": "^2.1.1" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + } } }, - "to-through": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", - "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=", + "ts-jest": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-26.3.0.tgz", + "integrity": "sha512-Jq2uKfx6bPd9+JDpZNMBJMdMQUC3sJ08acISj8NXlVgR2d5OqslEHOR2KHMgwymu8h50+lKIm0m0xj/ioYdW2Q==", "dev": true, "requires": { - "through2": "^2.0.3" + "@types/jest": "26.x", + "bs-logger": "0.x", + "buffer-from": "1.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "26.x", + "json5": "2.x", + "lodash.memoize": "4.x", + "make-error": "1.x", + "mkdirp": "1.x", + "semver": "7.x", + "yargs-parser": "18.x" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "dev": true + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } } }, + "ts-map": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ts-map/-/ts-map-1.0.3.tgz", + "integrity": "sha512-vDWbsl26LIcPGmDpoVzjEP6+hvHZkBkLW7JpvwbCv/5IYPJlsbzCVXY3wsCeAxAUeTclNOUZxnLdGh3VBD/J6w==", + "dev": true + }, "ts-node": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.3.0.tgz", - "integrity": "sha512-dyNS/RqyVTDcmNM4NIBAeDMpsAdaQ+ojdf0GOLqE6nwJOgzEkdRNzJywhDfwnuvB10oa6NLVG1rUJQCpRN7qoQ==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.0.0.tgz", + "integrity": "sha512-/TqB4SnererCDR/vb4S/QvSZvzQMJN8daAslg7MeaiHvD8rDZsSfXmNeNumyZZzMned72Xoq/isQljYSt8Ynfg==", "dev": true, "requires": { "arg": "^4.1.0", "diff": "^4.0.1", "make-error": "^1.1.1", - "source-map-support": "^0.5.6", - "yn": "^3.0.0" + "source-map-support": "^0.5.17", + "yn": "3.1.1" }, "dependencies": { "diff": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.1.tgz", - "integrity": "sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true } } @@ -7137,70 +12175,63 @@ "parse-json": "^2.2.0", "strip-bom": "^2.0.0", "strip-json-comments": "^2.0.0" + }, + "dependencies": { + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + } } }, "tsify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/tsify/-/tsify-4.0.1.tgz", - "integrity": "sha512-ClznEI+pmwY5wmD0J7HCSVERwkD+l71ch3Dqyod2JuQLEsFaiNDI+vPjaGadsuVFVvmzgoI7HghrBtWsSmCDHQ==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/tsify/-/tsify-5.0.2.tgz", + "integrity": "sha512-Pdo3ZO8CAgbQgNcFRBmfbgsPP+4TsD0itbSF5YgTnxKBXfg6WkQ79e4/bqBaq/7cEYa7vIOM1pHxnux8rJJnzg==", "dev": true, "requires": { "convert-source-map": "^1.1.0", "fs.realpath": "^1.0.0", "object-assign": "^4.1.0", - "semver": "^5.6.0", + "semver": "^6.1.0", "through2": "^2.0.0", "tsconfig": "^5.0.3" }, "dependencies": { "semver": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true } } }, "tslib": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", - "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.1.tgz", + "integrity": "sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==", "dev": true }, - "tslint": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.18.0.tgz", - "integrity": "sha512-Q3kXkuDEijQ37nXZZLKErssQVnwCV/+23gFEMROi8IlbaBG6tXqLPQJ5Wjcyt/yHPKBC+hD5SzuGaMora+ZS6w==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "builtin-modules": "^1.1.1", - "chalk": "^2.3.0", - "commander": "^2.12.1", - "diff": "^3.2.0", - "glob": "^7.1.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "resolve": "^1.3.2", - "semver": "^5.3.0", - "tslib": "^1.8.0", - "tsutils": "^2.29.0" - } + "tty-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", + "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==", + "dev": true }, - "tsutils": { - "version": "2.29.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", - "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "dev": true, "requires": { - "tslib": "^1.8.1" + "safe-buffer": "^5.0.1" } }, - "tty-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", - "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==", + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", "dev": true }, "type": { @@ -7209,6 +12240,21 @@ "integrity": "sha512-MAM5dBMJCJNKs9E7JXo4CXRAansRfG0nlJxW7Wf6GZzSOvH31zClSaHdIMWLehe/EGMBkqeC55rrkaOr5Oo7Nw==", "dev": true }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, "type-fest": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", @@ -7230,39 +12276,16 @@ "is-typedarray": "^1.0.0" } }, - "typedoc": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.17.0.tgz", - "integrity": "sha512-HviZ/SLDPAgJdYqaCor+7rmJnM80Ra2oI0Nj+L/sOIBvh9pY1aCzDtSg3p3n4cgqCmvGu6O90fvMQyjEvlqM+g==", - "dev": true, - "requires": { - "fs-extra": "^8.1.0", - "handlebars": "^4.7.2", - "highlight.js": "^9.17.1", - "lodash": "^4.17.15", - "marked": "^0.8.0", - "minimatch": "^3.0.0", - "progress": "^2.0.3", - "shelljs": "^0.8.3", - "typedoc-default-themes": "^0.8.0" - } - }, - "typedoc-default-themes": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/typedoc-default-themes/-/typedoc-default-themes-0.8.0.tgz", - "integrity": "sha512-0bzAjVEX6ClhE3jLRdU7vR8Fsfbt4ZcPa+gkqyAVgTlQ1fLo/7AkCbTP+hC5XAiByDfRfsAGqj9y6FNjJh0p4A==", - "dev": true, - "requires": { - "backbone": "^1.4.0", - "jquery": "^3.4.1", - "lunr": "^2.3.8", - "underscore": "^1.9.2" - } - }, "typescript": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.3.tgz", - "integrity": "sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.2.tgz", + "integrity": "sha512-e4ERvRV2wb+rRZ/IQeb3jm2VxBsirQLpQhdxplZ2MEzGvDkkMmPglecnNDfSUBivMjP93vRbngYYDQqQ/78bcQ==", + "dev": true + }, + "uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", "dev": true }, "uglify-js": { @@ -7283,6 +12306,13 @@ } } }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "dev": true, + "optional": true + }, "umd": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/umd/-/umd-3.0.3.tgz", @@ -7309,9 +12339,9 @@ } }, "underscore": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.2.tgz", - "integrity": "sha512-D39qtimx0c1fI3ya1Lnhk3E9nONswSKhnffBI0gME9C99fYOkNi04xs8K6pePLhvl1frbDemkaBQ5ikWllR2HQ==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.11.0.tgz", + "integrity": "sha512-xY96SsN3NA461qIRKZ/+qox37YXPtSBswMGfiNptr+wrt6ds4HaMw23TP612fEyGekRE6LNRiLYr/aqbHXNedw==", "dev": true }, "undertaker": { @@ -7359,12 +12389,6 @@ "through2-filter": "^3.0.0" } }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - }, "unset-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", @@ -7411,6 +12435,23 @@ "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==", "dev": true }, + "uri-js": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", + "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + } + } + }, "urix": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", @@ -7453,15 +12494,42 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "uuid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", - "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", "dev": true }, + "v8-to-istanbul": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-5.0.1.tgz", + "integrity": "sha512-mbDNjuDajqYe3TXFk5qxcQy8L1msXNE37WTlLoqqpBfRsimbNcrlhQlDPntmECEcUvdC+AQ8CyMMf6EUx1r74Q==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "dependencies": { + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + } + } + }, "v8flags": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.3.tgz", @@ -7487,6 +12555,17 @@ "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=", "dev": true }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, "vinyl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", @@ -7606,11 +12685,95 @@ } }, "vm-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.0.tgz", - "integrity": "sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", "dev": true }, + "void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", + "dev": true + }, + "vue-docgen-api": { + "version": "3.26.0", + "resolved": "https://registry.npmjs.org/vue-docgen-api/-/vue-docgen-api-3.26.0.tgz", + "integrity": "sha512-ujdg4i5ZI/wE46RZQMFzKnDGyhEuPCu+fMA86CAd9EIek/6+OqraSVBm5ZkLrbEd5f8xxdnqMU4yiSGHHeao/Q==", + "dev": true, + "requires": { + "@babel/parser": "^7.2.3", + "@babel/types": "^7.0.0", + "ast-types": "^0.12.2", + "hash-sum": "^1.0.2", + "lru-cache": "^4.1.5", + "pug": "^2.0.3", + "recast": "^0.17.3", + "ts-map": "^1.0.3", + "typescript": "^3.2.2", + "vue-template-compiler": "^2.0.0" + }, + "dependencies": { + "ast-types": { + "version": "0.12.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.12.4.tgz", + "integrity": "sha512-ky/YVYCbtVAS8TdMIaTiPFHwEpRB5z1hctepJplTr3UW5q8TDrpIMCILyk8pmLxGtn2KCtC/lSn7zOsaI7nzDw==", + "dev": true + }, + "typescript": { + "version": "3.9.7", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.7.tgz", + "integrity": "sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==", + "dev": true + } + } + }, + "vue-template-compiler": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.12.tgz", + "integrity": "sha512-OzzZ52zS41YUbkCBfdXShQTe69j1gQDZ9HIX8miuC9C3rBCk9wIRjLiZZLrmX9V+Ftq/YEyv1JaVr5Y/hNtByg==", + "dev": true, + "requires": { + "de-indent": "^1.0.2", + "he": "^1.1.0" + } + }, + "vue2-ace-editor": { + "version": "0.0.13", + "resolved": "https://registry.npmjs.org/vue2-ace-editor/-/vue2-ace-editor-0.0.13.tgz", + "integrity": "sha512-uQICyvJzYNix16xeYjNAINuNUQhPbqMR7UQsJeI+ycpEd2otsiNNU73jcZqHkpjuz0uaHDHnrpzQuI/RApsKXA==", + "dev": true, + "requires": { + "brace": "^0.11.0" + } + }, + "w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dev": true, + "requires": { + "browser-process-hrtime": "^1.0.0" + } + }, + "w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "dev": true, + "requires": { + "xml-name-validator": "^3.0.0" + } + }, + "walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "dev": true, + "requires": { + "makeerror": "1.0.x" + } + }, "watchify": { "version": "3.11.1", "resolved": "https://registry.npmjs.org/watchify/-/watchify-3.11.1.tgz", @@ -7626,6 +12789,38 @@ "xtend": "^4.0.0" } }, + "webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true + }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "requires": { + "iconv-lite": "0.4.24" + } + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "whatwg-url": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.2.2.tgz", + "integrity": "sha512-PcVnO6NiewhkmzV0qn7A+UZ9Xx4maNTI+O+TShmfE4pqjoCMwUMjkvoNhNHPTvgR7QH9Xt3R13iHuWy2sToFxQ==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^2.0.2", + "webidl-conversions": "^6.1.0" + } + }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", @@ -7645,20 +12840,47 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "dev": true, "requires": { "string-width": "^1.0.2 || 2" } }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true + }, + "with": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/with/-/with-5.1.1.tgz", + "integrity": "sha1-+k2qktrzLE6pTtRTyB8EaGtXXf4=", + "dev": true, + "requires": { + "acorn": "^3.1.0", + "acorn-globals": "^3.0.0" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true + }, + "workerpool": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.0.0.tgz", + "integrity": "sha512-fU2OcNA/GVAJLLyKUoHkAgIhKb0JoCpSjLC/G2vYKxUjVmQwGbRVeoPJ1a8U4pnVofz4AQV5Y/NEw8oKqxEBtA==", "dev": true }, "wrap-ansi": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "dev": true, "requires": { @@ -7669,13 +12891,12 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "write-file-atomic": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.1.tgz", - "integrity": "sha512-JPStrIyyVJ6oCSz/691fAjFtefZ6q+fP6tm+OS4Qw6o+TGQxNp1ziY2PgS+X/m0V8OWhZiO/m4xSj+Pr4RrZvw==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", "dev": true, "requires": { "imurmurhash": "^0.1.4", @@ -7693,6 +12914,24 @@ "async-limiter": "~1.0.0" } }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "xmlcreate": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.3.tgz", + "integrity": "sha512-HgS+X6zAztGa9zIK3Y3LXuJes33Lz9x+YyTxgrkIdabu2vqcGOWwdfCpf1hWLRrd553wd4QCDf6BBO6FfdsRiQ==", + "dev": true + }, "xtend": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", @@ -7705,6 +12944,12 @@ "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", "dev": true }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, "yargs": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", @@ -7736,14 +12981,16 @@ } }, "yargs-unparser": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", - "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.1.tgz", + "integrity": "sha512-qZV14lK9MWsGCmcr7u5oXGH0dbGqZAIxTDrWXZDo5zUr6b6iUmelNKO6x6R1dQT24AH3LgRxJpr8meWy2unolA==", "dev": true, "requires": { + "camelcase": "^5.3.1", + "decamelize": "^1.2.0", "flat": "^4.1.0", - "lodash": "^4.17.15", - "yargs": "^13.3.0" + "is-plain-obj": "^1.1.0", + "yargs": "^14.2.3" }, "dependencies": { "ansi-regex": { @@ -7790,6 +13037,40 @@ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, "require-main-filename": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", @@ -7840,12 +13121,13 @@ "dev": true }, "yargs": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", - "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz", + "integrity": "sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==", "dev": true, "requires": { "cliui": "^5.0.0", + "decamelize": "^1.2.0", "find-up": "^3.0.0", "get-caller-file": "^2.0.1", "require-directory": "^2.1.1", @@ -7854,13 +13136,13 @@ "string-width": "^3.0.0", "which-module": "^2.0.0", "y18n": "^4.0.0", - "yargs-parser": "^13.1.1" + "yargs-parser": "^15.0.1" } }, "yargs-parser": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", - "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.1.tgz", + "integrity": "sha512-0OAMV2mAZQrs3FkNpDQcBk1x5HXb8X4twADss4S0Iuk+2dGnLOE/fRHrsYm542GduMveyA77OF4wrNJuanRCWw==", "dev": true, "requires": { "camelcase": "^5.0.0", @@ -7870,18 +13152,19 @@ } }, "yauzl": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz", - "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", "dev": true, "requires": { - "fd-slicer": "~1.0.1" + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" } }, "yn": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.0.tgz", - "integrity": "sha512-kKfnnYkbTfrAdd0xICNFw7Atm8nKpLcLv9AZGEt+kczL/WQVai4e2V6ZN8U/O+iI6WrNuJjNNOyu4zfhl9D3Hg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", "dev": true } } diff --git a/package.json b/package.json index f779fd0d..8c1fb156 100644 --- a/package.json +++ b/package.json @@ -1,48 +1,20 @@ { "name": "vectorious", - "version": "6.0.0-beta.11", + "version": "6.0.0", "description": "A high performance linear algebra library.", "main": "built/index.js", "types": "built/index.d.ts", "scripts": { - "test:node": "nyc mocha -r ts-node/register 'src/**/*.spec.ts'", - "test:single": "mocha -r ts-node/register", - "test:browser": "mochify --plugin tsify 'src/**/*.spec.ts'", - "test": "npm run test:node && npm run test:browser", - "lint": "tslint -p . -c tslint.json 'src/*.ts'", + "test": "jest", "benchmark": "for file in $(ls src/**/*.bench.ts); do ts-node $file; done", - "docs": "gulp docs", - "build": "gulp clean && gulp build && gulp docs && tsc", + "docs": "jsdoc --configure jsdoc.json", + "build": "gulp clean && gulp build && tsc && npm run docs", "prepublishOnly": "npm run build" }, "browser": { "nblas": false, "nlapack": false }, - "nyc": { - "extension": [ - ".ts", - ".tsx" - ], - "exclude": [ - "gulpfile.js", - "**/*.d.ts", - "benchmarks/**", - "built/**", - "dist/**", - "docs/**", - "examples/**", - "coverage/**", - "src/**/*.spec.ts", - "src/**/*.bench.ts", - "src/bench.ts", - "src/types.ts" - ], - "reporter": [ - "lcov" - ], - "all": true - }, "repository": { "type": "git", "url": "https://github.com/mateogianolio/vectorious.git" @@ -67,30 +39,32 @@ }, "homepage": "https://github.com/mateogianolio/vectorious", "devDependencies": { - "@types/mocha": "^7.0.0", - "@types/node": "^14.0.0", + "@types/mocha": "^8.0.3", + "@types/node": "^14.10.1", "benchmark": "^2.1.4", - "browserify": "^16.3.0", + "better-docs": "^2.3.2", + "browserify": "^16.5.2", "del": "5.1.0", "gulp": "^4.0.2", "gulp-streamify": "^1.0.2", - "gulp-typedoc": "^2.2.2", "gulp-uglify": "^3.0.2", + "jest": "^26.4.2", + "jsdoc": "^3.6.5", "matplotnode": "^0.4.2", - "mocha": "^7.0.1", - "mochify": "^6.3.0", + "mocha": "^8.1.3", + "mochify": "^6.6.0", "nodemark": "^0.3.0", - "nyc": "^15.0.0", - "ts-node": "^8.3.0", - "tsify": "^4.0.1", - "tslint": "^5.18.0", - "typedoc": "^0.17.0", - "typescript": "^3.5.3", + "tidy-jsdoc": "^1.4.0", + "ts-jest": "^26.3.0", + "ts-node": "^9.0.0", + "tsify": "^5.0.2", + "typescript": "^4.0.2", "vinyl-source-stream": "^2.0.0" }, "optionalDependencies": { - "nblas": "^2.1.6", - "nlapack": "^2.0.2" + "nblas": "^2.1.9" }, - "dependencies": {} + "dependencies": { + "nlapack": "^2.0.4" + } } diff --git a/src/bench.ts b/src/bench.ts index 8c689d1e..60820889 100644 --- a/src/bench.ts +++ b/src/bench.ts @@ -2,12 +2,7 @@ const benchmark: any = require('nodemark'); const plt: any = require('matplotnode'); const { execSync } = require('child_process'); -export const bench: ( - group: string, - name: string, - setup: (n: number) => any[], - ...funcs: Array<(...args: any[]) => void> -) => typeof benchmark = ( +export const bench = ( group: string, name: string, setup: (n: number) => any[], @@ -15,7 +10,7 @@ export const bench: ( ): typeof benchmark => { execSync(`mkdir -p benchmarks/${group}`); const filename: string = `benchmarks/${group}/${name}.png`; - const xs: number[] = [4, 16, 64, 256, 1024]; + const xs: number[] = [1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072]; let ys: number[] = []; plt.title(name); @@ -29,7 +24,7 @@ export const bench: ( const result: typeof benchmark = benchmark( (): void => { func(...args); }, (): void => { args = setup(x); }, - 100 + 250 ); ys.push(result.milliseconds(3)); @@ -46,7 +41,6 @@ export const bench: ( plt.xlabel('n'); plt.ylabel('ms'); - plt.xlim(0, 1024); plt.grid(true); plt.legend(); diff --git a/src/blas.ts b/src/blas.ts new file mode 100644 index 00000000..16cd54d3 --- /dev/null +++ b/src/blas.ts @@ -0,0 +1,114 @@ +import { + TypedArray, + DType, +} from './types'; + +let nblas: any; +try { + nblas = require('nblas'); +} catch (err) {} + +export const NoTrans = nblas.NoTrans; +export const Trans = nblas.Trans; + +export function axpy(dtype: DType, n: number, alpha: number, x: TypedArray, inc_x: number, y: TypedArray, inc_y: number) { + if (x.length / inc_x !== n || y.length / inc_y !== n) { + throw new Error('lengths do not match'); + } + + switch (dtype) { + case 'float64': + return nblas.daxpy(n, alpha, x, inc_x, y, inc_y); + case 'float32': + return nblas.saxpy(n, alpha, x, inc_x, y, inc_y); + default: + throw new Error('wrong dtype'); + } +} + +export function dot(dtype: DType, n: number, x: TypedArray, inc_x: number, y: TypedArray, inc_y: number) { + if (x.length / inc_x !== n || y.length / inc_y !== n) { + throw new Error('lengths do not match'); + } + + switch (dtype) { + case 'float64': + return nblas.ddot(n, x, inc_x, y, inc_y); + case 'float32': + return nblas.sdot(n, x, inc_x, y, inc_y); + default: + throw new Error('wrong dtype'); + } +} + +export function iamax(dtype: DType, n: number, x: TypedArray, inc_x: number) { + if (x.length / inc_x !== n) { + throw new Error('lengths do not match'); + } + + switch (dtype) { + case 'float64': + return nblas.idamax(n, x, inc_x); + case 'float32': + return nblas.isamax(n, x, inc_x); + default: + throw new Error('wrong dtype'); + } +} + +export function gemm(dtype: DType, transx: number, transy: number, m: number, n: number, k: number, alpha: number, x: TypedArray, ldx: number, y: TypedArray, ldy: number, beta: number, z: TypedArray, ldz: number) { + const { length: l1 } = x; + const { length: l2 } = y; + const { length: l3 } = z; + + if ((transx === nblas.NoTrans && l1 !== ldx * m) || (transx === nblas.Trans && l1 !== ldx * k)) { + throw new Error('lengths do not match'); + } + + if ((transy === nblas.NoTrans && l2 !== ldy * k) || (transy === nblas.Trans && l2 !== ldy * n)) { + throw new Error('lengths do not match'); + } + + if (l3 !== ldz * m) { + throw new Error('lengths do not match'); + } + + switch (dtype) { + case 'float64': + return nblas.dgemm(transx, transy, m, n, k, alpha, x, ldx, y, ldy, beta, z, ldz); + case 'float32': + return nblas.sgemm(transx, transy, m, n, k, alpha, x, ldx, y, ldy, beta, z, ldz); + default: + throw new Error('wrong dtype'); + } +} + +export function nrm2(dtype: DType, n: number, x: TypedArray, inc_x: number) { + if (x.length / inc_x !== n) { + throw new Error('lengths do not match'); + } + + switch (dtype) { + case 'float64': + return nblas.dnrm2(n, x, inc_x); + case 'float32': + return nblas.snrm2(n, x, inc_x); + default: + throw new Error('wrong dtype'); + } +} + +export function scal(dtype: DType, n: number, alpha: number, x: TypedArray, inc_x: number) { + if (x.length / inc_x !== n) { + throw new Error('lengths do not match'); + } + + switch (dtype) { + case 'float64': + return nblas.dscal(n, alpha, x, inc_x); + case 'float32': + return nblas.sscal(n, alpha, x, inc_x); + default: + throw new Error('wrong dtype'); + } +} diff --git a/src/core/abs.bench.ts b/src/core/abs.bench.ts index e2bb4587..d56c4ce1 100644 --- a/src/core/abs.bench.ts +++ b/src/core/abs.bench.ts @@ -1,14 +1,15 @@ -import v = require('..'); +import { abs } from './abs'; +import { random } from './random'; import { bench } from '../bench'; bench( - 'v', + 'NDArray', 'abs', - (n: number): [v] => [v.random(n)], - (x: v): void => { + (n: number) => [random(n)], + (x): void => { x.abs(); }, - (x: v): void => { - v.abs(x); + (x): void => { + abs(x); } ); diff --git a/src/core/abs.spec.ts b/src/core/abs.spec.ts index 70b532ae..217c189a 100644 --- a/src/core/abs.spec.ts +++ b/src/core/abs.spec.ts @@ -1,19 +1,18 @@ -import { - deepStrictEqual, -} from 'assert'; - -import v = require('..'); +import { equals } from './equals'; +import { abs } from './abs'; +import { map } from './map'; +import { random } from './random'; describe('(v) abs', () => { it('should work as expected', () => { - const x: v = v.random(3); + const x = random(3).scale(-1); - deepStrictEqual(x.map((value: number) => Math.abs(value)), x.abs()); + equals(map(x, (value: number) => Math.abs(value)), x.abs()); }); it('should work as the static equivalent', () => { - const x: v = v.random(3); + const x = random(3, 3); - deepStrictEqual(x.map((value: number) => Math.abs(value)), v.abs(x)); + equals(map(x, (value: number) => Math.abs(value)), abs(x)); }); }); diff --git a/src/core/abs.ts b/src/core/abs.ts index 0efc3947..61e6baa4 100644 --- a/src/core/abs.ts +++ b/src/core/abs.ts @@ -1,13 +1,39 @@ import { NDArray } from './'; +import { array } from './array'; +import { NDIter } from '../iterator'; -NDArray.abs = (x: T | ArrayLike): T => NDArray.array(x).abs(); +const { abs: f } = Math; -NDArray.prototype.abs = function(this: T): T { - const { data: d1, length: l1 } = this; +/** + * @static + * @memberof module:Globals + * @function abs + * @description Returns the absolute value of each element of `x`. + * @param {NDArray} x + * @returns {NDArray} + * @example + * import { abs } from 'vectorious/core/abs'; + * + * abs([-1, -2, -3]) // => array([1, 2, 3]) + */ +export const abs = (x: NDArray | ArrayLike): NDArray => array(x).abs(); - let i: number; - for (i = 0; i < l1; i += 1) { - d1[i] = Math.abs(d1[i]); +/** + * @function abs + * @memberof NDArray.prototype + * @description Returns the absolute value of each element of current array. + * @returns {this} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([-1, -2, -3]).abs() // <=> array([1, 2, 3]) + */ +export default function (this: NDArray): NDArray { + const { data: d1 } = this; + const iter = new NDIter(this); + + for (const i of iter) { + d1[i!] = f(d1[i!]); } return this; diff --git a/src/core/acos.bench.ts b/src/core/acos.bench.ts index 5e162076..5557514e 100644 --- a/src/core/acos.bench.ts +++ b/src/core/acos.bench.ts @@ -1,14 +1,15 @@ -import v = require('..'); +import { acos } from './acos'; +import { random } from './random'; import { bench } from '../bench'; bench( - 'v', + 'NDArray', 'acos', - (n: number): [v] => [v.random(n)], - (x: v): void => { + (n: number) => [random(n)], + (x): void => { x.acos(); }, - (x: v): void => { - v.acos(x); + (x): void => { + acos(x); } ); diff --git a/src/core/acos.spec.ts b/src/core/acos.spec.ts index 2faa0bc2..cb55e7b7 100644 --- a/src/core/acos.spec.ts +++ b/src/core/acos.spec.ts @@ -1,19 +1,18 @@ -import { - deepStrictEqual, -} from 'assert'; - -import v = require('..'); +import { equals } from './equals'; +import { acos } from './acos'; +import { map } from './map'; +import { random } from './random'; describe('(v) acos', () => { it('should work as expected', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.map((value: number) => Math.acos(value)), x.acos()); + equals(map(x, (value: number) => Math.acos(value)), x.acos()); }); it('should work as the static equivalent', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.map((value: number) => Math.acos(value)), v.acos(x)); + equals(map(x, (value: number) => Math.acos(value)), acos(x)); }); }); diff --git a/src/core/acos.ts b/src/core/acos.ts index f7a45854..c015cdab 100644 --- a/src/core/acos.ts +++ b/src/core/acos.ts @@ -1,13 +1,39 @@ import { NDArray } from './'; +import { array } from './array'; +import { NDIter } from '../iterator'; -NDArray.acos = (x: T | ArrayLike): T => NDArray.array(x).acos(); +const { acos: f } = Math; -NDArray.prototype.acos = function(this: T): T { - const { data: d1, length: l1 } = this; +/** + * @static + * @memberof module:Globals + * @function acos + * @description Returns the arccosine of each element of `x`. + * @param {NDArray} x + * @returns {NDArray} + * @example + * import { acos } from 'vectorious/core/acos'; + * + * acos([-1, 0, 1]); // => array([3.141592653589793, 1.5707963267948966, 0]) + */ +export const acos = (x: NDArray | ArrayLike): NDArray => array(x).acos(); - let i: number; - for (i = 0; i < l1; i += 1) { - d1[i] = Math.acos(d1[i]); +/** + * @function acos + * @memberof NDArray.prototype + * @description Returns the arccosine of each element of current array. + * @returns {this} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([-1, 0, 1]).acos(); // <=> array([3.141592653589793, 1.5707963267948966, 0]) + */ +export default function (this: NDArray): NDArray { + const { data: d1 } = this; + const iter = new NDIter(this); + + for (const i of iter) { + d1[i!] = f(d1[i!]); } return this; diff --git a/src/core/acosh.bench.ts b/src/core/acosh.bench.ts index a3e2f843..030ccabe 100644 --- a/src/core/acosh.bench.ts +++ b/src/core/acosh.bench.ts @@ -1,14 +1,15 @@ -import v = require('..'); +import { acosh } from './acosh'; +import { random } from './random'; import { bench } from '../bench'; bench( - 'v', + 'NDArray', 'acosh', - (n: number): [v] => [v.random(n)], - (x: v): void => { + (n: number) => [random(n)], + (x): void => { x.acosh(); }, - (x: v): void => { - v.acosh(x); + (x): void => { + acosh(x); } ); diff --git a/src/core/acosh.spec.ts b/src/core/acosh.spec.ts index 32d2cd48..44225f88 100644 --- a/src/core/acosh.spec.ts +++ b/src/core/acosh.spec.ts @@ -1,19 +1,19 @@ -import { - deepStrictEqual, -} from 'assert'; - -import v = require('..'); +import { equals } from './equals'; +import { acosh } from './acosh'; +import { map } from './map'; +import { ones } from './ones'; +import { random } from './random'; describe('(v) acosh', () => { it('should work as expected', () => { - const x: v = v.random(3).add(v.ones(3)); + const x = random(3).add(ones(3)); - deepStrictEqual(x.map((value: number) => Math.acosh(value)), x.acosh()); + equals(map(x, (value: number) => Math.acosh(value)), x.acosh()); }); it('should work as the static equivalent', () => { - const x: v = v.random(3).add(v.ones(3)); + const x = random(3).add(ones(3)); - deepStrictEqual(x.map((value: number) => Math.acosh(value)), v.acosh(x)); + equals(map(x, (value: number) => Math.acosh(value)), acosh(x)); }); }); diff --git a/src/core/acosh.ts b/src/core/acosh.ts index 2213a63c..2db273d2 100644 --- a/src/core/acosh.ts +++ b/src/core/acosh.ts @@ -1,13 +1,40 @@ import { NDArray } from './'; +import { array } from './array'; +import { NDIter } from '../iterator'; -NDArray.acosh = (x: T | ArrayLike): T => NDArray.array(x).acosh(); +const { acosh: f } = Math; -NDArray.prototype.acosh = function(this: T): T { - const { data: d1, length: l1 } = this; +/** + * @static + * @memberof module:Globals + * @function acosh + * @description Returns the hyperbolic arccosine of each element of `x`. + * @param {NDArray} x + * @returns {NDArray} + * @example + * import { acosh } from 'vectorious/core/acosh'; + * + * acosh([1, 2, 3]); // => array([0, 1.316957950592041, 1.7627471685409546]) + */ +export const acosh = (x: NDArray | ArrayLike): NDArray => array(x).acosh(); - let i: number; - for (i = 0; i < l1; i += 1) { - d1[i] = Math.acosh(d1[i]); +/** + * @function acosh + * @memberof NDArray.prototype + * @description Returns the hyperbolic arccosine of each element of current array. + * @param {NDArray} x + * @returns {this} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([1, 2, 3]).acosh(); // <=> array([0, 1.316957950592041, 1.7627471685409546]) + */ +export default function(this: NDArray): NDArray { + const { data: d1 } = this; + const iter = new NDIter(this); + + for (const i of iter) { + d1[i!] = f(d1[i!]); } return this; diff --git a/src/core/add.bench.ts b/src/core/add.bench.ts index 71ec1e55..a7ded891 100644 --- a/src/core/add.bench.ts +++ b/src/core/add.bench.ts @@ -1,14 +1,15 @@ -import v = require('..'); +import { add } from './add'; +import { random } from './random'; import { bench } from '../bench'; bench( - 'v', + 'NDArray', 'add', - (n: number): [v, v] => [v.random(n), v.random(n)], - (x: v, y: v): void => { + (n: number) => [random(n), random(n)], + (x, y): void => { x.add(y); }, - (x: v, y: v): void => { - v.add(x, y); + (x, y): void => { + add(x, y); } ); diff --git a/src/core/add.spec.ts b/src/core/add.spec.ts index 39feee79..a8d6a08c 100644 --- a/src/core/add.spec.ts +++ b/src/core/add.spec.ts @@ -1,38 +1,47 @@ import { - deepStrictEqual, throws, } from 'assert'; -import v = require('..'); +import { equals } from './equals'; +import { add } from './add'; +import { array } from './array'; describe('(v) add', () => { it('should return empty vector if adding two empty vectors', () => { - const x: v = v.array(); - const y: v = v.array(); + const x = array(); + const y = array(); - deepStrictEqual(v.array(), x.add(y)); + equals(array(), x.add(y)); }); - it('should throw error if sizes do not match', () => { - const x: v = v.array([1]); - const y: v = v.array([1, 2]); + it('should throw error if shapes cannot be broadcast together', () => { + const x = array([1, 2, 3]); + const y = array([10, 11]); throws(() => { x.add(y); }, Error); }); it('should produce v([5, 7, 9]) from v([1, 2, 3]) and v([4, 5, 6])', () => { - const x: v = v.array([1, 2, 3]); - const y: v = v.array([4, 5, 6]); - const z: v = v.array([5, 7, 9]); + const x = array([1, 2, 3]); + const y = array([4, 5, 6]); + const z = array([5, 7, 9]); - deepStrictEqual(z, x.add(y)); + equals(z, x.add(y)); + }); + + it('should product v([11, 12, 13]) from v([1, 2, 3]) and v([10])', () => { + const x = array([1, 2, 3]); + const y = array([10]); + const z = array([11, 12, 13]); + + equals(z, x.add(y)) }); it('should work as the static equivalent', () => { - const x: v = v.array([1, 2, 3]); - const y: v = v.array([4, 5, 6]); - const z: v = v.array([5, 7, 9]); + const x = array([1, 2, 3]); + const y = array([4, 5, 6]); + const z = array([5, 7, 9]); - deepStrictEqual(z, v.add(x, y)); + equals(z, add(x, y)); }); }); diff --git a/src/core/add.ts b/src/core/add.ts index 343ea541..dcfb6dad 100644 --- a/src/core/add.ts +++ b/src/core/add.ts @@ -1,41 +1,50 @@ -import { get_type } from '../util'; - import { NDArray } from './'; - -let nblas: any; -try { - nblas = require('nblas'); -} catch (err) {} - -NDArray.add = (x: T | ArrayLike, y: T | ArrayLike, alpha: number = 1): T => - NDArray.array(x).add(NDArray.array(y), alpha); - -NDArray.prototype.add = function(this: T, x: NDArray, alpha: number = 1): T { - this.equilateral(x); - this.equidimensional(x); - - const { length: l1 } = this; +import { NDMultiIter } from '../iterator'; +import { array } from './array'; +import * as blas from '../blas'; + +/** + * @static + * @memberof module:Globals + * @function add + * @description + * Adds `y` multiplied by `alpha` to `x`. + * Accelerated with BLAS `?axpy`. + * @param {NDArray} x + * @param {NDArray} y + * @returns {NDArray} + * @example + * import { add } from 'vectorious/core/add'; + * + * add([1, 2, 3], [4, 5, 6]); // => array([5, 7, 9]) + */ +export const add = (x: NDArray | ArrayLike, y: NDArray | ArrayLike, alpha: number = 1): NDArray => + array(x).add(array(y), alpha); + +/** + * @function add + * @memberof NDArray.prototype + * @description + * Adds `x` multiplied by `alpha` to the current array. + * Accelerated with BLAS `?axpy`. + * @param {NDArray} x + * @returns {NDArray} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([1, 2, 3]).add([4, 5, 6]); // <=> array([5, 7, 9]) + */ +export default function (this: NDArray, x: NDArray | ArrayLike, alpha: number = 1): NDArray { + const { data: d1, length: l1, dtype } = this; + const { data: d2 } = array(x); try { - if (!['float32', 'float64'].includes(this.dtype)) { - this.dtype = 'float32'; - this.data = get_type(this.dtype).from(this.data); - } - - const { data: d1 } = this; - const { data: d2 } = x; - if (this.dtype === 'float64') { - nblas.daxpy(l1, alpha, d2, 1, d1, 1); - } else if (this.dtype === 'float32') { - nblas.saxpy(l1, alpha, d2, 1, d1, 1); - } + blas.axpy(dtype, l1, alpha, d2, 1, d1, 1); } catch (err) { - const { data: d1 } = this; - const { data: d2 } = x; + const iter = new NDMultiIter(this, x); - let i: number; - for (i = 0; i < l1; i += 1) { - d1[i] += alpha * d2[i]; + for (const [i, j] of iter) { + d1[i] += alpha * d2[j]; } } diff --git a/src/core/angle.bench.ts b/src/core/angle.bench.ts index 277f0aa1..b0cdf19f 100644 --- a/src/core/angle.bench.ts +++ b/src/core/angle.bench.ts @@ -1,14 +1,15 @@ -import v = require('..'); +import { angle } from './angle'; +import { random } from './random'; import { bench } from '../bench'; bench( - 'v', + 'NDArray', 'angle', - (n: number): [v, v] => [v.random(n), v.random(n)], - (x: v, y: v): void => { + (n: number) => [random(n), random(n)], + (x, y): void => { x.angle(y); }, - (x: v, y: v): void => { - v.angle(x, y); + (x, y): void => { + angle(x, y); } ); diff --git a/src/core/angle.spec.ts b/src/core/angle.spec.ts index 26e1c7c9..5294b530 100644 --- a/src/core/angle.spec.ts +++ b/src/core/angle.spec.ts @@ -2,20 +2,21 @@ import { strictEqual, } from 'assert'; -import v = require('..'); +import { angle } from './angle'; +import { array } from './array'; describe('(v) angle', () => { it('should work as expected', () => { - const x: v = v.array([1, 0]); - const y: v = v.array([0, 1]); + const x = array([1, 0]); + const y = array([0, 1]); strictEqual(Math.PI / 2, x.angle(y)); }); it('should work as the static equivalent', () => { - const x: v = v.array([1, 0]); - const y: v = v.array([0, 1]); + const x = array([1, 0]); + const y = array([0, 1]); - strictEqual(Math.PI / 2, v.angle(x, y)); + strictEqual(Math.PI / 2, angle(x, y)); }); }); diff --git a/src/core/angle.ts b/src/core/angle.ts index d439ddd7..d69a58a4 100644 --- a/src/core/angle.ts +++ b/src/core/angle.ts @@ -1,8 +1,35 @@ import { NDArray } from './'; +import { array } from './array'; -NDArray.angle = (x: T | ArrayLike, y: T | ArrayLike): number => - NDArray.array(x).angle(NDArray.array(y)); +const { acos: f } = Math; -NDArray.prototype.angle = function(this: T, x: T): number { - return Math.acos(this.dot(x) / this.norm() / x.norm()); +/** + * @static + * @memberof module:Globals + * @function angle + * @description Determines the angle between the `x` and `y` + * @param {NDArray} x + * @param {NDArray} y + * @returns {number} + * @example + * import { angle } from 'vectorious/core/angle'; + * + * angle([1, 2, 3], [4, 5, 6]); // => 0.22572622788897287 + */ +export const angle = (x: NDArray | ArrayLike, y: NDArray | ArrayLike): number => + array(x).angle(array(y)); + +/** + * @function angle + * @memberof NDArray.prototype + * @description Determines the angle between the current vector and `x`. + * @param {NDArray} x + * @returns {number} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([1, 2, 3]).angle([4, 5, 6]); // <=> 0.22572622788897287 + */ +export default function(this: NDArray, x: NDArray | ArrayLike): number { + return f(this.dot(array(x)) / this.norm() / array(x).norm()); }; diff --git a/src/core/array.bench.ts b/src/core/array.bench.ts index 096a51a5..ef8cd1f1 100644 --- a/src/core/array.bench.ts +++ b/src/core/array.bench.ts @@ -1,10 +1,11 @@ -import v = require('..'); +import { array } from './array'; import { bench } from '../bench'; + bench( - 'v', + 'NDArray', 'array', (n: number): [number] => [n], (n: number): void => { - v.array(new Array(n)); + array(new Array(n)); } ); diff --git a/src/core/array.spec.ts b/src/core/array.spec.ts index e9f8be89..4582477d 100644 --- a/src/core/array.spec.ts +++ b/src/core/array.spec.ts @@ -1,19 +1,16 @@ -import { - deepStrictEqual, -} from 'assert'; - -import v = require('..'); +import { equals } from './equals'; +import { array } from './array'; describe('(v) array', () => { it('should work as expected', () => { - const x: v = v.array([0, 0, 0]); + const x = array([0, 0, 0]); - deepStrictEqual(x, v.array([0, 0, 0])); + equals(x, array([0, 0, 0])); }); it('should work as expected in two dimensions', () => { - const x: v = v.array([0, 0]); + const x = array([0, 0]); - deepStrictEqual(x, v.array([0, 0])); + equals(x, array([0, 0])); }); }); diff --git a/src/core/array.ts b/src/core/array.ts index 3a5d452b..bd9ce9f3 100644 --- a/src/core/array.ts +++ b/src/core/array.ts @@ -1,5 +1,15 @@ import { NDArray } from './'; -NDArray.array = function(this: new(...args: any[]) => T, ...args: any[]): T { - return new this(...args); -}; +/** + * @static + * @memberof module:Globals + * @function array + * @description `array(...args)` is an alias for `new v(...args)` + * @param {} ...args + * @returns {NDArray} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([1, 2, 3]); // => array([1, 2, 3]) + */ +export const array = (...args: any[]): NDArray => new NDArray(...args); diff --git a/src/core/asin.bench.ts b/src/core/asin.bench.ts index 797d5b0c..24acd275 100644 --- a/src/core/asin.bench.ts +++ b/src/core/asin.bench.ts @@ -1,14 +1,15 @@ -import v = require('..'); +import { asin } from './asin'; +import { random } from './random'; import { bench } from '../bench'; bench( - 'v', + 'NDArray', 'asin', - (n: number): [v] => [v.random(n)], - (x: v): void => { + (n: number) => [random(n)], + (x): void => { x.asin(); }, - (x: v): void => { - v.asin(x); + (x): void => { + asin(x); } ); diff --git a/src/core/asin.spec.ts b/src/core/asin.spec.ts index 6b61b535..77d23824 100644 --- a/src/core/asin.spec.ts +++ b/src/core/asin.spec.ts @@ -1,19 +1,18 @@ -import { - deepStrictEqual, -} from 'assert'; - -import v = require('..'); +import { equals } from './equals'; +import { asin } from './asin'; +import { map } from './map'; +import { random } from './random'; describe('(v) asin', () => { it('should work as expected', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.map((value: number) => Math.asin(value)), x.asin()); + equals(map(x, (value: number) => Math.asin(value)), x.asin()); }); it('should work as the static equivalent', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.map((value: number) => Math.asin(value)), v.asin(x)); + equals(map(x, (value: number) => Math.asin(value)), asin(x)); }); }); diff --git a/src/core/asin.ts b/src/core/asin.ts index 5a1226f8..01c36daf 100644 --- a/src/core/asin.ts +++ b/src/core/asin.ts @@ -1,13 +1,39 @@ import { NDArray } from './'; +import { array } from './array'; +import { NDIter } from '../iterator'; -NDArray.asin = (x: T | ArrayLike): T => NDArray.array(x).asin(); +const { asin: f } = Math; -NDArray.prototype.asin = function(this: T): T { - const { data: d1, length: l1 } = this; +/** + * @static + * @memberof module:Globals + * @function asin + * @description Returns the arcsine of each element of `x`. + * @param {NDArray} x + * @returns {NDArray} + * @example + * import { asin } from 'vectorious/core/asin'; + * + * asin([-1, 0, 1]) // => array([-1.5707963705062866, 0, 1.5707963705062866]) + */ +export const asin = (x: NDArray | ArrayLike): NDArray => array(x).asin(); - let i: number; - for (i = 0; i < l1; i += 1) { - d1[i] = Math.asin(d1[i]); +/** + * @function asin + * @memberof NDArray.prototype + * @description Returns the arcsine of each element of current array. + * @returns {this} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([-1, 0, 1]).asin() // <=> array([-1.5707963705062866, 0, 1.5707963705062866]) + */ +export default function(this: NDArray): NDArray { + const { data: d1 } = this; + const iter = new NDIter(this); + + for (const i of iter) { + d1[i!] = f(d1[i!]); } return this; diff --git a/src/core/asinh.bench.ts b/src/core/asinh.bench.ts index 33125c8e..03c35ca8 100644 --- a/src/core/asinh.bench.ts +++ b/src/core/asinh.bench.ts @@ -1,14 +1,15 @@ -import v = require('..'); +import { asinh } from './asinh'; +import { random } from './random'; import { bench } from '../bench'; bench( - 'v', + 'NDArray', 'asinh', - (n: number): [v] => [v.random(n)], - (x: v): void => { + (n: number) => [random(n)], + (x): void => { x.asinh(); }, - (x: v): void => { - v.asinh(x); + (x): void => { + asinh(x); } ); diff --git a/src/core/asinh.spec.ts b/src/core/asinh.spec.ts index 5177346e..c7fe6556 100644 --- a/src/core/asinh.spec.ts +++ b/src/core/asinh.spec.ts @@ -1,19 +1,18 @@ -import { - deepStrictEqual, -} from 'assert'; - -import v = require('..'); +import { equals } from './equals'; +import { asinh } from './asinh'; +import { map } from './map'; +import { random } from './random'; describe('(v) asinh', () => { it('should work as expected', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.map((value: number) => Math.asinh(value)), x.asinh()); + equals(map(x, (value: number) => Math.asinh(value)), x.asinh()); }); it('should work as the static equivalent', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.map((value: number) => Math.asinh(value)), v.asinh(x)); + equals(map(x, (value: number) => Math.asinh(value)), asinh(x)); }); }); diff --git a/src/core/asinh.ts b/src/core/asinh.ts index b86a32c0..40c89d4a 100644 --- a/src/core/asinh.ts +++ b/src/core/asinh.ts @@ -1,13 +1,39 @@ import { NDArray } from './'; +import { array } from './array'; +import { NDIter } from '../iterator'; -NDArray.asinh = (x: T | ArrayLike): T => NDArray.array(x).asinh(); +const { asinh: f } = Math; -NDArray.prototype.asinh = function(this: T): T { - const { data: d1, length: l1 } = this; +/** + * @static + * @memberof module:Globals + * @function asinh + * @description Returns the hyperbolic arcsine of each element of `x`. + * @param {NDArray} x + * @returns {NDArray} + * @example + * import { asinh } from 'vectorious/core/asinh'; + * + * asinh([0, 1, 2]) // => array([0, 0.8813735842704773, 1.4436354637145996]) + */ +export const asinh = (x: NDArray | ArrayLike): NDArray => array(x).asinh(); - let i: number; - for (i = 0; i < l1; i += 1) { - d1[i] = Math.asinh(d1[i]); +/** + * @function asinh + * @memberof NDArray.prototype + * @description Returns the hyperbolic arcsine of each element of current array. + * @returns {this} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([0, 1, 2]).asinh() // <=> array([0, 0.8813735842704773, 1.4436354637145996]) + */ +export default function(this: NDArray): NDArray { + const { data: d1 } = this; + const iter = new NDIter(this); + + for (const i of iter) { + d1[i!] = f(d1[i!]); } return this; diff --git a/src/core/atan.bench.ts b/src/core/atan.bench.ts index 3d3a631b..6d64565a 100644 --- a/src/core/atan.bench.ts +++ b/src/core/atan.bench.ts @@ -1,14 +1,15 @@ -import v = require('..'); +import { atan } from './atan'; +import { random } from './random'; import { bench } from '../bench'; bench( - 'v', + 'NDArray', 'atan', - (n: number): [v] => [v.random(n)], - (x: v): void => { + (n: number) => [random(n)], + (x): void => { x.atan(); }, - (x: v): void => { - v.atan(x); + (x): void => { + atan(x); } ); diff --git a/src/core/atan.spec.ts b/src/core/atan.spec.ts index bc83e5cb..85a4aa19 100644 --- a/src/core/atan.spec.ts +++ b/src/core/atan.spec.ts @@ -1,19 +1,18 @@ -import { - deepStrictEqual, -} from 'assert'; - -import v = require('..'); +import { equals } from './equals'; +import { atan } from './atan'; +import { map } from './map'; +import { random } from './random'; describe('(v) atan', () => { it('should work as expected', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.map((value: number) => Math.atan(value)), x.atan()); + equals(map(x, (value: number) => Math.atan(value)), x.atan()); }); it('should work as the static equivalent', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.map((value: number) => Math.atan(value)), v.atan(x)); + equals(map(x, (value: number) => Math.atan(value)), atan(x)); }); }); diff --git a/src/core/atan.ts b/src/core/atan.ts index 15e2d465..af338a09 100644 --- a/src/core/atan.ts +++ b/src/core/atan.ts @@ -1,13 +1,39 @@ import { NDArray } from './'; +import { array } from './array'; +import { NDIter } from '../iterator'; -NDArray.atan = (x: T | ArrayLike): T => NDArray.array(x).atan(); +const { atan: f } = Math; -NDArray.prototype.atan = function(this: T): T { - const { data: d1, length: l1 } = this; +/** + * @static + * @memberof module:Globals + * @function atan + * @description Returns the arctangent of each element of `x`. + * @param {NDArray} x + * @returns {NDArray} + * @example + * import { atan } from 'vectorious/core/atan'; + * + * atan([1, 2, 3]); // => array([0.7853981852531433, 1.1071487665176392, 1.249045729637146]) + */ +export const atan = (x: NDArray | ArrayLike): NDArray => array(x).atan(); - let i: number; - for (i = 0; i < l1; i += 1) { - d1[i] = Math.atan(d1[i]); +/** + * @function atan + * @memberof NDArray.prototype + * @description Returns the arctangent of each element of current array. + * @returns {this} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([1, 2, 3]).atan() // <=> array([0.7853981852531433, 1.1071487665176392, 1.249045729637146]) + */ +export default function(this: NDArray): NDArray { + const { data: d1 } = this; + const iter = new NDIter(this); + + for (const i of iter) { + d1[i!] = f(d1[i!]); } return this; diff --git a/src/core/atanh.bench.ts b/src/core/atanh.bench.ts index c00d9f35..57941a6b 100644 --- a/src/core/atanh.bench.ts +++ b/src/core/atanh.bench.ts @@ -1,14 +1,15 @@ -import v = require('..'); +import { atanh } from './atanh'; +import { random } from './random'; import { bench } from '../bench'; bench( - 'v', + 'NDArray', 'atanh', - (n: number): [v] => [v.random(n)], - (x: v): void => { + (n: number) => [random(n)], + (x): void => { x.atanh(); }, - (x: v): void => { - v.atanh(x); + (x): void => { + atanh(x); } ); diff --git a/src/core/atanh.spec.ts b/src/core/atanh.spec.ts index d7c0ce7c..7c9d3439 100644 --- a/src/core/atanh.spec.ts +++ b/src/core/atanh.spec.ts @@ -1,19 +1,18 @@ -import { - deepStrictEqual, -} from 'assert'; - -import v = require('..'); +import { equals } from './equals'; +import { atanh } from './atanh'; +import { map } from './map'; +import { random } from './random'; describe('(v) atanh', () => { it('should work as expected', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.map((value: number) => Math.atanh(value)), x.atanh()); + equals(map(x, (value: number) => Math.atanh(value)), x.atanh()); }); it('should work as the static equivalent', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.map((value: number) => Math.atanh(value)), v.atanh(x)); + equals(map(x, (value: number) => Math.atanh(value)), atanh(x)); }); }); diff --git a/src/core/atanh.ts b/src/core/atanh.ts index d3f53410..a5206074 100644 --- a/src/core/atanh.ts +++ b/src/core/atanh.ts @@ -1,13 +1,39 @@ import { NDArray } from './'; +import { array } from './array'; +import { NDIter } from '../iterator'; -NDArray.atanh = (x: T | ArrayLike): T => NDArray.array(x).atanh(); +const { atanh: f } = Math; -NDArray.prototype.atanh = function(): NDArray { - const { data: d1, length: l1 } = this; +/** + * @static + * @memberof module:Globals + * @function atanh + * @description Returns the hyperbolic arctangent of each element of `x`. + * @param {NDArray} x + * @returns {NDArray} + * @example + * import { atanh } from 'vectorious/core/atanh'; + * + * atanh([0, -0.5]); // => array([0, -0.5493061542510986]) + */ +export const atanh = (x: NDArray | ArrayLike): NDArray => array(x).atanh(); - let i: number; - for (i = 0; i < l1; i += 1) { - d1[i] = Math.atanh(d1[i]); +/** + * @function atanh + * @memberof NDArray.prototype + * @description Returns the hyperbolic arctangent of each element of current array. + * @returns {this} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([0, -0.5]).atanh(); // <=> array([0, -0.5493061542510986]) + */ +export default function(this: NDArray): NDArray { + const { data: d1 } = this; + const iter = new NDIter(this); + + for (const i of iter) { + d1[i!] = f(d1[i!]); } return this; diff --git a/src/core/augment.bench.ts b/src/core/augment.bench.ts index 1160d8aa..2e2a0a6b 100644 --- a/src/core/augment.bench.ts +++ b/src/core/augment.bench.ts @@ -1,16 +1,17 @@ -import v = require('..'); +import { augment } from './augment'; +import { random } from './random'; import { bench } from '../bench'; const { floor, sqrt } = Math; bench( - 'v', + 'NDArray', 'augment', - (n: number): [v, v] => [v.random(floor(sqrt(n)), floor(sqrt(n))), v.random(floor(sqrt(n)), floor(sqrt(n)))], - (x: v, y: v): void => { + (n: number) => [random(floor(sqrt(n)), floor(sqrt(n))), random(floor(sqrt(n)), floor(sqrt(n)))], + (x, y): void => { x.augment(y); }, - (x: v, y: v): void => { - v.augment(x, y); + (x, y): void => { + augment(x, y); } ); diff --git a/src/core/augment.spec.ts b/src/core/augment.spec.ts index 18eb30e9..15f54a58 100644 --- a/src/core/augment.spec.ts +++ b/src/core/augment.spec.ts @@ -1,35 +1,36 @@ import { - deepStrictEqual, throws, } from 'assert'; -import v = require('..'); +import { equals } from './equals'; +import { augment } from './augment'; +import { array } from './array'; describe('(v) augment', () => { it('should return current matrix when combined with empty matrix', () => { - const x: v = v.array([[1, 2], [3, 4]]); + const x = array([[1, 2], [3, 4]]); - deepStrictEqual(x, x.augment(v.array())); + equals(x, x.augment(array())); }); it('should work as expected', () => { - const x: v = v.array([[1, 2], [3, 4]]); - const y: v = v.array([[5, 6], [7, 8]]); - const z: v = v.array([[1, 2, 5, 6], [3, 4, 7, 8]]); + const x = array([[1, 2], [3, 4]]); + const y = array([[5, 6], [7, 8]]); + const z = array([[1, 2, 5, 6], [3, 4, 7, 8]]); - deepStrictEqual(z, x.augment(y)); + equals(z, x.augment(y)); }); it('should throw error when rows do not match', () => { - const x: v = v.array([[1, 2], [3, 4]]); + const x = array([[1, 2], [3, 4]]); - throws(() => { x.augment(v.array([[1]])); }, Error); + throws(() => { x.augment(array([[1]])); }, Error); }); it('should work as the static equivalent', () => { - const x: v = v.array([[1, 1, 1]]); - const y: v = v.array([[1, 2, 3]]); + const x = array([[1, 1, 1]]); + const y = array([[1, 2, 3]]); - deepStrictEqual(x.copy().augment(y), v.augment(x, y)); + equals(x.copy().augment(y), augment(x, y)); }); }); diff --git a/src/core/augment.ts b/src/core/augment.ts index 0055e6a9..fc1679c6 100644 --- a/src/core/augment.ts +++ b/src/core/augment.ts @@ -1,13 +1,39 @@ import { NDArray } from './'; +import { array } from './array'; +import { zeros } from './zeros'; -NDArray.augment = (x: T | ArrayLike, y: T | ArrayLike): T => - NDArray.array(x).augment(NDArray.array(y)); +/** + * @static + * @memberof module:Globals + * @function augment + * @description Augments `x` and `y`. + * @param {NDArray} x + * @param {NDArray} y + * @returns {NDArray} + * @example + * import { augment } from 'vectorious/core/augment'; + * + * augment([[1, 2], [3, 4]], [[1], [2]]); // => array([[1, 2, 1], [3, 4, 2]]) + */ +export const augment = (x: NDArray | ArrayLike, y: NDArray | ArrayLike): NDArray => + array(x).augment(array(y)); -NDArray.prototype.augment = function(this: T, x: T): T { +/** + * @function augment + * @memberof NDArray.prototype + * @description Augments `x` with current matrix. + * @param {NDArray} x + * @returns {this} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([[1, 2], [3, 4]]).augment(array([[1], [2]])); // <=> array([[1, 2, 1], [3, 4, 2]]) + */ +export default function(this: NDArray, x: NDArray | ArrayLike): NDArray { const [r1, c1] = this.shape; - const [r2, c2] = x.shape; + const [r2, c2] = array(x).shape; const { data: d1 } = this; - const { data: d2 } = x; + const { data: d2 } = array(x); if (r2 === 0 || c2 === 0) { return this; @@ -17,7 +43,7 @@ NDArray.prototype.augment = function(this: T, x: T): T { throw new Error('rows do not match'); } - const y: T = NDArray.zeros(r1, c1 + c2); + const y = zeros(r1, c1 + c2); const { data: d3 } = y; let i: number; diff --git a/src/core/binOp.bench.ts b/src/core/binOp.bench.ts index bd1f4f03..9729bc6d 100644 --- a/src/core/binOp.bench.ts +++ b/src/core/binOp.bench.ts @@ -1,15 +1,15 @@ -import v = require('..'); +import { binOp } from './binOp'; +import { random } from './random'; import { bench } from '../bench'; bench( - 'v', + 'NDArray', 'binOp', - (n: number): [v, v, (a: number, b: number) => number] => - [v.random(n), v.random(n), (a: number, b: number): number => a + b], - (x: v, y: v, op: (a: number, b: number) => number): void => { + (n: number) => [random(n), random(n), (a: number, b: number): number => a + b], + (x, y, op: (a: number, b: number) => number): void => { x.binOp(y, op); }, - (x: v, y: v, op: (a: number, b: number) => number): void => { - v.binOp(x, y, op); + (x, y, op: (a: number, b: number) => number): void => { + binOp(x, y, op); } ); diff --git a/src/core/binOp.spec.ts b/src/core/binOp.spec.ts index 219ca149..05edc268 100644 --- a/src/core/binOp.spec.ts +++ b/src/core/binOp.spec.ts @@ -1,33 +1,37 @@ import { - deepStrictEqual, throws, } from 'assert'; -import v = require('..'); +import { equals } from './equals'; +import { binOp } from './binOp'; +import { array } from './array'; describe('(v) binOp', () => { it('should work as expected', () => { - const x: v = v.array([1, 1, 1]); - const y: v = v.array([1, 2, 3]); - const z: v = v.array([2, 3, 4]); + const x = array([1, 1, 1]); + const y = array([1, 2, 3]); + const z = array([2, 3, 4]); const sum: (a: number, b: number) => number = (a: number, b: number): number => a + b; - deepStrictEqual(x.binOp(y, sum), z); + equals(x.binOp(y, sum), z); }); it('should throw error when sizes do not match', () => { - const x: v = v.array([1, 1, 1]); - const y: v = v.array([1, 2, 3, 4]); + const x = array([1, 1, 1]); + const y = array([1, 2, 3, 4]); const sum: (a: number, b: number) => number = (a: number, b: number): number => a + b; throws(() => { x.binOp(y, sum); }, Error); }); - it('should work as the static equivalent of a.binOp(b, (a, b) => a + b)', () => { - const x: v = v.array([1, 1, 1]); - const y: v = v.array([1, 2, 3]); - const sum: (a: number, b: number) => number = (a: number, b: number): number => a + b; + it( + 'should work as the static equivalent of a.binOp(b, (a, b) => a + b)', + () => { + const x = array([1, 1, 1]); + const y = array([1, 2, 3]); + const sum: (a: number, b: number) => number = (a: number, b: number): number => a + b; - deepStrictEqual(x.copy().binOp(y, sum), v.binOp(x, y, sum)); - }); + equals(x.copy().binOp(y, sum), binOp(x, y, sum)); + } + ); }); diff --git a/src/core/binOp.ts b/src/core/binOp.ts index 429e07f9..17eb15c9 100644 --- a/src/core/binOp.ts +++ b/src/core/binOp.ts @@ -1,33 +1,57 @@ + import { NDArray } from './'; +import { NDMultiIter } from '../iterator'; +import { array } from './array'; -NDArray.binOp = ( - x: T | ArrayLike, - y: T | ArrayLike, +/** + * @static + * @memberof module:Globals + * @function binOp + * @description Perform binary operation `f` on `y` in `x`. + * @param {NDArray} x + * @param {NDArray} y + * @returns {NDArray} + * @example + * import { binOp } from 'vectorious/core/binOp'; + * + * binOp([1, 2, 3], [4, 5, 6], (a, b) => a + b); // => array([[5, 7, 9]) + */ +export const binOp = ( + x: NDArray | ArrayLike, + y: NDArray | ArrayLike, f: ( a: number, b: number, index: number ) => number -): T => NDArray.array(x).binOp(NDArray.array(y), f); +): NDArray => array(x).binOp(array(y), f); -NDArray.prototype.binOp = function( - this: T, - x: T, +/** + * @function binOp + * @memberof NDArray.prototype + * @description Perform binary operation `f` on `x` in the current array. + * @param {NDArray} x + * @returns {this} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([1, 2, 3]).binOp([4, 5, 6], (a, b) => a + b); // => array([[5, 7, 9]) + */ +export default function( + this: NDArray, + x: NDArray | ArrayLike, f: ( a: number, b: number, index: number ) => number -): T { - this.equilateral(x); - this.equidimensional(x); - - const { data: d1, length: l1 } = this; - const { data: d2 } = x; +): NDArray { + const { data: d1 } = this; + const { data: d2 } = array(x); - let i: number; - for (i = 0; i < l1; i += 1) { - d1[i] = f(d1[i], d2[i], i); + const iter = new NDMultiIter(this, x); + for (const [i, j] of iter) { + d1[i] = f(d1[i], d2[j], i); } return this; diff --git a/src/core/cbrt.bench.ts b/src/core/cbrt.bench.ts index 3639a5bd..a00bc735 100644 --- a/src/core/cbrt.bench.ts +++ b/src/core/cbrt.bench.ts @@ -1,14 +1,15 @@ -import v = require('..'); +import { cbrt } from './cbrt'; +import { random } from './random'; import { bench } from '../bench'; bench( - 'v', + 'NDArray', 'cbrt', - (n: number): [v] => [v.random(n)], - (x: v): void => { + (n: number) => [random(n)], + (x): void => { x.cbrt(); }, - (x: v): void => { - v.cbrt(x); + (x): void => { + cbrt(x); } ); diff --git a/src/core/cbrt.spec.ts b/src/core/cbrt.spec.ts index 3a61bcab..623188dd 100644 --- a/src/core/cbrt.spec.ts +++ b/src/core/cbrt.spec.ts @@ -1,19 +1,18 @@ -import { - deepStrictEqual, -} from 'assert'; - -import v = require('..'); +import { equals } from './equals'; +import { cbrt } from './cbrt'; +import { map } from './map'; +import { random } from './random'; describe('(v) cbrt', () => { it('should work as expected', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.map((value: number) => Math.cbrt(value)), x.cbrt()); + equals(map(x, (value: number) => Math.cbrt(value)), x.cbrt()); }); it('should work as the static equivalent', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.map((value: number) => Math.cbrt(value)), v.cbrt(x)); + equals(map(x, (value: number) => Math.cbrt(value)), cbrt(x)); }); }); diff --git a/src/core/cbrt.ts b/src/core/cbrt.ts index 665a676a..b9fbe24d 100644 --- a/src/core/cbrt.ts +++ b/src/core/cbrt.ts @@ -1,13 +1,39 @@ import { NDArray } from './'; +import { array } from './array'; +import { NDIter } from '../iterator'; -NDArray.cbrt = (x: T | ArrayLike): T => NDArray.array(x).cbrt(); +const { cbrt: f } = Math; -NDArray.prototype.cbrt = function(this: T): T { - const { data: d1, length: l1 } = this; +/** + * @static + * @memberof module:Globals + * @function cbrt + * @description Returns the cube root of each element of `x`. + * @param {NDArray} x + * @returns {NDArray} + * @example + * import { cbrt } from 'vectorious/core/cbrt'; + * + * cbrt([1, 8, 27]); // => array([1, 2, 3]) + */ +export const cbrt = (x: NDArray | ArrayLike): NDArray => array(x).cbrt(); - let i: number; - for (i = 0; i < l1; i += 1) { - d1[i] = Math.cbrt(d1[i]); +/** + * @function cbrt + * @memberof NDArray.prototype + * @description Returns the cube root of each element of current array. + * @returns {this} + * @example + * import { cbrt } from 'vectorious/core/cbrt'; + * + * cbrt([1, 8, 27]); // => array([1, 2, 3]) + */ +export default function(this: NDArray): NDArray { + const { data: d1 } = this; + const iter = new NDIter(this); + + for (const i of iter) { + d1[i!] = f(d1[i!]); } return this; diff --git a/src/core/ceil.bench.ts b/src/core/ceil.bench.ts index c7809448..005bb908 100644 --- a/src/core/ceil.bench.ts +++ b/src/core/ceil.bench.ts @@ -1,14 +1,15 @@ -import v = require('..'); +import { ceil } from './ceil'; +import { random } from './random'; import { bench } from '../bench'; bench( - 'v', + 'NDArray', 'ceil', - (n: number): [v] => [v.random(n)], - (x: v): void => { + (n: number) => [random(n)], + (x): void => { x.ceil(); }, - (x: v): void => { - v.ceil(x); + (x): void => { + ceil(x); } ); diff --git a/src/core/ceil.spec.ts b/src/core/ceil.spec.ts index ae04c6d4..0bc42e0c 100644 --- a/src/core/ceil.spec.ts +++ b/src/core/ceil.spec.ts @@ -1,19 +1,18 @@ -import { - deepStrictEqual, -} from 'assert'; - -import v = require('..'); +import { equals } from './equals'; +import { ceil } from './ceil'; +import { map } from './map'; +import { random } from './random'; describe('(v) ceil', () => { it('should work as expected', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.map((value: number) => Math.ceil(value)), x.ceil()); + equals(map(x, (value: number) => Math.ceil(value)), x.ceil()); }); it('should work as the static equivalent', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.map((value: number) => Math.ceil(value)), v.ceil(x)); + equals(map(x, (value: number) => Math.ceil(value)), ceil(x)); }); }); diff --git a/src/core/ceil.ts b/src/core/ceil.ts index 0a4e42fd..f2a7a0de 100644 --- a/src/core/ceil.ts +++ b/src/core/ceil.ts @@ -1,13 +1,39 @@ import { NDArray } from './'; +import { array } from './array'; +import { NDIter } from '../iterator'; -NDArray.ceil = (x: T | ArrayLike): T => NDArray.array(x).ceil(); +const { ceil: f } = Math; -NDArray.prototype.ceil = function(this: T): T { - const { data: d1, length: l1 } = this; +/** + * @static + * @memberof module:Globals + * @function ceil + * @description Returns smallest integer greater than or equal to of each element of `x`. + * @param {NDArray} x + * @returns {NDArray} + * @example + * import { ceil } from 'vectorious/core/ceil'; + * + * ceil([0.5, 1.5, 2.5]); // => array([1, 2, 3]) + */ +export const ceil = (x: NDArray | ArrayLike): NDArray => array(x).ceil(); - let i: number; - for (i = 0; i < l1; i += 1) { - d1[i] = Math.ceil(d1[i]); +/** + * @function ceil + * @memberof NDArray.prototype + * @description Returns smallest integer greater than or equal to of each element of current array. + * @returns {NDArray} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([0.5, 1.5, 2.5]).ceil(); // <=> array([1, 2, 3]) + */ +export default function(this: NDArray): NDArray { + const { data: d1 } = this; + const iter = new NDIter(this); + + for (const i of iter) { + d1[i!] = f(d1[i!]); } return this; diff --git a/src/core/check.bench.ts b/src/core/check.bench.ts index d35f57b8..aaeb67e4 100644 --- a/src/core/check.bench.ts +++ b/src/core/check.bench.ts @@ -1,17 +1,15 @@ -import v = require('..'); +import { check } from './check'; +import { random } from './random'; import { bench } from '../bench'; -const { random, floor } = Math; -const r: (n: number) => v = (n: number): v => - v.array(new Float32Array(n)).fill(random); bench( - 'v', + 'NDArray', 'check', - (n: number): [v, number] => [v.random(n), floor(random() * n)], - (x: v, i: number): void => { + (n: number) => [random(n), Math.floor(Math.random() * n)], + (x, i: number): void => { x.check(i); }, - (x: v, i: number): void => { - v.check(x, i); + (x, i: number): void => { + check(x, i); } ); diff --git a/src/core/check.spec.ts b/src/core/check.spec.ts index 025d34f5..e6501c50 100644 --- a/src/core/check.spec.ts +++ b/src/core/check.spec.ts @@ -3,18 +3,20 @@ import { throws, } from 'assert'; -import v = require('..'); +import { check } from './check'; +import { array } from './array'; +import { random } from './random'; describe('(v) check', () => { it('should throw error if the index is NaN', () => { - const x: v = v.array([1, 2, 3, 4]); + const x = array([1, 2, 3, 4]); throws(() => { x.check(NaN); }, Error); }); it('should work as the static equivalent', () => { - const x: v = v.random(3); + const x = random(3); - doesNotThrow(() => { x.check(0); }, Error); + doesNotThrow(() => { check(x, 0); }, Error); }); }); diff --git a/src/core/check.ts b/src/core/check.ts index e4669625..785d7e08 100644 --- a/src/core/check.ts +++ b/src/core/check.ts @@ -1,10 +1,35 @@ import { NDArray } from './'; +import { array } from './array'; -NDArray.check = (x: T | ArrayLike, ...indices: number[]): void => { - NDArray.array(x).check(...indices); +/** + * @static + * @memberof module:Globals + * @function check + * @description Asserts if indices `i, j, ..., n` are within the bounds of `x` + * @param {NDArray} x + * @param {Number[]} ...indices + * @throws {Error} index out of bounds + * @example + * import { check } from 'vectorious/core/check'; + * + * check([0.5, 1.5, 2.5], 3); // Error: index out of bounds + */ +export const check = (x: NDArray | ArrayLike, ...indices: number[]): void => { + array(x).check(...indices); }; -NDArray.prototype.check = function(this: T, ...indices: number[]): void { +/** + * @function check + * @memberof NDArray.prototype + * @description Asserts if indices `i, j, ..., n` are within the bounds of current array + * @param {Number[]} ...indices + * @throws {Error} index out of bounds + * @example + * import { array } from 'vectorious/core/array'; + * + * array([0.5, 1.5, 2.5]).check(3); // Error: index out of bounds + */ +export default function(this: NDArray, ...indices: number[]): void { const { shape: s1, length: l1 } = this; if (indices.length === 1) { diff --git a/src/core/combine.bench.ts b/src/core/combine.bench.ts index 6c0bce8c..3a2e5348 100644 --- a/src/core/combine.bench.ts +++ b/src/core/combine.bench.ts @@ -1,15 +1,15 @@ -import v = require('..'); +import { combine } from './combine'; +import { random } from './random'; import { bench } from '../bench'; -const r: (n: number) => v = (n: number): v => v.random(n); bench( - 'v', + 'NDArray', 'combine', - (n: number): [v, v] => [v.random(n), v.random(n)], - (x: v, y: v): void => { + (n: number) => [random(n), random(n)], + (x, y): void => { x.combine(y); }, - (x: v, y: v): void => { - v.combine(x, y); + (x, y): void => { + combine(x, y); } ); diff --git a/src/core/combine.spec.ts b/src/core/combine.spec.ts index d9d175a2..667f2e6f 100644 --- a/src/core/combine.spec.ts +++ b/src/core/combine.spec.ts @@ -1,19 +1,17 @@ -import { - deepStrictEqual, -} from 'assert'; - -import v = require('..'); +import { equals } from './equals'; +import { combine } from './combine'; +import { array } from './array'; describe('(v) combine', () => { it('should return current vector if combined with empty vector', () => { - deepStrictEqual(v.array([1, 2, 3]), v.array([1, 2, 3]).combine(v.array())); + equals(array([1, 2, 3]), array([1, 2, 3]).combine(array())); }); it('should work as expected', () => { - deepStrictEqual(v.array([1, 2, 3, 0, 1]), v.array([1, 2, 3]).combine(v.array([0, 1]))); + equals(array([1, 2, 3, 0, 1]), array([1, 2, 3]).combine(array([0, 1]))); }); it('should work as the static equivalent', () => { - deepStrictEqual(v.array([1, 2, 3, 0, 1]), v.combine(v.array([1, 2, 3]), v.array([0, 1]))); + equals(array([1, 2, 3, 0, 1]), combine(array([1, 2, 3]), array([0, 1]))); }); }); diff --git a/src/core/combine.ts b/src/core/combine.ts index 2c866c8f..2822df59 100644 --- a/src/core/combine.ts +++ b/src/core/combine.ts @@ -2,11 +2,36 @@ import { TypedArray } from '../types'; import { get_type } from '../util'; import { NDArray } from './'; +import { array } from './array'; -NDArray.combine = (x: T | ArrayLike, y: T | ArrayLike): T => - NDArray.array(x).combine(NDArray.array(y)); +/** + * @static + * @memberof module:Globals + * @function combine + * @description Combines the vector `x` with `y` + * @param {NDArray} x + * @param {NDArray} y + * @returns {NDArray} + * @example + * import { combine } from 'vectorious/core/combine'; + * + * combine([1, 2, 3], [4, 5, 6]); // => array([1, 2, 3, 4, 5, 6]) + */ +export const combine = (x: NDArray | ArrayLike, y: NDArray | ArrayLike): NDArray => + array(x).combine(array(y)); -NDArray.prototype.combine = function(this: T, x: T): T { +/** + * @function combine + * @memberof NDArray.prototype + * @description Combines the current vector with `x` + * @param {NDArray} x + * @returns {this} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([1, 2, 3]).combine([4, 5, 6]); // => array([1, 2, 3, 4, 5, 6]) + */ +export default function(this: NDArray, x: NDArray): NDArray { if (this.shape.length !== 1 && x.shape.length !== 1) { throw new Error('combine operation not permitted for multidimensional arrays'); } diff --git a/src/core/copy.bench.ts b/src/core/copy.bench.ts index 157eed69..1064ff37 100644 --- a/src/core/copy.bench.ts +++ b/src/core/copy.bench.ts @@ -1,14 +1,15 @@ -import v = require('..'); +import { copy } from './copy'; +import { random } from './random'; import { bench } from '../bench'; bench( - 'v', + 'NDArray', 'copy', - (n: number): [v] => [v.random(n)], - (x: v): void => { + (n: number) => [random(n)], + (x): void => { x.copy(); }, - (x: v): void => { - v.copy(x); + (x): void => { + copy(x); } ); diff --git a/src/core/copy.spec.ts b/src/core/copy.spec.ts index c688088b..ee4855b9 100644 --- a/src/core/copy.spec.ts +++ b/src/core/copy.spec.ts @@ -1,28 +1,29 @@ import { - deepStrictEqual, notStrictEqual, } from 'assert'; -import v = require('..'); +import { equals } from './equals'; +import { copy } from './copy'; +import { array } from './array'; describe('(v) copy', () => { it('should create an immutable copy of class', () => { - const f32: Float32Array = new Float32Array([1, 2, 3, 4]); - const original: v = v.array(f32); - const copy: v = original.copy(); + const f32 = new Float64Array([1, 2, 3, 4]); + const original = array(f32); + const cp = original.copy(); - notStrictEqual(original, copy); - notStrictEqual(original.data, copy.data); - deepStrictEqual(original, copy); + notStrictEqual(original, cp); + notStrictEqual(original.data, cp.data); + equals(original, cp); }); it('should work as the static equivalent', () => { - const f32: Float32Array = new Float32Array([1, 2, 3, 4]); - const original: v = v.array(f32); - const copy: v = v.copy(original); + const f32 = new Float64Array([1, 2, 3, 4]); + const original = array(f32); + const cp = copy(original); - notStrictEqual(original, copy); - notStrictEqual(original.data, copy.data); - deepStrictEqual(original, copy); + notStrictEqual(original, cp); + notStrictEqual(original.data, cp.data); + equals(original, cp); }); }); diff --git a/src/core/copy.ts b/src/core/copy.ts index 810ce444..c334a8e1 100644 --- a/src/core/copy.ts +++ b/src/core/copy.ts @@ -1,14 +1,37 @@ -import { get_type } from '../util'; - import { NDArray } from './'; +import { array } from './array'; -NDArray.copy = (x: T | ArrayLike): T => NDArray.array(x).copy(); +/** + * @static + * @memberof module:Globals + * @function copy + * @description Makes a copy of `x` + * @param {NDArray} x + * @returns {NDArray} + * @example + * import { copy } from 'vectorious/core/copy'; + * + * copy([1, 2, 3]); // => array([1, 2, 3]) + */ +export const copy = (x: NDArray | ArrayLike): NDArray => array(x).copy(); -NDArray.prototype.copy = function(this: T): T { - const copy: T = Object.assign(Object.create(Object.getPrototypeOf(this)), this); +/** + * @function copy + * @memberof NDArray.prototype + * @description Makes a copy of the class and underlying data + * @returns {NDArray} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([1, 2, 3]).copy(); // => array([1, 2, 3]) + * @todo Should make new array C-contiguous in addition to just copying + */ +export default function(this: NDArray): NDArray { + const copy: NDArray = Object.assign(Object.create(Object.getPrototypeOf(this)), this); - copy.data = new (get_type(this.dtype))(this.data); - copy.shape = this.shape; + copy.data = this.data.slice(); + copy.shape = this.shape.slice(); + copy.strides = this.strides.slice(); copy.length = this.length; copy.dtype = this.dtype; diff --git a/src/core/cos.bench.ts b/src/core/cos.bench.ts index c2e6a77e..0e5c4943 100644 --- a/src/core/cos.bench.ts +++ b/src/core/cos.bench.ts @@ -1,14 +1,15 @@ -import v = require('..'); +import { cos } from './cos'; +import { random } from './random'; import { bench } from '../bench'; bench( - 'v', + 'NDArray', 'cos', - (n: number): [v] => [v.random(n)], - (x: v): void => { + (n: number) => [random(n)], + (x): void => { x.cos(); }, - (x: v): void => { - v.cos(x); + (x): void => { + cos(x); } ); diff --git a/src/core/cos.spec.ts b/src/core/cos.spec.ts index 1e0a7234..dfea75d8 100644 --- a/src/core/cos.spec.ts +++ b/src/core/cos.spec.ts @@ -1,19 +1,18 @@ -import { - deepStrictEqual, -} from 'assert'; - -import v = require('..'); +import { equals } from './equals'; +import { cos } from './cos'; +import { map } from './map'; +import { random } from './random'; describe('(v) cos', () => { it('should work as expected', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.map((value: number) => Math.cos(value)), x.cos()); + equals(map(x, (value: number) => Math.cos(value)), x.cos()); }); it('should work as the static equivalent', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.map((value: number) => Math.cos(value)), v.cos(x)); + equals(map(x, (value: number) => Math.cos(value)), cos(x)); }); }); diff --git a/src/core/cos.ts b/src/core/cos.ts index 9806cee6..52179afd 100644 --- a/src/core/cos.ts +++ b/src/core/cos.ts @@ -1,13 +1,39 @@ import { NDArray } from './'; +import { array } from './array'; +import { NDIter } from '../iterator'; -NDArray.cos = (x: T | ArrayLike): T => NDArray.array(x).cos(); +const { cos: f } = Math; -NDArray.prototype.cos = function(this: T): T { - const { data: d1, length: l1 } = this; +/** + * @static + * @memberof module:Globals + * @function cos + * @description Returns the cosine of each element of `x`. + * @param {NDArray} x + * @returns {NDArray} + * @example + * import { cos } from 'vectorious/core/cos'; + * + * cos([0, Math.PI / 2, Math.PI]); // => array([1, 0, -1]) + */ +export const cos = (x: NDArray | ArrayLike): NDArray => array(x).cos(); - let i: number; - for (i = 0; i < l1; i += 1) { - d1[i] = Math.cos(d1[i]); +/** + * @function cos + * @memberof NDArray.prototype + * @description Returns the cosine of each element of current array. + * @returns {this} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([0, Math.PI / 2, Math.PI]).cos(); // => array([1, 0, -1]) + */ +export default function(this: NDArray): NDArray { + const { data: d1 } = this; + const iter = new NDIter(this); + + for (const i of iter) { + d1[i!] = f(d1[i!]); } return this; diff --git a/src/core/cosh.bench.ts b/src/core/cosh.bench.ts index 3591f414..042d1d9f 100644 --- a/src/core/cosh.bench.ts +++ b/src/core/cosh.bench.ts @@ -1,14 +1,15 @@ -import v = require('..'); +import { cosh } from './cosh'; +import { random } from './random'; import { bench } from '../bench'; bench( - 'v', + 'NDArray', 'cosh', - (n: number): [v] => [v.random(n)], - (x: v): void => { + (n: number) => [random(n)], + (x): void => { x.cosh(); }, - (x: v): void => { - v.cosh(x); + (x): void => { + cosh(x); } ); diff --git a/src/core/cosh.spec.ts b/src/core/cosh.spec.ts index 5710d81d..eedb71c3 100644 --- a/src/core/cosh.spec.ts +++ b/src/core/cosh.spec.ts @@ -1,19 +1,18 @@ -import { - deepStrictEqual, -} from 'assert'; - -import v = require('..'); +import { equals } from './equals'; +import { cosh } from './cosh'; +import { map } from './map'; +import { random } from './random'; describe('(v) cosh', () => { it('should work as expected', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.map((value: number) => Math.cosh(value)), x.cosh()); + equals(map(x, (value: number) => Math.cosh(value)), x.cosh()); }); it('should work as the static equivalent', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.map((value: number) => Math.cosh(value)), v.cosh(x)); + equals(map(x, (value: number) => Math.cosh(value)), cosh(x)); }); }); diff --git a/src/core/cosh.ts b/src/core/cosh.ts index 810d77ea..0179bacf 100644 --- a/src/core/cosh.ts +++ b/src/core/cosh.ts @@ -1,13 +1,39 @@ import { NDArray } from './'; +import { array } from './array'; +import { NDIter } from '../iterator'; -NDArray.cosh = (x: T | ArrayLike): T => NDArray.array(x).cosh(); +const { cosh: f } = Math; -NDArray.prototype.cosh = function(this: T): T { - const { data: d1, length: l1 } = this; +/** + * @static + * @memberof module:Globals + * @function cosh + * @description Returns the hyperbolic cosine of each element of `x`. + * @param {NDArray} x + * @returns {NDArray} + * @example + * import { cosh } from 'vectorious/core/cosh'; + * + * cosh([0, 1, 2]); // => array([1, 1.5430806875228882, 3.762195587158203]) + */ +export const cosh = (x: NDArray | ArrayLike): NDArray => array(x).cosh(); - let i: number; - for (i = 0; i < l1; i += 1) { - d1[i] = Math.cosh(d1[i]); +/** + * @function cosh + * @memberof NDArray.prototype + * @description Returns the hyperbolic cosine of each element of current array. + * @returns {this} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([0, 1, 2]).cosh(); // => array([1, 1.5430806875228882, 3.762195587158203]) + */ +export default function(this: NDArray): NDArray { + const { data: d1 } = this; + const iter = new NDIter(this); + + for (const i of iter) { + d1[i!] = f(d1[i!]); } return this; diff --git a/src/core/cross.bench.ts b/src/core/cross.bench.ts index d2c03b43..7ee846ca 100644 --- a/src/core/cross.bench.ts +++ b/src/core/cross.bench.ts @@ -1,15 +1,15 @@ -import v = require('..'); +import { cross } from './cross'; +import { random } from './random'; import { bench } from '../bench'; -const r: (n: number) => v = (n: number): v => v.random(n); bench( - 'v', + 'NDArray', 'cross', - (): [v, v] => [v.random(3), v.random(3)], - (x: v, y: v): void => { + () => [random(3), random(3)], + (x, y): void => { x.cross(y); }, - (x: v, y: v): void => { - v.cross(x, y); + (x, y): void => { + cross(x, y); } ); diff --git a/src/core/cross.spec.ts b/src/core/cross.spec.ts index fcdf1228..11a14a90 100644 --- a/src/core/cross.spec.ts +++ b/src/core/cross.spec.ts @@ -1,29 +1,30 @@ import { - deepStrictEqual, throws, } from 'assert'; -import v = require('..'); +import { equals } from './equals'; +import { cross } from './cross'; +import { array } from './array'; describe('(v) cross', () => { it('should work as expected', () => { - const x: v = v.array([1, 2, 3]); - const y: v = v.array([2, 3, 4]); + const x = array([1, 2, 3]); + const y = array([2, 3, 4]); - deepStrictEqual(v.array([-1, 2, -1]), x.cross(y)); + equals(array([-1, 2, -1]), x.cross(y)); }); it('should throw an exception when lengths do not match', () => { - const x: v = v.array([1, 2, 3, 4]); - const y: v = v.array([5, 6, 7]); + const x = array([1, 2, 3, 4]); + const y = array([5, 6, 7]); throws(() => { x.cross(y); }, Error); }); it('should work as the static equivalent', () => { - const x: v = v.array([1, 2, 3]); - const y: v = v.array([2, 3, 4]); + const x = array([1, 2, 3]); + const y = array([2, 3, 4]); - deepStrictEqual(v.array([-1, 2, -1]), v.cross(x, y)); + equals(array([-1, 2, -1]), cross(x, y)); }); }); diff --git a/src/core/cross.ts b/src/core/cross.ts index b89b0211..4e70bd30 100644 --- a/src/core/cross.ts +++ b/src/core/cross.ts @@ -1,9 +1,40 @@ import { NDArray } from './'; +import { array } from './array'; -NDArray.cross = (x: T | ArrayLike, y: T | ArrayLike): T => - NDArray.array(x).cross(NDArray.array(y)); +/** + * @static + * @memberof module:Globals + * @function cross + * @description + * Computes the cross product of the `x` and the vector `y` + * This operation can only calculated for vectors with three components. + * Otherwise it throws an exception. + * @param {NDArray} x + * @param {NDArray} y + * @returns {NDArray} + * @example + * import { cross } from 'vectorious/core/cross'; + * + * cross([1, 2, 3], [4, 5, 6]); // => array([-3, 6, -3]) + */ +export const cross = (x: NDArray | ArrayLike, y: NDArray | ArrayLike): NDArray => + array(x).cross(array(y)); -NDArray.prototype.cross = function(this: T, x: T): T { +/** + * @function cross + * @memberof NDArray.prototype + * @description + * Computes the cross product of the current vector and the vector `x` + * This operation can only calculated for vectors with three components. + * Otherwise it throws an exception. + * @param {NDArray} x + * @returns {this} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([1, 2, 3]).cross([4, 5, 6]); // <=> array([-3, 6, -3]) + */ +export default function(this: NDArray, x: NDArray): NDArray { const { length: l1 } = this; const { length: l2 } = x; diff --git a/src/core/det.bench.ts b/src/core/det.bench.ts index 7acbe3c9..68c6d5a8 100644 --- a/src/core/det.bench.ts +++ b/src/core/det.bench.ts @@ -1,16 +1,17 @@ -import v = require('..'); +import { det } from './det'; +import { random } from './random'; import { bench } from '../bench'; const { floor, sqrt } = Math; bench( - 'v', + 'NDArray', 'det', - (n: number): [v] => [v.random(floor(sqrt(n)), floor(sqrt(n)))], - (x: v): void => { + (n: number) => [random(floor(sqrt(n)), floor(sqrt(n)))], + (x): void => { x.det(); }, - (x: v): void => { - v.det(x); + (x): void => { + det(x); } ); diff --git a/src/core/det.spec.ts b/src/core/det.spec.ts index e801b4cc..5da492be 100644 --- a/src/core/det.spec.ts +++ b/src/core/det.spec.ts @@ -1,21 +1,21 @@ import { - deepStrictEqual, strictEqual, throws, } from 'assert'; -import v = require('..'); +import { det } from './det'; +import { array } from './array'; describe('(v) det', () => { it('should throw error if matrix is not square', () => { - const x: v = v.array([[0, 0]]); + const x = array([[0, 0]]); throws(() => { x.det(); }, Error); }); it('should work as expected', () => { - const x: v = v.array([[1, 2], [3, 4]]); - const y: v = v.array([[1, 5, 6], [3.3, 9, 10], [7, 9, 3.2]]); - const z: v = v.array([[2, -1, 1], [-1, -2, 1], [-1, -1, -1]]); + const x = array([[1, 2], [3, 4]]); + const y = array([[1, 5, 6], [3.3, 9, 10], [7, 9, 3.2]]); + const z = array([[2, -1, 1], [-1, -2, 1], [-1, -1, -1]]); strictEqual(-2, Number(x.det().toFixed(2))); strictEqual(36.2, Number(y.det().toFixed(2))); @@ -23,8 +23,8 @@ describe('(v) det', () => { }); it('should work as the static equivalent', () => { - const x: v = v.array([[1, 2], [3, 4]]); + const x = array([[1, 2], [3, 4]]); - deepStrictEqual(x.copy().det(), v.det(x)); + strictEqual(x.copy().det(), det(x)); }); }); diff --git a/src/core/det.ts b/src/core/det.ts index d5b158f6..76e2589c 100644 --- a/src/core/det.ts +++ b/src/core/det.ts @@ -1,8 +1,31 @@ import { NDArray } from './'; +import { array } from './array'; -NDArray.det = (x: T | ArrayLike): number => NDArray.array(x).det(); +/** + * @static + * @memberof module:Globals + * @function det + * @description Gets the determinant of `x`. + * @param {NDArray} x + * @returns {Number} + * @example + * import { det } from 'vectorious/core/det'; + * + * det([[0, 1], [2, 3]]); // => -2 + */ +export const det = (x: NDArray | ArrayLike): number => array(x).det(); -NDArray.prototype.det = function(this: T): number { +/** + * @function det + * @memberof NDArray.prototype + * @description Gets the determinant of current matrix using LU factorization. + * @returns {Number} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([[0, 1], [2, 3]]).det(); // => -2 + */ +export default function(this: NDArray): number { this.square(); const [n] = this.shape; diff --git a/src/core/diagonal.bench.ts b/src/core/diagonal.bench.ts index e74f12c2..dbd5f9da 100644 --- a/src/core/diagonal.bench.ts +++ b/src/core/diagonal.bench.ts @@ -1,16 +1,17 @@ -import v = require('..'); +import { diagonal } from './diagonal'; +import { random } from './random'; import { bench } from '../bench'; const { floor, sqrt } = Math; bench( - 'v', + 'NDArray', 'diag', - (n: number): [v] => [v.random(floor(sqrt(n)), floor(sqrt(n)))], - (x: v): void => { + (n: number) => [random(floor(sqrt(n)), floor(sqrt(n)))], + (x): void => { x.diagonal(); }, - (x: v): void => { - v.diagonal(x); + (x): void => { + diagonal(x); } ); diff --git a/src/core/diagonal.spec.ts b/src/core/diagonal.spec.ts index a6c2e9fd..71efc882 100644 --- a/src/core/diagonal.spec.ts +++ b/src/core/diagonal.spec.ts @@ -1,19 +1,17 @@ -import { - deepStrictEqual, -} from 'assert'; - -import v = require('..'); +import { equals } from './equals'; +import { diagonal } from './diagonal'; +import { array } from './array'; describe('(v) diagonal', () => { it('should work as expected', () => { - const x: v = v.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]); + const x = array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]); - deepStrictEqual(v.array([1, 5, 9]), x.diagonal()); + equals(array([1, 5, 9]), x.diagonal()); }); it('should work as the static equivalent', () => { - const x: v = v.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]); + const x = array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]); - deepStrictEqual(x.copy().diagonal(), v.diagonal(x)); + equals(x.copy().diagonal(), diagonal(x)); }); }); diff --git a/src/core/diagonal.ts b/src/core/diagonal.ts index a3c459d3..dfa6fa92 100644 --- a/src/core/diagonal.ts +++ b/src/core/diagonal.ts @@ -1,9 +1,32 @@ import { NDArray } from './'; +import { array } from './array'; -NDArray.diagonal = (x: T | ArrayLike): T => - NDArray.array(x).diagonal(); +/** + * @static + * @memberof module:Globals + * @function diagonal + * @description Gets the diagonal of `x`. + * @param {NDArray} x + * @returns {NDArray} + * @example + * import { diagonal } from 'vectorious/core/diagonal'; + * + * diagonal([[1, 2], [3, 4]]); // => array([1, 4]) + */ +export const diagonal = (x: NDArray | ArrayLike): NDArray => + array(x).diagonal(); -NDArray.prototype.diagonal = function(this: T): T { +/** + * @function diagonal + * @memberof NDArray.prototype + * @description Gets the diagonal of current matrix. + * @returns {this} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([1, 2, 3]).diagonal(); // => array([1, 4]) + */ +export default function(this: NDArray): NDArray { this.square(); const { length: l1 } = this; diff --git a/src/core/dot.bench.ts b/src/core/dot.bench.ts index d967ae70..b07ecd12 100644 --- a/src/core/dot.bench.ts +++ b/src/core/dot.bench.ts @@ -1,14 +1,15 @@ -import v = require('..'); +import { dot } from './dot'; +import { random } from './random'; import { bench } from '../bench'; bench( - 'v', + 'NDArray', 'dot', - (n: number): [v, v] => [v.random(n), v.random(n)], - (x: v, y: v): void => { + (n: number) => [random(n), random(n)], + (x, y): void => { x.dot(y); }, - (x: v, y: v): void => { - v.dot(x, y); + (x, y): void => { + dot(x, y); } ); diff --git a/src/core/dot.spec.ts b/src/core/dot.spec.ts index dbb596f2..7a589b78 100644 --- a/src/core/dot.spec.ts +++ b/src/core/dot.spec.ts @@ -1,29 +1,22 @@ import { strictEqual, - throws, } from 'assert'; -import v = require('..'); +import { dot } from './dot'; +import { array } from './array'; describe('(v) dot', () => { - it('should throw error if sizes do not match', () => { - const x: v = v.array([1]); - const y: v = v.array([1, 2]); - - throws(() => { x.dot(y); }, Error); - }); - it('should work as expected', () => { - const x: v = v.array([1, 2, 3]); - const y: v = v.array([4, 5, 6]); + const x = array([1, 2, 3]); + const y = array([4, 5, 6]); strictEqual(32, x.dot(y)); }); it('should work as the static equivalent', () => { - const x: v = v.array([1, 2, 3]); - const y: v = v.array([4, 5, 6]); + const x = array([1, 2, 3]); + const y = array([4, 5, 6]); - strictEqual(32, v.dot(x, y)); + strictEqual(32, dot(x, y)); }); }); diff --git a/src/core/dot.ts b/src/core/dot.ts index bffff67f..00f3ce8b 100644 --- a/src/core/dot.ts +++ b/src/core/dot.ts @@ -1,44 +1,51 @@ -import { get_type } from '../util'; - import { NDArray } from './'; +import { NDMultiIter } from '../iterator'; +import { array } from './array'; +import * as blas from '../blas'; + +/** + * @static + * @memberof module:Globals + * @function dot + * @description + * Performs dot multiplication with `x` and `y`. + * Accelerated with BLAS `?dot`. + * @param {NDArray} x + * @param {NDArray} y + * @returns {Number} + * @example + * import { dot } from 'vectorious/core/dot'; + * + * dot([1, 2, 3], [4, 5, 6]); // => 32 + */ +export const dot = (x: NDArray | ArrayLike, y: NDArray | ArrayLike): number => + array(x).dot(array(y)); + +/** + * @function dot + * @memberof NDArray.prototype + * @description + * Performs dot multiplication with `x` and current array + * Accelerated with BLAS `?dot`. + * @param {NDArray} x + * @returns {Number} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([1, 2, 3]).dot([4, 5, 6]); // => 32 + */ +export default function(this: NDArray, x: NDArray): number { + const { data: d1, length: l1, dtype } = this; + const { data: d2 } = x; -let nblas: any; -try { - nblas = require('nblas'); -} catch (err) {} - -NDArray.dot = (x: T | ArrayLike, y: T | ArrayLike): number => - NDArray.array(x).dot(NDArray.array(y)); - -NDArray.prototype.dot = function(this: T, x: T): number { - this.equilateral(x); - this.equidimensional(x); - - const { length: l1 } = this; let result: number = 0; - try { - if (!['float32', 'float64'].includes(this.dtype)) { - this.dtype = 'float32'; - this.data = get_type(this.dtype).from(this.data); - } - - const { data: d1 } = this; - const { data: d2 } = x; - if (this.dtype === 'float64') { - result = nblas.ddot(l1, d2, 1, d1, 1); - } - - if (this.dtype === 'float32') { - result = nblas.sdot(l1, d2, 1, d1, 1); - } + result = blas.dot(dtype, l1, d2, 1, d1, 1); } catch (err) { - const { data: d1 } = this; - const { data: d2 } = x; + const iter = new NDMultiIter(this, x); - let i: number; - for (i = 0; i < l1; i += 1) { - result += d1[i] * d2[i]; + for (const [i, j] of iter) { + result += d1[i] * d2[j]; } } diff --git a/src/core/eig.bench.ts b/src/core/eig.bench.ts index f490844c..4c989feb 100644 --- a/src/core/eig.bench.ts +++ b/src/core/eig.bench.ts @@ -1,16 +1,17 @@ -import v = require('..'); +import { eig } from './eig'; +import { random } from './random'; import { bench } from '../bench'; const { floor, sqrt } = Math; bench( - 'v', + 'NDArray', 'eig', - (n: number): [v] => [v.random(floor(sqrt(n)), floor(sqrt(n)))], - (x: v): void => { + (n: number) => [random(floor(sqrt(n)), floor(sqrt(n)))], + (x): void => { x.eig(); }, - (x: v): void => { - v.eig(x); + (x): void => { + eig(x); } ); diff --git a/src/core/eig.spec.ts b/src/core/eig.spec.ts index 13a01808..4cce3037 100644 --- a/src/core/eig.spec.ts +++ b/src/core/eig.spec.ts @@ -1,25 +1,26 @@ import { - deepStrictEqual, throws, } from 'assert'; -import v = require('..'); +import { equals } from './equals'; +import { eig } from './eig'; +import { array } from './array'; describe('(v) eig', () => { it('should throw error if matrix is not square', () => { - const x: v = v.array([[1, 2]]); + const x = array([[1, 2]]); throws(() => { x.eig(); }, Error); }); it('should work as expected', () => { - const x: v = v.array([ + const x = array([ [1, 0, 0], [0, 2, 0], [0, 0, 3], ]); - const y: v = v.array([1, 2, 3]); - const z: v = v.array([ + const y = array([1, 2, 3]); + const z = array([ [1, 0, 0], [0, 1, 0], [0, 0, 1], @@ -27,17 +28,17 @@ describe('(v) eig', () => { const [e, E] = x.eig(); - deepStrictEqual(y, e); - deepStrictEqual(z, E); + equals(y, e); + equals(z, E); }); it('should work as the static equivalent', () => { - const x: v = v.array([ + const x = array([ [1, 0, 0], [0, 2, 0], [0, 0, 3], ]); - deepStrictEqual(x.copy().eig(), v.eig(x)); + equals(x.copy().eig(), eig(x)); }); }); diff --git a/src/core/eig.ts b/src/core/eig.ts index 1bf2a803..b0c7e73d 100644 --- a/src/core/eig.ts +++ b/src/core/eig.ts @@ -1,6 +1,9 @@ import { get_type } from '../util'; import { NDArray } from './'; +import { array } from './array'; +import { zeros } from './zeros'; +import { eye } from './eye'; let nlapack: any; try { @@ -8,6 +11,7 @@ try { } catch (err) {} /** + * @ignore * ┌ ┐ ┌ ┐┌ ┐ * │Skl│ │c −s││Skl│ * │ │ := │ ││ │ @@ -15,8 +19,8 @@ try { * └ ┘ └ ┘└ ┘ */ const rotate: - (x: T, c: number, s: number, k: number, l: number, i: number, j: number) => void = - (x: T, c: number, s: number, k: number, l: number, i: number, j: number): void => { + (x: NDArray, c: number, s: number, k: number, l: number, i: number, j: number) => void = + (x: NDArray, c: number, s: number, k: number, l: number, i: number, j: number): void => { const [n] = x.shape; const { data: d1 } = x; const temp: number = d1[k * n + l]; @@ -26,9 +30,35 @@ const rotate: d1[i * n + j] += s * (temp - tau * d1[i * n + j]); }; -NDArray.eig = (x: T | ArrayLike): [T, T] => NDArray.array(x).eig(); +/** + * @static + * @memberof module:Globals + * @function eig + * @description + * Gets eigenvalues and eigenvectors of `x` using the Jacobi method. + * Accelerated with LAPACK `?geev`. + * @param {NDArray} x + * @returns {Array} + * @example + * import { eig } from 'vectorious/core/eig'; + * + * eig([[1, 0, 0], [0, 2, 0], [0, 0, 3]]); // => [array([1, 2, 3]), array([[1, 0, 0], [0, 1, 0], [0, 0, 1]])] + */ +export const eig = (x: NDArray | ArrayLike): [NDArray, NDArray] => array(x).eig(); -NDArray.prototype.eig = function(this: T): [T, T] { +/** + * @function eig + * @memberof NDArray.prototype + * @description + * Gets eigenvalues and eigenvectors of the current matrix using the Jacobi method. + * Accelerated with LAPACK `?geev`. + * @returns {Array} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([[1, 0, 0], [0, 2, 0], [0, 0, 3]]).eig(); // => [array([1, 2, 3]), array([[1, 0, 0], [0, 1, 0], [0, 0, 1]])] + */ +export default function(this: NDArray): [NDArray, NDArray] { this.square(); const [n] = this.shape; @@ -42,11 +72,11 @@ NDArray.prototype.eig = function(this: T): [T, T] { const jobvl: typeof nlapack.NDArrayEigenvector = nlapack.NoEigenvector; const jobvr: typeof nlapack.NDArrayEigenvector = nlapack.Eigenvector; - const wr: T = NDArray.zeros(n); - const wi: T = NDArray.zeros(n); + const wr = zeros(n); + const wi = zeros(n); - const vl: T = NDArray.zeros(n, n); - const vr: T = NDArray.zeros(n, n); + const vl = zeros(n, n); + const vr = zeros(n, n); const { data: d1 } = this; const { data: d2 } = wr; @@ -64,13 +94,13 @@ NDArray.prototype.eig = function(this: T): [T, T] { return [wr, vr]; } catch (err) { const { data: d1 } = this; - const p: T = NDArray.eye(n); + const p = eye(n); - let max: number = 0; - let i: number = 0; - let j: number = 0; - let k: number = 0; - let l: number = 0; + let max = 0; + let i = 0; + let j = 0; + let k = 0; + let l = 0; do { // Find maximum off-diagonal element @@ -85,18 +115,18 @@ NDArray.prototype.eig = function(this: T): [T, T] { } // Find c and s - let t: number; + let t; if (Math.abs(d1[k * n + l]) < Math.abs(d1[l * n + l]) * 1e-36) { t = d1[k * n + l] / d1[l * n + l]; } else { - const phi: number = d1[l * n + l] / 2 * d1[k * n + l]; + const phi = d1[l * n + l] / 2 * d1[k * n + l]; t = 1 / (Math.abs(phi) + Math.sqrt(phi * phi + 1)); } - const c: number = 1 / Math.sqrt(t * t + 1); - const s: number = t * c; + const c = 1 / Math.sqrt(t * t + 1); + const s = t * c; - const e: number = d1[k * n + l]; + const e = d1[k * n + l]; d1[k * n + l] = 0; d1[k * n + k] -= t * e; d1[l * n + l] += t * e; diff --git a/src/core/equals.bench.ts b/src/core/equals.bench.ts index 841587c5..5c923ad6 100644 --- a/src/core/equals.bench.ts +++ b/src/core/equals.bench.ts @@ -1,14 +1,15 @@ -import v = require('..'); +import { equals } from './equals'; +import { random } from './random'; import { bench } from '../bench'; bench( - 'v', + 'NDArray', 'equals', - (n: number): [v, v] => [v.random(n), v.random(n)], - (x: v, y: v): void => { + (n: number) => [random(n), random(n)], + (x, y): void => { x.equals(y); }, - (x: v, y: v): void => { - v.equals(x, y); + (x, y): void => { + equals(x, y); } ); diff --git a/src/core/equals.spec.ts b/src/core/equals.spec.ts index 9aef29b5..1132e689 100644 --- a/src/core/equals.spec.ts +++ b/src/core/equals.spec.ts @@ -2,18 +2,19 @@ import { strictEqual, } from 'assert'; -import v = require('..'); +import { equals } from './equals'; +import { array } from './array'; describe('(v) equals', () => { it('should work as expected', () => { - strictEqual(true, v.array([1, 3, 2]).equals(v.array([1, 3, 2]))); - strictEqual(true, v.array().equals(v.array())); - strictEqual(false, v.array([1, 2, 3]).equals(v.array([1, 3, 2]))); + strictEqual(true, array([1, 3, 2]).equals(array([1, 3, 2]))); + strictEqual(true, array().equals(array())); + strictEqual(false, array([1, 2, 3]).equals(array([1, 3, 2]))); }); it('should work as the static equivalent', () => { - strictEqual(true, v.equals(v.array([1, 3, 2]), v.array([1, 3, 2]))); - strictEqual(true, v.equals(v.array(), v.array())); - strictEqual(false, v.equals(v.array([1, 2, 3]), v.array([1, 3, 2]))); + strictEqual(true, equals(array([1, 3, 2]), array([1, 3, 2]))); + strictEqual(true, equals(array(), array())); + strictEqual(false, equals(array([1, 2, 3]), array([1, 3, 2]))); }); }); diff --git a/src/core/equals.ts b/src/core/equals.ts index eee2502d..09e8fa76 100644 --- a/src/core/equals.ts +++ b/src/core/equals.ts @@ -1,19 +1,44 @@ import { NDArray } from './'; +import { NDMultiIter } from '../iterator'; +import { array } from './array'; -NDArray.equals = (x: T | ArrayLike, y: T | ArrayLike): boolean => - NDArray.array(x).equals(NDArray.array(y)); +/** + * @static + * @memberof module:Globals + * @function equals + * @description Checks if `x` and `y` are equal. + * @param {NDArray} x + * @param {NDArray} y + * @param {Number} tolerance + * @returns {Boolean} + * @example + * import { equals } from 'vectorious/core/equals'; + * + * equals([1, 2, 3], [1, 2, 3]); // => true + */ +export const equals = (x: NDArray | ArrayLike, y: NDArray | ArrayLike, tolerance: number = 1e-6): boolean => + array(x).equals(array(y), tolerance); -NDArray.prototype.equals = function(this: T, x: T): boolean { - this.equilateral(x); - this.equidimensional(x); - - const { data: d1, length: l1 } = this; +/** + * @function equals + * @memberof NDArray.prototype + * @description Checks if current array and `x` are equal. + * @param {NDArray} x + * @param {Number} tolerance + * @returns {Boolean} + * @example + * import { equals } from 'vectorious/core/equals'; + * + * array([1, 2, 3]).equals([1, 2, 3]); // => true + */ +export default function(this: NDArray, x: NDArray, tolerance: number = 1e-6): boolean { + const { data: d1 } = this; const { data: d2 } = x; - let i: number; + const iter = new NDMultiIter(this, x); - for (i = 0; i < l1; i += 1) { - if (d1[i] !== d2[i]) { + for (const [i, j] of iter) { + if (Math.abs(d1[i] - d2[j]) > tolerance) { return false; } } diff --git a/src/core/equidimensional.bench.ts b/src/core/equidimensional.bench.ts index 645175e5..9807e7e3 100644 --- a/src/core/equidimensional.bench.ts +++ b/src/core/equidimensional.bench.ts @@ -1,14 +1,15 @@ -import v = require('..'); +import { equidimensional } from './equidimensional'; +import { random } from './random'; import { bench } from '../bench'; bench( - 'v', + 'NDArray', 'equidimensional', - (n: number): [v, v] => [v.random(n), v.random(n)], - (x: v, y: v): void => { + (n: number) => [random(n), random(n)], + (x, y): void => { x.equidimensional(y); }, - (x: v, y: v): void => { - v.equidimensional(x, y); + (x, y): void => { + equidimensional(x, y); } ); diff --git a/src/core/equidimensional.spec.ts b/src/core/equidimensional.spec.ts index 4b160d1d..75d58b32 100644 --- a/src/core/equidimensional.spec.ts +++ b/src/core/equidimensional.spec.ts @@ -2,33 +2,34 @@ import { throws, } from 'assert'; -import v = require('..'); +import { equidimensional } from './equidimensional'; +import { array } from './array'; describe('(v) equidimensional', () => { it('should pass if shapes match', () => { - const f32x: Float32Array = new Float32Array([1, 2, 3, 4]); - const f32y: Float32Array = new Float32Array([1, 2, 3, 4]); - const x: v = v.array(f32x); - const y: v = v.array(f32y); + const f32x = new Float64Array([1, 2, 3, 4]); + const f32y = new Float64Array([1, 2, 3, 4]); + const x = array(f32x); + const y = array(f32y); x.equidimensional(y); }); it('should throw error if lengths do not match', () => { - const f32x: Float32Array = new Float32Array([1, 2, 3, 4]); - const f32y: Float32Array = new Float32Array([1, 2, 3, 4]); - const x: v = v.array(f32x); - const y: v = v.array(f32y, { shape: [2, 2] }); + const f32x = new Float64Array([1, 2, 3, 4]); + const f32y = new Float64Array([1, 2, 3, 4]); + const x = array(f32x); + const y = array(f32y, { shape: [2, 2] }); throws(() => { x.equidimensional(y); }, Error); }); it('should work as the static equivalent', () => { - const f32x: Float32Array = new Float32Array([1, 2, 3, 4]); - const f32y: Float32Array = new Float32Array([1, 2, 3, 4]); - const x: v = v.array(f32x); - const y: v = v.array(f32y); + const f32x = new Float64Array([1, 2, 3, 4]); + const f32y = new Float64Array([1, 2, 3, 4]); + const x = array(f32x); + const y = array(f32y); - v.equidimensional(x, y); + equidimensional(x, y); }); }); diff --git a/src/core/equidimensional.ts b/src/core/equidimensional.ts index 674da614..a73bb9ed 100644 --- a/src/core/equidimensional.ts +++ b/src/core/equidimensional.ts @@ -1,10 +1,37 @@ import { NDArray } from './'; +import { array } from './array'; -NDArray.equidimensional = (x: T | ArrayLike, y: T | ArrayLike): void => { - NDArray.array(x).equidimensional(NDArray.array(y)); +/** + * @deprecated + * @static + * @memberof module:Globals + * @function equidimensional + * @description Asserts if `x` and `y` have the same shape + * @param {NDArray} x + * @param {NDArray} y + * @throws {Error} shapes x and y do not match + * @example + * import { equidimensional } from 'vectorious/core/equidimensional'; + * + * equidimensional([1, 2, 3], [1, 2]); // Error: shapes 3 and 2 do not match + */ +export const equidimensional = (x: NDArray | ArrayLike, y: NDArray | ArrayLike): void => { + array(x).equidimensional(array(y)); }; -NDArray.prototype.equidimensional = function(this: T, x: T): void { +/** + * @deprecated + * @function equidimensional + * @memberof NDArray.prototype + * @description Asserts if current array and `x` have the same shape + * @param {NDArray} x + * @throws {Error} shapes x and y do not match + * @example + * import { array } from 'vectorious/core/array'; + * + * array([1, 2, 3]).equidimensional([1, 2]); // Error: shapes 3 and 2 do not match + */ +export default function(this: NDArray, x: NDArray): void { const { shape: s1 } = this; const { shape: s2 } = x; diff --git a/src/core/equilateral.bench.ts b/src/core/equilateral.bench.ts index 4ded89f0..19c370ea 100644 --- a/src/core/equilateral.bench.ts +++ b/src/core/equilateral.bench.ts @@ -1,14 +1,15 @@ -import v = require('..'); +import { equilateral } from './equilateral'; +import { random } from './random'; import { bench } from '../bench'; bench( - 'v', + 'NDArray', 'equilateral', - (n: number): [v, v] => [v.random(n), v.random(n)], - (x: v, y: v): void => { + (n: number) => [random(n), random(n)], + (x, y): void => { x.equilateral(y); }, - (x: v, y: v): void => { - v.equilateral(x, y); + (x, y): void => { + equilateral(x, y); } ); diff --git a/src/core/equilateral.spec.ts b/src/core/equilateral.spec.ts index 92bf42e2..acd897c7 100644 --- a/src/core/equilateral.spec.ts +++ b/src/core/equilateral.spec.ts @@ -2,33 +2,34 @@ import { throws, } from 'assert'; -import v = require('..'); +import { equilateral } from './equilateral'; +import { array } from './array'; describe('(v) equilateral', () => { it('should pass if lengths match', () => { - const f32x: Float32Array = new Float32Array([1, 2, 3, 4]); - const f32y: Float32Array = new Float32Array([1, 2, 3, 4]); - const x: v = v.array(f32x); - const y: v = v.array(f32y); + const f32x = new Float64Array([1, 2, 3, 4]); + const f32y = new Float64Array([1, 2, 3, 4]); + const x = array(f32x); + const y = array(f32y); x.equilateral(y); }); it('should throw error if lengths do not match', () => { - const f32x: Float32Array = new Float32Array([1, 2, 3, 4]); - const f32y: Float32Array = new Float32Array([1, 2, 3, 4, 5]); - const x: v = v.array(f32x); - const y: v = v.array(f32y); + const f32x = new Float64Array([1, 2, 3, 4]); + const f32y = new Float64Array([1, 2, 3, 4, 5]); + const x = array(f32x); + const y = array(f32y); throws(() => { x.equilateral(y); }, Error); }); it('should work as the static equivalent', () => { - const f32x: Float32Array = new Float32Array([1, 2, 3, 4]); - const f32y: Float32Array = new Float32Array([1, 2, 3, 4]); - const x: v = v.array(f32x); - const y: v = v.array(f32y); + const f32x = new Float64Array([1, 2, 3, 4]); + const f32y = new Float64Array([1, 2, 3, 4]); + const x = array(f32x); + const y = array(f32y); - v.equilateral(x, y); + equilateral(x, y); }); }); diff --git a/src/core/equilateral.ts b/src/core/equilateral.ts index f797f6ca..fb62f2e0 100644 --- a/src/core/equilateral.ts +++ b/src/core/equilateral.ts @@ -1,10 +1,37 @@ import { NDArray } from './'; +import { array } from './array'; -NDArray.equilateral = (x: T | ArrayLike, y: T | ArrayLike): void => { - NDArray.array(x).equilateral(NDArray.array(y)); +/** + * @deprecated + * @static + * @memberof module:Globals + * @function equilateral + * @description Asserts if `x` and `y` have the same length + * @param {NDArray} x + * @param {NDArray} y + * @throws {Error} lengths x and y do not match + * @example + * import { equilateral } from 'vectorious/core/equilateral'; + * + * equilateral([1, 2, 3], [1, 2]); // Error: lengths 3 and 2 do not match + */ +export const equilateral = (x: NDArray | ArrayLike, y: NDArray | ArrayLike): void => { + array(x).equilateral(array(y)); }; -NDArray.prototype.equilateral = function(this: T, x: T): void { +/** + * @deprecated + * @function equilateral + * @memberof NDArray.prototype + * @description Asserts if current array and `x` have the same length + * @param {NDArray} x + * @throws {Error} lengths x and y do not match + * @example + * import { array } from 'vectorious/core/array'; + * + * array([1, 2, 3]).equilateral([1, 2]); // Error: lengths 3 and 2 do not match + */ +export default function(this: NDArray, x: NDArray): void { const { length: l1 } = this; const { length: l2 } = x; diff --git a/src/core/exp.bench.ts b/src/core/exp.bench.ts index b708b7bd..c9d5e8ae 100644 --- a/src/core/exp.bench.ts +++ b/src/core/exp.bench.ts @@ -1,14 +1,15 @@ -import v = require('..'); +import { exp } from './exp'; +import { random } from './random'; import { bench } from '../bench'; bench( - 'v', + 'NDArray', 'exp', - (n: number): [v] => [v.random(n)], - (x: v): void => { + (n: number) => [random(n)], + (x): void => { x.exp(); }, - (x: v): void => { - v.exp(x); + (x): void => { + exp(x); } ); diff --git a/src/core/exp.spec.ts b/src/core/exp.spec.ts index 7d965f6c..0a3503cf 100644 --- a/src/core/exp.spec.ts +++ b/src/core/exp.spec.ts @@ -1,19 +1,18 @@ -import { - deepStrictEqual, -} from 'assert'; - -import v = require('..'); +import { equals } from './equals'; +import { exp } from './exp'; +import { map } from './map'; +import { random } from './random'; describe('(v) exp', () => { it('should work as expected', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.map((value: number) => Math.exp(value)), x.exp()); + equals(map(x, (value: number) => Math.exp(value)), x.exp()); }); it('should work as the static equivalent', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.map((value: number) => Math.exp(value)), v.exp(x)); + equals(map(x, (value: number) => Math.exp(value)), exp(x)); }); }); diff --git a/src/core/exp.ts b/src/core/exp.ts index 7dfbb066..e3cf0036 100644 --- a/src/core/exp.ts +++ b/src/core/exp.ts @@ -1,13 +1,43 @@ import { NDArray } from './'; +import { array } from './array'; +import { NDIter } from '../iterator'; -NDArray.exp = (x: T | ArrayLike): T => NDArray.array(x).exp(); +const { exp: f } = Math; -NDArray.prototype.exp = function(this: T): T { - const { data: d1, length: l1 } = this; +/** + * @static + * @memberof module:Globals + * @function exp + * @description + * Returns e^x of each element of `x`, where x is the argument, + * and e is Euler's constant (2.718…), the base of the natural logarithm. + * @param {NDArray} x + * @returns {NDArray} + * @example + * import { exp } from 'vectorious/core/exp'; + * + * exp([1, 2, 3]); // => array([2.7182817459106445, 7.389056205749512, 20.08553695678711]) + */ +export const exp = (x: NDArray | ArrayLike): NDArray => array(x).exp(); - let i: number; - for (i = 0; i < l1; i += 1) { - d1[i] = Math.exp(d1[i]); +/** + * @function exp + * @memberof NDArray.prototype + * @description + * Returns e^x of each element of current array, where x is the argument, + * and e is Euler's constant (2.718…), the base of the natural logarithm. + * @returns {this} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([1, 2, 3]).exp(); // <=> array([2.7182817459106445, 7.389056205749512, 20.08553695678711]) + */ +export default function(this: NDArray): NDArray { + const { data: d1 } = this; + const iter = new NDIter(this); + + for (const i of iter) { + d1[i!] = f(d1[i!]); } return this; diff --git a/src/core/expm1.bench.ts b/src/core/expm1.bench.ts index c0eb2e4c..bbb1ade8 100644 --- a/src/core/expm1.bench.ts +++ b/src/core/expm1.bench.ts @@ -1,14 +1,15 @@ -import v = require('..'); +import { expm1 } from './expm1'; +import { random } from './random'; import { bench } from '../bench'; bench( - 'v', + 'NDArray', 'expm1', - (n: number): [v] => [v.random(n)], - (x: v): void => { + (n: number) => [random(n)], + (x): void => { x.expm1(); }, - (x: v): void => { - v.expm1(x); + (x): void => { + expm1(x); } ); diff --git a/src/core/expm1.spec.ts b/src/core/expm1.spec.ts index 515d3a0d..e579d10f 100644 --- a/src/core/expm1.spec.ts +++ b/src/core/expm1.spec.ts @@ -1,19 +1,18 @@ -import { - deepStrictEqual, -} from 'assert'; - -import v = require('..'); +import { equals } from './equals'; +import { expm1 } from './expm1'; +import { map } from './map'; +import { random } from './random'; describe('(v) expm1', () => { it('should work as expected', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.map((value: number) => Math.expm1(value)), x.expm1()); + equals(map(x, (value: number) => Math.expm1(value)), x.expm1()); }); it('should work as the static equivalent', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.map((value: number) => Math.expm1(value)), v.expm1(x)); + equals(map(x, (value: number) => Math.expm1(value)), expm1(x)); }); }); diff --git a/src/core/expm1.ts b/src/core/expm1.ts index e182b21e..a55d4872 100644 --- a/src/core/expm1.ts +++ b/src/core/expm1.ts @@ -1,13 +1,39 @@ import { NDArray } from './'; +import { array } from './array'; +import { NDIter } from '../iterator'; -NDArray.expm1 = (x: T | ArrayLike): T => NDArray.array(x).expm1(); +const { expm1: f } = Math; -NDArray.prototype.expm1 = function(this: T): T { - const { data: d1, length: l1 } = this; +/** + * @static + * @memberof module:Globals + * @function expm1 + * @description Returns subtracting 1 from exp(x) of each element of `x`. + * @param {NDArray} x + * @returns {NDArray} + * @example + * import { expm1 } from 'vectorious/core/expm1'; + * + * expm1([1, 2, 3]); // => array([1.7182817459106445, 6.389056205749512, 19.08553695678711]) + */ +export const expm1 = (x: NDArray | ArrayLike): NDArray => array(x).expm1(); - let i: number; - for (i = 0; i < l1; i += 1) { - d1[i] = Math.expm1(d1[i]); +/** + * @function expm1 + * @memberof NDArray.prototype + * @description Returns subtracting 1 from exp(x) of each element of current array. + * @returns {this} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([1, 2, 3]).expm1(); // <=> array([1.7182817459106445, 6.389056205749512, 19.08553695678711]) + */ +export default function(this: NDArray): NDArray { + const { data: d1 } = this; + const iter = new NDIter(this); + + for (const i of iter) { + d1[i!] = f(d1[i!]); } return this; diff --git a/src/core/eye.bench.ts b/src/core/eye.bench.ts index 9a9de1f6..af1a79e7 100644 --- a/src/core/eye.bench.ts +++ b/src/core/eye.bench.ts @@ -1,10 +1,11 @@ -import v = require('..'); +import { eye } from './eye'; import { bench } from '../bench'; + bench( - 'v', + 'NDArray', 'eye', (n: number): [number] => [n], (n: number): void => { - v.eye(n); + eye(n); } ); diff --git a/src/core/eye.spec.ts b/src/core/eye.spec.ts index 13a6873c..35287550 100644 --- a/src/core/eye.spec.ts +++ b/src/core/eye.spec.ts @@ -1,13 +1,11 @@ -import { - deepStrictEqual, -} from 'assert'; - -import v = require('..'); +import { equals } from './equals'; +import { eye } from './eye'; +import { array } from './array'; describe('(v) eye', () => { it('should work as expected', () => { - const x: v = v.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]]); + const x = array([[1, 0, 0], [0, 1, 0], [0, 0, 1]]); - deepStrictEqual(x, v.eye(3)); + equals(x, eye(3)); }); }); diff --git a/src/core/eye.ts b/src/core/eye.ts index 6f8daa9b..37a9556f 100644 --- a/src/core/eye.ts +++ b/src/core/eye.ts @@ -1,15 +1,24 @@ import { NDArray } from './'; -NDArray.eye = function(this: new(...args: any[]) => T, n: number): T { - const x: T = new this(new Float32Array(n * n), { shape: [n, n] }); +/** + * @static + * @memberof module:Globals + * @function eye + * @description Creates an identity matrix of size `n` and type `type`. + * @param {Number} n + * @returns {NDArray} + * @example + * import { eye } from 'vectorious/core/eye'; + * + * eye(2); // => array([[1, 0], [0, 1]]) + */ +export const eye = (n: number): NDArray => { + const x = new NDArray(new Float64Array(n * n), { shape: [n, n] }); const { data: d1 } = x; let i: number; - let j: number; for (i = 0; i < n; i += 1) { - for (j = 0; j < n; j += 1) { - d1[i * n + j] = i === j ? 1 : 0; - } + d1[i * n + i] = 1; } return x; diff --git a/src/core/fill.bench.ts b/src/core/fill.bench.ts index 2b9619e4..c5e50468 100644 --- a/src/core/fill.bench.ts +++ b/src/core/fill.bench.ts @@ -1,14 +1,15 @@ -import v = require('..'); +import { fill } from './fill'; +import { random } from './random'; import { bench } from '../bench'; bench( - 'v', + 'NDArray', 'fill', - (n: number): [v, number] => [v.random(n), Math.random()], - (x: v, value: number) => { + (n: number) => [random(n), Math.random()], + (x, value: number) => { x.fill(value); }, - (x: v, value: number) => { - v.fill(x, value); + (x, value: number) => { + fill(x, value); } ); diff --git a/src/core/fill.spec.ts b/src/core/fill.spec.ts index 5121c8f4..d78d8032 100644 --- a/src/core/fill.spec.ts +++ b/src/core/fill.spec.ts @@ -1,28 +1,26 @@ -import { - deepStrictEqual, -} from 'assert'; - -import v = require('..'); +import { equals } from './equals'; +import { fill } from './fill'; +import { array } from './array'; describe('(v) fill', () => { it('should work as expected', () => { - const x: v = v.array([1, 1, 1]); - const y: v = v.array([0, 0, 0]); + const x = array([1, 1, 1]); + const y = array([0, 0, 0]); - deepStrictEqual(x, y.fill(1)); + equals(x, y.fill(1)); }); it('should work as expected with function argument', () => { - const x: v = v.array([0, 1, 2]); - const y: v = v.array([0, 0, 0]); + const x = array([0, 1, 2]); + const y = array([0, 0, 0]); - deepStrictEqual(x, y.fill((index: number) => index)); + equals(x, y.fill((index: number) => index)); }); it('should work as the static equivalent', () => { - const x: v = v.array([1, 1, 1]); - const y: v = v.array([0, 0, 0]); + const x = array([1, 1, 1]); + const y = array([0, 0, 0]); - deepStrictEqual(x, v.fill(y, 1)); + equals(x, fill(y, 1)); }); }); diff --git a/src/core/fill.ts b/src/core/fill.ts index 0e046399..bd29eae2 100644 --- a/src/core/fill.ts +++ b/src/core/fill.ts @@ -1,17 +1,43 @@ import { NDArray } from './'; +import { array } from './array'; +import { NDIter } from '../iterator'; -NDArray.fill = ( - x: T | ArrayLike, +/** + * @static + * @memberof module:Globals + * @function fill + * @description Fills `x` with a scalar value + * @param {NDArray} x + * @param {Number} value + * @returns {NDArray} + * @example + * import { fill } from 'vectorious/core/fill'; + * + * fill([1, 2, 3], 0); // => array([0, 0, 0]) + */ +export const fill = ( + x: NDArray | ArrayLike, value: number | ((index: number) => number) = 0 -): T => - NDArray.array(x).fill(value); +): NDArray => + array(x).fill(value); -NDArray.prototype.fill = function(this: T, value: number | ((index: number) => number) = 0): T { - const { data: d1, length: l1 } = this; +/** + * @function fill + * @memberof NDArray.prototype + * @description Fills the current array with a scalar value + * @param {Number} value + * @returns {this} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([1, 2, 3]).fill(0); // <=> array([0, 0, 0]) + */ +export default function(this: NDArray, value: number | ((index: number) => number) = 0): NDArray { + const { data: d1 } = this; + const iter = new NDIter(this); - let i: number; - for (i = 0; i < l1; i += 1) { - d1[i] = value instanceof Function ? value(i) : value; + for (const i of iter) { + d1[i!] = value instanceof Function ? value(iter.pos) : value; } return this; diff --git a/src/core/floor.bench.ts b/src/core/floor.bench.ts index e25b11a4..da2822aa 100644 --- a/src/core/floor.bench.ts +++ b/src/core/floor.bench.ts @@ -1,14 +1,15 @@ -import v = require('..'); +import { floor } from './floor'; +import { random } from './random'; import { bench } from '../bench'; bench( - 'v', + 'NDArray', 'floor', - (n: number): [v] => [v.random(n)], - (x: v): void => { + (n: number) => [random(n)], + (x): void => { x.floor(); }, - (x: v): void => { - v.floor(x); + (x): void => { + floor(x); } ); diff --git a/src/core/floor.spec.ts b/src/core/floor.spec.ts index febac1a1..785ea7da 100644 --- a/src/core/floor.spec.ts +++ b/src/core/floor.spec.ts @@ -1,19 +1,18 @@ -import { - deepStrictEqual, -} from 'assert'; - -import v = require('..'); +import { equals } from './equals'; +import { floor } from './floor'; +import { map } from './map'; +import { random } from './random'; describe('(v) floor', () => { it('should work as expected', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.map((value: number) => Math.floor(value)), x.floor()); + equals(map(x, (value: number) => Math.floor(value)), x.floor()); }); it('should work as the static equivalent', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.map((value: number) => Math.floor(value)), v.floor(x)); + equals(map(x, (value: number) => Math.floor(value)), floor(x)); }); }); diff --git a/src/core/floor.ts b/src/core/floor.ts index 23037688..02c2df1b 100644 --- a/src/core/floor.ts +++ b/src/core/floor.ts @@ -1,13 +1,39 @@ import { NDArray } from './'; +import { array } from './array'; +import { NDIter } from '../iterator'; -NDArray.floor = (x: T | ArrayLike): T => NDArray.array(x).floor(); +const { floor: f } = Math; -NDArray.prototype.floor = function(this: T): T { - const { data: d1, length: l1 } = this; +/** + * @static + * @memberof module:Globals + * @function floor + * @description Returns the largest integer less than or equal to a number of each element of `x`. + * @param {NDArray} x + * @returns {NDArray} + * @example + * import { floor } from 'vectorious/core/floor'; + * + * floor([1.5, 2.5, 3.5]); // => array([1, 2, 3]) + */ +export const floor = (x: NDArray | ArrayLike): NDArray => array(x).floor(); - let i: number; - for (i = 0; i < l1; i += 1) { - d1[i] = Math.floor(d1[i]); +/** + * @function floor + * @memberof NDArray.prototype + * @description Returns the largest integer less than or equal to a number of each element of current array. + * @returns {this} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([1.5, 2.5, 3.5]).floor(); // <=> array([1, 2, 3]) + */ +export default function(this: NDArray): NDArray { + const { data: d1 } = this; + const iter = new NDIter(this); + + for (const i of iter) { + d1[i!] = f(d1[i!]); } return this; diff --git a/src/core/forEach.bench.ts b/src/core/forEach.bench.ts index 6f576ed3..0992e479 100644 --- a/src/core/forEach.bench.ts +++ b/src/core/forEach.bench.ts @@ -1,14 +1,15 @@ -import v = require('..'); +import { forEach } from './forEach'; +import { random } from './random'; import { bench } from '../bench'; bench( - 'v', + 'NDArray', 'forEach', - (n: number): [v] => [v.random(n)], - (x: v): void => { + (n: number) => [random(n)], + (x): void => { x.forEach((value: number) => value); }, - (x: v): void => { - v.forEach(x, (value: number) => value); + (x): void => { + forEach(x, (value: number) => value); } ); diff --git a/src/core/forEach.spec.ts b/src/core/forEach.spec.ts index 2d095748..77ecc185 100644 --- a/src/core/forEach.spec.ts +++ b/src/core/forEach.spec.ts @@ -1,26 +1,24 @@ -import { - deepStrictEqual, -} from 'assert'; - -import v = require('..'); +import { equals } from './equals'; +import { forEach } from './forEach'; +import { array } from './array'; import { TypedArray } from '../types'; describe('(v) forEach', () => { it('should work as expected', () => { - const x: v = v.array([1, 2, 3]); + const x = array([1, 2, 3]); x.forEach((value: number, index: number, src: TypedArray) => { src[index] = value * 2; }); - deepStrictEqual(v.array([2, 4, 6]), x); + equals(array([2, 4, 6]), x); }); it('should work as the static equivalent', () => { - const x: v = v.array([1, 2, 3]); - v.forEach(x, (value: number, index: number, src: TypedArray) => { + const x = array([1, 2, 3]); + forEach(x, (value: number, index: number, src: TypedArray) => { src[index] = value * 2; }); - deepStrictEqual(v.array([2, 4, 6]), x); + equals(array([2, 4, 6]), x); }); }); diff --git a/src/core/forEach.ts b/src/core/forEach.ts index 96281d39..4cbfe42f 100644 --- a/src/core/forEach.ts +++ b/src/core/forEach.ts @@ -1,21 +1,51 @@ import { TypedArray } from '../types'; import { NDArray } from './'; +import { NDIter } from '../iterator'; -NDArray.forEach = ( - x: T, +/** + * @static + * @memberof module:Globals + * @function forEach + * @description Equivalent to `TypedArray.prototype.forEach`. + * @param {NDArray} x + * @param {Function} f + * @example + * import { forEach } from 'vectorious/core/forEach'; + * + * forEach([1, 2, 3], console.log); + * // 1 0 [ 1, 2, 3 ] + * // 2 1 [ 1, 2, 3 ] + * // 3 2 [ 1, 2, 3 ] + */ +export const forEach = ( + x: NDArray, f: (value: number, i: number, src: TypedArray) => void ): void => { x.forEach(f); }; -NDArray.prototype.forEach = function( - this: T, +/** + * @function forEach + * @memberof NDArray.prototype + * @description Equivalent to `TypedArray.prototype.forEach`. + * @param {Function} f + * @example + * import { array } from 'vectorious/core/array'; + * + * array([1, 2, 3]).forEach(console.log); + * // 1 0 [ 1, 2, 3 ] + * // 2 1 [ 1, 2, 3 ] + * // 3 2 [ 1, 2, 3 ] + */ +export default function( + this: NDArray, f: (value: number, i: number, src: TypedArray) => void ): void { - const { data: d1, length: l1 } = this; - let i: number; - for (i = 0; i < l1; i += 1) { - f.call(this, d1[i], i, d1); + const { data: d1 } = this; + const iter = new NDIter(this); + + for (const i of iter) { + f.call(this, d1[i!], i!, d1); } }; diff --git a/src/core/fround.bench.ts b/src/core/fround.bench.ts index aa6401de..9fc7b03c 100644 --- a/src/core/fround.bench.ts +++ b/src/core/fround.bench.ts @@ -1,14 +1,15 @@ -import v = require('..'); +import { fround } from './fround'; +import { random } from './random'; import { bench } from '../bench'; bench( - 'v', + 'NDArray', 'fround', - (n: number): [v] => [v.random(n)], - (x: v): void => { + (n: number) => [random(n)], + (x): void => { x.fround(); }, - (x: v): void => { - v.fround(x); + (x): void => { + fround(x); } ); diff --git a/src/core/fround.spec.ts b/src/core/fround.spec.ts index fdf88e00..01baa7fa 100644 --- a/src/core/fround.spec.ts +++ b/src/core/fround.spec.ts @@ -1,19 +1,18 @@ -import { - deepStrictEqual, -} from 'assert'; - -import v = require('..'); +import { equals } from './equals'; +import { fround } from './fround'; +import { map } from './map'; +import { random } from './random'; describe('(v) fround', () => { it('should work as expected', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.map((value: number) => Math.fround(value)), x.fround()); + equals(map(x, (value: number) => Math.fround(value)), x.fround()); }); it('should work as the static equivalent', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.map((value: number) => Math.fround(value)), v.fround(x)); + equals(map(x, (value: number) => Math.fround(value)), fround(x)); }); }); diff --git a/src/core/fround.ts b/src/core/fround.ts index 7f8c71ca..63d6752e 100644 --- a/src/core/fround.ts +++ b/src/core/fround.ts @@ -1,13 +1,39 @@ import { NDArray } from './'; +import { array } from './array'; +import { NDIter } from '../iterator'; -NDArray.fround = (x: T | ArrayLike): T => NDArray.array(x).fround(); +const { fround: f } = Math; -NDArray.prototype.fround = function(this: T): T { - const { data: d1, length: l1 } = this; +/** + * @static + * @memberof module:Globals + * @function fround + * @description Returns the nearest single precision float representation of each element of `x`. + * @param {NDArray} x + * @returns {NDArray} + * @example + * import { fround } from 'vectorious/core/fround'; + * + * fround([-5.05, 5.05]); // => array([-5.050000190734863, 5.050000190734863]) + */ +export const fround = (x: NDArray | ArrayLike): NDArray => array(x).fround(); - let i: number; - for (i = 0; i < l1; i += 1) { - d1[i] = Math.fround(d1[i]); +/** + * @function fround + * @memberof NDArray.prototype + * @description Returns the nearest single precision float representation of each element of current array. + * @returns {this} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([-5.05, 5.05]).fround(); // <=> array([-5.050000190734863, 5.050000190734863]) + */ +export default function(this: NDArray): NDArray { + const { data: d1 } = this; + const iter = new NDIter(this); + + for (const i of iter) { + d1[i!] = f(d1[i!]); } return this; diff --git a/src/core/gauss.bench.ts b/src/core/gauss.bench.ts index 088c0164..63f63def 100644 --- a/src/core/gauss.bench.ts +++ b/src/core/gauss.bench.ts @@ -1,16 +1,17 @@ -import v = require('..'); +import { gauss } from './gauss'; +import { random } from './random'; import { bench } from '../bench'; const { floor, sqrt } = Math; bench( - 'v', + 'NDArray', 'gauss', - (n: number): [v] => [v.random(floor(sqrt(n)), floor(sqrt(n)))], - (x: v): void => { + (n: number) => [random(floor(sqrt(n)), floor(sqrt(n)))], + (x): void => { x.gauss(); }, - (x: v): void => { - v.gauss(x); + (x): void => { + gauss(x); } ); diff --git a/src/core/gauss.spec.ts b/src/core/gauss.spec.ts index 2643010f..c50afcb9 100644 --- a/src/core/gauss.spec.ts +++ b/src/core/gauss.spec.ts @@ -1,27 +1,25 @@ -import { - deepStrictEqual, -} from 'assert'; - -import v = require('..'); +import { equals } from './equals'; +import { gauss } from './gauss'; +import { array } from './array'; describe('(v) gauss', () => { it('should work as expected', () => { - const x: v = v.array([[1, 2, 3], [3, 4, 5]]); - const y: v = v.array([[1, 0, -1], [-0, 1, 2]]); + const x = array([[1, 2, 3], [3, 4, 5]]); + const y = array([[1, 0, -1], [0, 1, 2]]); - deepStrictEqual(y, x.gauss()); + equals(y, x.gauss()); }); it('should work as expected', () => { - const x: v = v.array([[1, 2, -1, -4], [2, 3, -1, -11], [-2, 0, -3, 22]]); - const y: v = v.array([[1, 0, 0, -8], [-0, 1, 0, 1], [-0, -0, 1, -2]]); + const x = array([[1, 2, -1, -4], [2, 3, -1, -11], [-2, 0, -3, 22]]); + const y = array([[1, 0, 0, -8], [0, 1, 0, 1], [0, 0, 1, -2]]); - deepStrictEqual(y, x.gauss()); + equals(y, x.gauss()); }); it('should work as the static equivalent', () => { - const x: v = v.array([[1, 2, 3], [3, 4, 5]]); + const x = array([[1, 2, 3], [3, 4, 5]]); - deepStrictEqual(x.copy().gauss(), v.gauss(x)); + equals(x.copy().gauss(), gauss(x)); }); }); diff --git a/src/core/gauss.ts b/src/core/gauss.ts index 89d47550..b5cf56a5 100644 --- a/src/core/gauss.ts +++ b/src/core/gauss.ts @@ -1,76 +1,118 @@ import { NDArray } from './'; +import { NDIter } from '../iterator'; +import { array } from './array'; +// import { diagonal } from './diagonal'; +import * as lapack from '../lapack'; /** + * @static + * @memberof module:Globals + * @function gauss + * @description * Gauss-Jordan elimination (i.e. returns the reduced row echelon form) of `x`. + * Accelerated with LAPACK `?getrf`. + * @param {NDArray} x + * @returns {NDArray} + * @example + * import { gauss } from 'vectorious/core/gauss'; + * + * gauss([[1, 2, 3], [4, 5, 6]]); // => array([[1, 0, -1], [-0, 1, 2]]) */ -NDArray.gauss = (x: T | ArrayLike): T => NDArray.array(x).gauss(); +export const gauss = (x: NDArray | ArrayLike): NDArray => array(x).gauss(); /** + * @function gauss + * @memberof NDArray.prototype + * @description * Gauss-Jordan elimination (i.e. returns the reduced row echelon form) of the current matrix. + * Accelerated with LAPACK `?getrf`. + * @returns {NDArray} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([[1, 2, 3], [4, 5, 6]]).gauss(); // <=> array([[1, 0, -1], [-0, 1, 2]]) */ -NDArray.prototype.gauss = function(this: T): T { - const [r, c] = this.shape; - const { data: d1 } = this; - - let lead: number = 0; - let leadValue: number; - let pivot: number; - - let i: number; - let j: number; - let k: number; - for (i = 0; i < r; i += 1) { - if (c <= lead) { - return this; - } +export default function(this: NDArray): NDArray { + const { shape: [r, c], data: d1, dtype } = this; - j = i; - while (d1[j * c + lead] === 0) { - j += 1; - if (r === j) { - j = i; - lead += 1; + try { + const { data: d1 } = this; + const ipiv = new Int32Array(Math.min(r, c)); - if (c === lead) { - return this; - } + lapack.getrf(dtype, r, c, d1, c, ipiv); + + const iter = new NDIter(this); + + // Zero out lower triangular part of matrix + let [ci, cj] = iter.coords; + for (const i of iter) { + if (cj < ci) { + d1[i!] = 0; } - } - if (i !== j) { - this.swap(i, j); + [ci, cj] = iter.coords; } + } catch (err) { + let lead: number = 0; + let leadValue: number; + let pivot: number; - pivot = d1[i * c + lead]; - if (pivot !== 0) { - for (k = 0; k < c; k += 1) { - d1[i * c + k] /= pivot; + let i: number; + let j: number; + let k: number; + for (i = 0; i < r; i += 1) { + if (c <= lead) { + return this; } - } - for (j = 0; j < r; j += 1) { - leadValue = d1[j * c + lead]; - if (j !== i) { - for (k = 0; k < c; k += 1) { - d1[j * c + k] -= d1[i * c + k] * leadValue; + j = i; + while (d1[j * c + lead] === 0) { + j += 1; + if (r === j) { + j = i; + lead += 1; + + if (c === lead) { + return this; + } } } - } - lead += 1; - } + if (i !== j) { + this.swap(i, j); + } - for (i = 0; i < r; i += 1) { - pivot = 0; - for (j = 0; j < c; j += 1) { - if (pivot === 0) { - pivot = d1[i * c + j]; + pivot = d1[i * c + lead]; + if (pivot !== 0) { + for (k = 0; k < c; k += 1) { + d1[i * c + k] /= pivot; + } + } + + for (j = 0; j < r; j += 1) { + leadValue = d1[j * c + lead]; + if (j !== i) { + for (k = 0; k < c; k += 1) { + d1[j * c + k] -= d1[i * c + k] * leadValue; + } + } } + + lead += 1; } - if (pivot === 0) { - for (k = 0; k < c; k += 1) { - d1[i * c + k] /= pivot; + for (i = 0; i < r; i += 1) { + pivot = 0; + for (j = 0; j < c; j += 1) { + if (pivot === 0) { + pivot = d1[i * c + j]; + } + } + + if (pivot === 0) { + for (k = 0; k < c; k += 1) { + d1[i * c + k] /= pivot; + } } } } diff --git a/src/core/get.bench.ts b/src/core/get.bench.ts index f0d4f397..d089d3f1 100644 --- a/src/core/get.bench.ts +++ b/src/core/get.bench.ts @@ -1,17 +1,15 @@ -import v = require('..'); +import { get } from './get'; +import { random } from './random'; import { bench } from '../bench'; -const { random, floor } = Math; -const r: (n: number) => v = (n: number): v => - v.array(new Float32Array(n)).fill(random); bench( - 'v', + 'NDArray', 'get', - (n: number): [v, number] => [v.random(n), floor(random() * n)], - (x: v, i: number) => { + (n: number) => [random(n), Math.floor(Math.random() * n)], + (x, i: number) => { x.get(i); }, - (x: v, i: number) => { - v.get(x, i); + (x, i: number) => { + get(x, i); } ); diff --git a/src/core/get.spec.ts b/src/core/get.spec.ts index 8dcd9985..6947044c 100644 --- a/src/core/get.spec.ts +++ b/src/core/get.spec.ts @@ -2,11 +2,13 @@ import { strictEqual, } from 'assert'; -import v = require('..'); +import { get } from './get'; +import { array } from './array'; +import { random } from './random'; describe('(v) get', () => { it('should work as expected', () => { - const x: v = v.random(3); + const x = random(3); strictEqual(x.data[0], x.get(0)); strictEqual(x.data[1], x.get(1)); @@ -14,7 +16,7 @@ describe('(v) get', () => { }); it('should work as expected', () => { - const x: v = v.array([[[-1]], [[-2]], [[3]]]); + const x = array([[[-1]], [[-2]], [[3]]]); strictEqual(x.data[0], x.get(0, 0, 0)); strictEqual(x.data[1], x.get(1, 0, 0)); @@ -22,10 +24,10 @@ describe('(v) get', () => { }); it('should work as the static equivalent', () => { - const x: v = v.random(3); + const x = random(3); - strictEqual(x.data[0], v.get(x, 0)); - strictEqual(x.data[1], v.get(x, 1)); - strictEqual(x.data[2], v.get(x, 2)); + strictEqual(x.data[0], get(x, 0)); + strictEqual(x.data[1], get(x, 1)); + strictEqual(x.data[2], get(x, 2)); }); }); diff --git a/src/core/get.ts b/src/core/get.ts index b7af81cd..917b775f 100644 --- a/src/core/get.ts +++ b/src/core/get.ts @@ -1,9 +1,34 @@ import { NDArray } from './'; +import { array } from './array'; -NDArray.get = (x: T | ArrayLike, ...indices: number[]): number => - NDArray.array(x).get(...indices); +/** + * @static + * @memberof module:Globals + * @function get + * @description Gets the element at `i, j, ..., n` from `x` + * @param {NDArray} x + * @param {Number[]} ...indices + * @returns {Number} + * @example + * import { get } from 'vectorious/core/get'; + * + * get([1, 2, 3], 2); // 3 + */ +export const get = (x: NDArray | ArrayLike, ...indices: number[]): number => + array(x).get(...indices); -NDArray.prototype.get = function(this: T, ...indices: number[]): number { +/** + * @function get + * @memberof NDArray.prototype + * @description Gets the element at `i, j, ..., n` from current vector. + * @param {Number[]} ...indices + * @returns {Number} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([1, 2, 3]).get(2); // 3 + */ +export default function(this: NDArray, ...indices: number[]): number { this.check(...indices); const { data: d1, shape: s1 } = this; diff --git a/src/core/index.ts b/src/core/index.ts index 395c5883..b534cf6b 100644 --- a/src/core/index.ts +++ b/src/core/index.ts @@ -6,1079 +6,437 @@ import { import { flatten, get_dtype, + get_length, get_shape, + get_strides, get_type, is_typed_array, } from '../util'; - -export const inspectSymbol: unique symbol = Symbol.for('nodejs.util.inspect.custom'); - +import { + NDIter, +} from '../iterator'; + +import { default as abs } from './abs'; +import { default as acos } from './acos'; +import { default as acosh } from './acosh'; +import { default as add } from './add'; +import { default as angle } from './angle'; +import { default as asin } from './asin'; +import { default as asinh } from './asinh'; +import { default as atan } from './atan'; +import { default as atanh } from './atanh'; +import { default as augment } from './augment'; +import { default as binOp } from './binOp'; +import { default as cbrt } from './cbrt'; +import { default as ceil } from './ceil'; +import { default as check } from './check'; +import { default as combine } from './combine'; +import { default as copy } from './copy'; +import { default as cos } from './cos'; +import { default as cosh } from './cosh'; +import { default as cross } from './cross'; +import { default as det } from './det'; +import { default as diagonal } from './diagonal'; +import { default as dot } from './dot'; +import { default as eig } from './eig'; +import { default as equals } from './equals'; +import { default as equidimensional } from './equidimensional'; +import { default as equilateral } from './equilateral'; +import { default as exp } from './exp'; +import { default as expm1 } from './expm1'; +import { default as fill } from './fill'; +import { default as floor } from './floor'; +import { default as forEach } from './forEach'; +import { default as fround } from './fround'; +import { default as gauss } from './gauss'; +import { default as get } from './get'; +import { default as inv } from './inv'; +import { default as log } from './log'; +import { default as log10 } from './log10'; +import { default as log1p } from './log1p'; +import { default as log2 } from './log2'; +import { default as lu } from './lu'; +import { default as lu_factor } from './lu_factor'; +import { default as map } from './map'; +import { default as max } from './max'; +import { default as mean } from './mean'; +import { default as min } from './min'; +import { default as multiply } from './multiply'; +import { default as norm } from './norm'; +import { default as normalize } from './normalize'; +import { default as pow } from './pow'; +import { default as prod } from './prod'; +import { default as product } from './product'; +import { default as project } from './project'; +import { default as push } from './push'; +import { default as rank } from './rank'; +import { default as reciprocal } from './reciprocal'; +import { default as reduce } from './reduce'; +import { default as reshape } from './reshape'; +import { default as round } from './round'; +import { default as row_add } from './row_add'; +import { default as scale } from './scale'; +import { default as set } from './set'; +import { default as sign } from './sign'; +import { default as sin } from './sin'; +import { default as sinh } from './sinh'; +import { default as slice } from './slice'; +import { default as solve } from './solve'; +import { default as sqrt } from './sqrt'; +import { default as square } from './square'; +import { default as subtract } from './subtract'; +import { default as sum } from './sum'; +import { default as swap } from './swap'; +import { default as tan } from './tan'; +import { default as tanh } from './tanh'; +import { default as toArray } from './toArray'; +import { default as toString } from './toString'; +import { default as trace } from './trace'; +import { default as transpose } from './transpose'; +import { default as trunc } from './trunc'; + +const inspectSymbol: unique symbol = Symbol.for('nodejs.util.inspect.custom'); + +/** + * @class NDArray + * @description Constructs or copies an NDArray instance. + * @param data + * @param {Object} [options] + * @param {Number[]} [options.shape] + * @param {Number} [options.length] + * @param {Number[]} [options.strides] + * @param {string} [options.dtype] + * @example + * import { NDArray } from 'vectorious'; + * + * new NDArray() // => array([], dtype=float64) + * new NDArray([]) // => array([], dtype=float64) + * new NDArray([1, 2, 3]) // => array([1, 2, 3], dtype=float64) + * new NDArray([[1, 2], [3, 4]]) // => array([ [ 1, 2 ], [ 3, 4 ] ], dtype=float64) + * new NDArray(new Int32Array([1, 2, 3])) // => array([ 1, 2, 3 ], dtype=int32) + * new NDArray([1, 2, 3, 4], { + * shape: [2, 2], + * dtype: 'uint32' + * }) // => array([ [ 1, 2 ], [ 3, 4 ] ], dtype=uint32) + */ export class NDArray implements INDArray { /** - * Returns the absolute value of each element of `x`. - */ - public static abs: (x: T | ArrayLike) => T; - - /** - * Returns the arccosine of each element of `x`. - */ - public static acos: (x: T | ArrayLike) => T; - - /** - * Returns the hyperbolic arccosine of each element of `x`. - */ - public static acosh: (x: T | ArrayLike) => T; - - /** - * Adds `y` multiplied by `alpha` to `x`. - * Accelerated with BLAS `?axpy`. - */ - public static add: (x: T | ArrayLike, y: T | ArrayLike, alpha?: number) => T; - - /** - * Determines the angle between the `x` and `y` - */ - public static angle: (x: T | ArrayLike, y: T | ArrayLike) => number; - - /** - * Constructor alias - */ - public static array: (...args: any[]) => T; - - /** - * Returns the arcsine of each element of `x`. - */ - public static asin: (x: T | ArrayLike) => T; - - /** - * Returns the hyperbolic arcsine of each element of `x`. - */ - public static asinh: (x: T | ArrayLike) => T; - - /** - * Returns the arctangent of each element of `x`. - */ - public static atan: (x: T | ArrayLike) => T; - - /** - * Returns the hyperbolic arctangent of each element of `x`. - */ - public static atanh: (x: T | ArrayLike) => T; - - /** - * Augments `x` and `y`. - */ - public static augment: (x: T | ArrayLike, y: T | ArrayLike) => T; - - /** - * Perform binary operation `f` on `y` in `x`. - */ - public static binOp: ( - x: T | ArrayLike, - y: T | ArrayLike, - f: (a: number, b: number, index: number) => number - ) => T; - - /** - * Returns the cube root of each element of `x`. - */ - public static cbrt: (x: T | ArrayLike) => T; - - /** - * Returns smallest integer greater than or equal to of each element of `x`. - */ - public static ceil: (x: T | ArrayLike) => T; - - /** - * Asserts if indices `i, j, ..., n` are within the bounds of `x` - */ - public static check: (x: T | ArrayLike, ...indices: number[]) => void; - - /** - * Combines the vector `x` with `y` - */ - public static combine: (x: T | ArrayLike, y: T | ArrayLike) => T; - - /** - * Makes a copy of `x` - */ - public static copy: (x: T | ArrayLike) => T; - - /** - * Returns the cosine of each element of `x`. - */ - public static cos: (x: T | ArrayLike) => T; - - /** - * Returns the hyperbolic cosine of each element of `x`. - */ - public static cosh: (x: T | ArrayLike) => T; - - /** - * Computes the cross product of the `x` and the vector `y` - * This operation can only calculated for vectors with three components. - * Otherwise it throws an exception. - * The method returns a new (result) vector. - */ - public static cross: (x: T | ArrayLike, y: T | ArrayLike) => T; - - /** - * Gets the determinant of `x`. - */ - public static det: (x: T | ArrayLike) => number; - - /** - * Gets the diagonal of `x`. - */ - public static diagonal: (x: T | ArrayLike) => T; - - /** - * Performs dot multiplication with `x` and `y`. - * Accelerated with BLAS `?dot`. - */ - public static dot: (x: T | ArrayLike, y: T | ArrayLike) => number; - - /** - * Gets eigenvalues and eigenvectors of `x` using the Jacobi method. - * Accelerated with LAPACK `?geev`. - */ - public static eig: (x: T | ArrayLike) => [T, T]; - - /** - * Checks if `x` and `y` are equal. - */ - public static equals: (x: T | ArrayLike, y: T | ArrayLike) => boolean; - - /** - * Asserts if `x` and `y` have the same shape - */ - public static equidimensional: (x: T | ArrayLike, y: T | ArrayLike) => void; - - /** - * Asserts if `x` and `y` have the same length - */ - public static equilateral: (x: T | ArrayLike, y: T | ArrayLike) => void; - - /** - * Returns e^x of each element of `x`, where x is the argument, - * and e is Euler's constant (2.718…), the base of the natural logarithm. - */ - public static exp: (x: T | ArrayLike) => T; - - /** - * Returns subtracting 1 from exp(x) of each element of `x`. - */ - public static expm1: (x: T | ArrayLike) => T; - - /** - * Creates an identity matrix of size `n` and type `type`. - */ - public static eye: (n: number) => T; - - /** - * Fills `x` with a scalar value - */ - public static fill: ( - x: T | ArrayLike, - value: number | ((index: number) => number) - ) => T; - - /** - * Returns the largest integer less than or equal to a number of each element of `x`. - */ - public static floor: (x: T | ArrayLike) => T; - - /** - * Equivalent to `TypedArray.prototype.forEach`. - */ - public static forEach: ( - x: T, - f: (value: number, i: number, src: TypedArray) => void - ) => void; - - /** - * Returns the nearest single precision float representation of each element of `x`. - */ - public static fround: (x: T | ArrayLike) => T; - - /** - * Gauss-Jordan elimination (i.e. returns the reduced row echelon form) of `x`. - */ - public static gauss: (x: T | ArrayLike) => T; - - /** - * Gets the element at `i, j, ..., n` from `x` - */ - public static get: (x: T | ArrayLike, ...indices: number[]) => number; - - /** - * Determines the inverse of `x`. - * Accelerated with LAPACK `?getri`. - */ - public static inv: (x: T | ArrayLike) => T; - - /** - * Returns the natural logarithm (log_e, also ln) of each element of `x`. - */ - public static log: (x: T | ArrayLike) => T; - - /** - * Returns the natural logarithm (log_e, also ln) of 1 + x for each element of `x`. - */ - public static log10: (x: T | ArrayLike) => T; - - /** - * Returns the base 2 logarithm of each element of `x`. - */ - public static log1p: (x: T | ArrayLike) => T; - - /** - * Returns the base 10 logarithm of each element of `x`. - */ - public static log2: (x: T | ArrayLike) => T; - - /** - * Performs full LU decomposition on `x`. - * Accelerated with LAPACK `?getrf`. + * @name data + * @memberof NDArray.prototype + * @type TypedArray + * @default new Float64Array(0) */ - public static lu: (x: T | ArrayLike) => [T, T, Int32Array]; - - /** - * Performs LU factorization on `x`. - * Accelerated with LAPACK `?getrf`. - */ - public static lu_factor: (x: T | ArrayLike) => [T, Int32Array]; - - /** - * Creates a magic square matrix of `size` - */ - public static magic: (size: number) => T; - - /** - * Equivalent to `TypedArray.prototype.map`. - */ - public static map: ( - x: T | ArrayLike, - f: (value: number, i: number, src: TypedArray) => number - ) => T; - - /** - * Creates a matrix of `r` rows and `c` columns. - */ - public static matrix: (r: number, c: number) => T; - - /** - * Gets the maximum value (largest) element of `x`. - * Accelerated with BLAS `i?amax`. - */ - public static max: (x: T | ArrayLike) => number; - - /** - * Gets the arithmetic mean of `x`. - */ - public static mean: (x: T | ArrayLike) => number; - - /** - * Gets the minimum value (smallest) element of `x`. - */ - public static min: (x: T | ArrayLike) => number; - - /** - * Multiplies two matrices `x` and `y` of matching dimensions. - * Accelerated with BLAS `?gemm`. - */ - public static multiply: (x: T | ArrayLike, y: T | ArrayLike) => T; - - /** - * Calculates the norm of current array (also called L2 norm or Euclidean length). - * Accelerated with BLAS `?nrm2`. - */ - public static norm: (x: T | ArrayLike) => number; - - /** - * Normalizes `x`. - */ - public static normalize: (x: T | ArrayLike) => T; - - /** - * Creates an array containing ones (`1`) of shape `shape` - */ - public static ones: (...shape: number[]) => T; - - /** - * Returns each element of `x` to the exponent power, that is, element^exponent. - */ - public static pow: (x: T | ArrayLike, exponent: number) => T; - - /** - * Product of all elements of `x`. - */ - public static prod: (x: T | ArrayLike) => number; - - /** - * Hadamard product of `x` and `y` - */ - public static product: (x: T | ArrayLike, y: T | ArrayLike) => T; - - /** - * Projects the `y` onto `x` using the projection formula `(y * (x * y / y * y))`. - */ - public static project: (x: T | ArrayLike, y: T | ArrayLike) => T; - - /** - * Pushes a new `value` into `x`. - */ - public static push: (x: T | ArrayLike, value: number) => T; - - /** - * Creates a vector containing random samples from a uniform distribution over `[0, 1)` of shape `shape` - */ - public static random: (...shape: number[]) => T; - - /** - * Creates an array containing a range (can be either ascending or descending) - * of numbers specified by the arguments provided (e.g. `NDArray.range(0, .5, 2)` - * gives an array containing all numbers in the interval `[0, 2)` separated by - * steps of `0.5`) - */ - public static range: (...args: number[]) => T; - - /** - * Finds the rank of `x` using gaussian elimination. - */ - public static rank: (x: T | ArrayLike) => number; - - /** - * Gets the element-wise reciprocal of `x`. - */ - public static reciprocal: (x: T | ArrayLike) => T; - - /** - * Equivalent to `TypedArray.prototype.reduce`. - */ - public static reduce: ( - x: NDArray, - f: (acc: number, value: number, i: number, src: TypedArray) => number, - initialValue?: number - ) => number; - - /** - * Reshapes `x` - */ - public static reshape: (x: T | ArrayLike, ...shape: number[]) => T; - - /** - * Returns the value of each element of `x` rounded to the nearest integer. - */ - public static round: (x: T | ArrayLike) => T; - - /** - * Adds a multiple of one row multiplied by `scalar` to another inside `x`. - */ - public static row_add: ( - x: T | ArrayLike, - dest: number, - source: number, - scalar?: number - ) => T; - - /** - * Multiplies all elements of `x` with a specified `scalar`. - * Accelerated with BLAS `?scal`. - */ - public static scale: (x: T | ArrayLike, scalar: number) => T; - - /** - * Sets the element at `i, j, ..., n` to `value`. - */ - public static set: (x: T, ...args: number[]) => void; - + public data: TypedArray = new Float64Array(0); + /** - * Returns the sign of each element of `x`, indicating - * whether it is positive, negative or zero. + * @name dtype + * @memberof NDArray.prototype + * @type String + * @default 'float64' */ - public static sign: (x: T | ArrayLike) => T; + public dtype: DType = 'float64'; /** - * Returns the sine of each element of `x`. + * @name length + * @memberof NDArray.prototype + * @type Number + * @default 0 */ - public static sin: (x: T | ArrayLike) => T; - - /** - * Returns the hyperbolic sine of each element of `x`. - */ - public static sinh: (x: T | ArrayLike) => T; - - /** - * Slices `x` in the corresponding dimension - */ - public static slice: ( - x: T | ArrayLike, - start?: number, - step?: number, - end?: number - ) => T; - - /** - * Solves the equation AX = B (where A is `x` and B is `y`). - * Accelerated with LAPACK `?gesv`. - */ - public static solve: (x: T | ArrayLike, y: T | ArrayLike) => T; - - /** - * Returns the positive square root of each element of `x`. - */ - public static sqrt: (x: T | ArrayLike) => T; - - /** - * Asserts if `x` is square. - */ - public static square: (x: T | ArrayLike) => void; - - /** - * Subtracts `y` from `x`. - */ - public static subtract: (x: T | ArrayLike, y: T | ArrayLike) => T; - - /** - * Sum of `x` - */ - public static sum: (x: T | ArrayLike) => number; - - /** - * Swaps two rows `i` and `j` in `x`. - */ - public static swap: (x: T | ArrayLike, i: number, j: number) => T; - - /** - * Returns the tangent of each element of `x`. - */ - public static tan: (x: T | ArrayLike) => T; - - /** - * Returns the hyperbolic tangent of each element of `x`. - */ - public static tanh: (x: T | ArrayLike) => T; - - /** - * Converts `x` into a JavaScript array. - */ - public static toArray: (x: T | ArrayLike) => number[]; - - /** - * Converts `x` into a readable formatted string. - */ - public static toString: (x: T | ArrayLike) => string; - - /** - * Gets the trace of `x` (the sum of all diagonal elements). - */ - public static trace: (x: T | ArrayLike) => number; - - /** - * Transposes `x` (mirror across the diagonal). - */ - public static transpose: (x: T | ArrayLike) => T; - - /** - * Returns the integer part of each element of `x`, - * removing any fractional digits. - */ - public static trunc: (x: T | ArrayLike) => T; - - /** - * Creates an array containing zeros (`0`) of shape `shape` - */ - public static zeros: (...shape: number[]) => T; - - public [inspectSymbol]!: () => string; - - /** - * Returns the absolute value of each element of current array. - */ - public abs!: () => this; - - /** - * Returns the arccosine of each element of current array. - */ - public acos!: () => this; - - /** - * Returns the hyperbolic arccosine of each element of current array. - */ - public acosh!: () => this; - - /** - * Adds `x` multiplied by `alpha` to the current array. - * Accelerated with BLAS `?axpy`. - */ - public add!: (y: T, alpha?: number) => this; - - /** - * Determines the angle between the current vector and `x`. - */ - public angle!: (x: T) => number; - - /** - * Returns the arcsine of each element of current array. - */ - public asin!: () => this; - - /** - * Returns the hyperbolic arcsine of each element of current array. - */ - public asinh!: () => this; - - /** - * Returns the arctangent of each element of current array. - */ - public atan!: () => this; - - /** - * Returns the hyperbolic arctangent of each element of current array. - */ - public atanh!: () => this; - - /** - * Augments `x` with current matrix. - */ - public augment!: (x: T) => this; - - /** - * Perform binary operation `f` on `x` in the current array. - */ - public binOp!: (y: T, f: (a: number, b: number, index: number) => number) => this; - - /** - * Returns the cube root of each element of current array. - */ - public cbrt!: () => this; - - /** - * Returns smallest integer greater than or equal to of each element of current array. - */ - public ceil!: () => this; - - /** - * Asserts if indices `i, j, ..., n` are within the bounds of current array - */ - public check!: (...indices: number[]) => void; - - /** - * Combines the current vector with `x` - */ - public combine!: (x: T) => this; - - /** - * Makes a copy of the class and underlying data - */ - public copy!: () => this; - - /** - * Returns the cosine of each element of current array. - */ - public cos!: () => this; - - /** - * Returns the hyperbolic cosine of each element of current array. - */ - public cosh!: () => this; - - /** - * Computes the cross product of the current vector and the vector `x` - * This operation can only be calculated for vectors with three components. - * Otherwise it throws an exception. - * The method returns a new (result) vector. - */ - public cross!: (x: T) => this; - - public data: TypedArray = new Float32Array(0); - - /** - * Gets the determinant of current matrix using LU factorization. - */ - public det!: () => number; - - /** - * Gets the diagonal of current matrix. - */ - public diagonal!: () => this; - - /** - * Performs dot multiplication with `x` and current array - * Accelerated with BLAS `?dot`. - */ - public dot!: (y: T) => number; - - public dtype: DType = 'float32'; - - /** - * Gets eigenvalues and eigenvectors of the current matrix using the Jacobi method. - * Accelerated with LAPACK `?geev`. - */ - public eig!: () => [T, T]; - - /** - * Checks if current array and `x` are equal. - */ - public equals!: (y: T) => boolean; - - /** - * Asserts if current array and `x` have the same shape - */ - public equidimensional!: (y: T) => void; - - /** - * Asserts if current array and `x` have the same length - */ - public equilateral!: (y: T) => void; - - /** - * Returns e^x of each element of current array, where x is the argument, - * and e is Euler's constant (2.718…), the base of the natural logarithm. - */ - public exp!: () => this; - - /** - * Returns subtracting 1 from exp(x) of each element of current array. - */ - public expm1!: () => this; - - /** - * Fills the current array with a scalar value - */ - public fill!: (value: number | ((index: number) => number)) => this; - - /** - * Returns the largest integer less than or equal to a number of each element of current array. - */ - public floor!: () => this; - - /** - * Equivalent to `TypedArray.prototype.forEach`. - */ - public forEach!: (f: (value: number, i: number, src: TypedArray) => void) => void; - - /** - * Returns the nearest single precision float representation of each element of current array. - */ - public fround!: () => this; - - /** - * Gauss-Jordan elimination (i.e. returns the reduced row echelon form) of current matrix. - */ - public gauss!: () => this; - - /** - * Gets the element at `i, j, ..., n` from current vector. - */ - public get!: (...indices: number[]) => number; - - /** - * Determines the inverse of current matrix using Gaussian elimination. - * Accelerated with LAPACK `?getri`. - */ - public inv!: () => this; - public length: number = 0; /** - * Returns the natural logarithm (log_e, also ln) of each element of current array. + * @name shape + * @memberof NDArray.prototype + * @type Number[] + * @default [0] */ - public log!: () => this; - - /** - * Returns the natural logarithm (log_e, also ln) of 1 + x for each element of current array. - */ - public log10!: () => this; - - /** - * Returns the base 2 logarithm of each element of current array. - */ - public log1p!: () => this; - - /** - * Returns the base 10 logarithm of each element of current array. - */ - public log2!: () => this; - - /** - * Performs full LU decomposition on current matrix. - * Accelerated with LAPACK `?getrf`. - */ - public lu!: () => [T, T, Int32Array]; - - /** - * Performs LU factorization on current matrix. - * Accelerated with LAPACK `?getrf`. - */ - public lu_factor!: () => [this, Int32Array]; - - /** - * Equivalent to `TypedArray.prototype.map`. - */ - public map!: (f: (value: number, i: number, src: TypedArray) => number) => this; - - /** - * Gets the maximum value (smallest) element of current array. - */ - public max!: () => number; - - /** - * Gets the arithmetic mean of current array. - */ - public mean!: () => number; - - /** - * Gets the minimum value (smallest) element of current array. - */ - public min!: () => number; - - /** - * Multiplies current matrix with `x`. - * Accelerated with BLAS `?gemm`. - */ - public multiply!: (x: T) => this; - - /** - * Calculates the norm of current array (also called L2 norm or Euclidean length). - * Accelerated with BLAS `?nrm2`. - */ - public norm!: () => number; - - /** - * Normalizes current vector. - */ - public normalize!: () => this; - - /** - * Returns each element of current array to the exponent power, that is, element^exponent. - */ - public pow!: (exponent: number) => this; - - /** - * Product of all elements of current array - */ - public prod!: () => number; - - /** - * Hadamard product of current matrix and `x` - */ - public product!: (y: T) => this; - - /** - * Projects the current vector onto `x` using the projection formula `(y * (x * y / y * y))`. - */ - public project!: (x: T) => this; - - /** - * Pushes a new `value` into current vector. - */ - public push!: (value: number) => this; - - /** - * Finds the rank of current matrix using gaussian elimination. - */ - public rank!: () => number; - - /** - * Gets the element-wise reciprocal of current array. - */ - public reciprocal!: () => this; - - /** - * Equivalent to `TypedArray.prototype.reduce`. - */ - public reduce!: ( - f: (acc: number, value: number, i: number, src: TypedArray) => number, - initialValue?: number - ) => number; - - /** - * Reshapes current array - */ - public reshape!: (...shape: number[]) => this; - - /** - * Returns the value of each element of current array rounded to the nearest integer. - */ - public round!: () => this; - - /** - * Adds a multiple of one row multiplied by `scalar` to another inside current matrix. - */ - public row_add!: (dest: number, source: number, scalar?: number) => this; - - /** - * Multiplies all elements of current array with a specified `scalar`. - * Accelerated with BLAS `?scal`. - */ - public scale!: (scalar: number) => this; - - /** - * Sets the element at `i, j, ..., n` to `value`. - */ - public set!: (...args: number[]) => void; - public shape: number[] = [0]; /** - * Returns the sign of each element of current array, indicating - * whether it is positive, negative or zero. - */ - public sign!: () => this; - - /** - * Returns the sine of each element of current array. - */ - public sin!: () => this; - - /** - * Returns the hyperbolic sine of each element of current array. - */ - public sinh!: () => this; - - /** - * Slices the current array in the corresponding dimension - */ - public slice!: (start?: number, step?: number, end?: number) => this; - - /** - * Solves the equation AX = B (where A is current matrix and B is `x`). - * Accelerated with LAPACK `?gesv`. - */ - public solve!: (x: T) => this; - - /** - * Returns the positive square root of each element of current array. - */ - public sqrt!: () => this; - - /** - * Asserts if current matrix is square. - */ - public square!: () => void; - - /** - * Subtracts `x` from the current array. - * Accelerated with BLAS `?axpy`. - */ - public subtract!: (y: T) => this; - - /** - * Sum of array elements - */ - public sum!: () => number; - - /** - * Swaps two rows `i` and `j` in current matrix - */ - public swap!: (i: number, j: number) => this; - - /** - * Returns the tangent of each element of current array. - */ - public tan!: () => this; - - /** - * Returns the hyperbolic tangent of each element of current array. - */ - public tanh!: () => this; - - /** - * Converts current vector into a JavaScript array. - */ - public toArray!: () => number[]; - - /** - * Converts current vector into a readable formatted string. - */ - public toString!: () => string; - - /** - * Gets the trace of the matrix (the sum of all diagonal elements). - */ - public trace!: () => number; - - /** - * Transposes current matrix (mirror across the diagonal). - */ - public transpose!: () => this; - - /** - * Returns the integer part of each element of current array, - * removing any fractional digits. - */ - public trunc!: () => this; + * @name strides + * @memberof NDArray.prototype + * @type Number[] + * @default [0] + */ + public strides: number[] = [0]; + + public [inspectSymbol]: () => string = toString; + public abs = abs; + public acos = acos; + public acosh = acosh; + public add = add; + public angle = angle; + public asin = asin; + public asinh = asinh; + public atan = atan; + public atanh = atanh; + public augment = augment; + public binOp = binOp; + public cbrt = cbrt; + public ceil = ceil; + public check = check; + public combine = combine; + public copy = copy; + public cos = cos; + public cosh = cosh; + public cross = cross; + public det = det; + public diagonal = diagonal; + public dot = dot; + public eig = eig; + public equals = equals; + public equidimensional = equidimensional; + public equilateral = equilateral; + public exp = exp; + public expm1 = expm1; + public fill = fill; + public floor = floor; + public forEach = forEach; + public fround = fround; + public gauss = gauss; + public get = get; + public inv = inv; + public log = log; + public log10 = log10; + public log1p = log1p; + public log2 = log2; + public lu = lu; + public lu_factor = lu_factor; + public map = map; + public max = max; + public mean = mean; + public min = min; + public multiply = multiply; + public norm = norm; + public normalize = normalize; + public pow = pow; + public prod = prod; + public product = product; + public project = project; + public push = push; + public rank = rank; + public reciprocal = reciprocal; + public reduce = reduce; + public reshape = reshape; + public round = round; + public row_add = row_add; + public scale = scale; + public set = set; + public sign = sign; + public sin = sin; + public sinh = sinh; + public slice = slice; + public solve = solve; + public sqrt = sqrt; + public square = square; + public subtract = subtract; + public sum = sum; + public swap = swap; + public tan = tan; + public tanh = tanh; + public toArray = toArray; + public toString = toString; + public trace = trace; + public transpose = transpose; + public trunc = trunc; public constructor( data?: any, - options?: any + options?: { + shape?: number[]; + length?: number; + strides?: number[]; + dtype?: DType; + } ) { - if (is_typed_array(data)) { - this.data = data as TypedArray; - this.shape = typeof options === 'object' && options.hasOwnProperty('shape') ? options.shape : [this.data.length]; - this.length = this.data.length; - this.dtype = typeof options === 'object' && options.hasOwnProperty('dtype') ? options.dtype : get_dtype(data); - } else if (data instanceof Array) { - this.data = new (get_type(this.dtype))(flatten(data)); - this.shape = get_shape(data); - this.length = this.data.length; - } else if (data instanceof NDArray) { + if (!data) { + return; + } + + if (data instanceof NDArray) { return data.copy(); } + + if (data instanceof NDIter) { + if (!options || !options.dtype) { + throw new Error('dtype is missing'); + } + + if (data.shape) { + options.shape = data.shape; + } + + const length = data.length; + data = new (get_type(options.dtype))(length); + } + + const { + shape = get_shape(data), + length = get_length(shape), + strides = get_strides(shape), + dtype = get_dtype(data), + } = options || {}; + + this.data = is_typed_array(data) ? data : new (get_type(dtype))(flatten(data)); + this.shape = shape; + this.length = length; + this.dtype = dtype; + this.strides = strides; } /** - * Equivalent to this.get(0) + * @name x + * @memberof NDArray.prototype + * @description Gets or sets the value at index 0 + * @type Number */ public get x(): number { return this.get(0); } - /** - * Equivalent to this.set(0, value) - */ public set x(value: number) { this.set(0, value); } /** - * Equivalent to this.get(1) + * @name y + * @memberof NDArray.prototype + * @description Gets or sets the value at index 1 + * @type Number */ public get y(): number { return this.get(1); } - /** - * Equivalent to this.set(1, value) - */ public set y(value: number) { this.set(1, value); } /** - * Equivalent to this.get(2) + * @name z + * @memberof NDArray.prototype + * @description Gets or sets the value at index 2 + * @type Number */ public get z(): number { return this.get(2); } - /** - * Equivalent to this.set(2, value) - */ public set z(value: number) { this.set(2, value); } /** - * Equivalent to this.get(3) + * @name w + * @memberof NDArray.prototype + * @description Gets or sets the value at index 3 + * @type Number */ public get w(): number { return this.get(3); } - /** - * Equivalent to this.set(3, value) - */ public set w(value: number) { this.set(3, value); } /** - * Transposes current matrix (mirror across the diagonal). + * @name T + * @memberof NDArray.prototype + * @description Short for this.copy().transpose() + * @type NDArray */ - public get T(): this { - return this.transpose(); + public get T() { + return this.copy().transpose(); } } -import './abs'; -import './acos'; -import './acosh'; -import './add'; -import './angle'; -import './array'; -import './asin'; -import './asinh'; -import './atan'; -import './atanh'; -import './augment'; -import './binOp'; -import './cbrt'; -import './ceil'; -import './check'; -import './combine'; -import './copy'; -import './cos'; -import './cosh'; -import './cross'; -import './det'; -import './diagonal'; -import './dot'; -import './eig'; -import './equals'; -import './equidimensional'; -import './equilateral'; -import './exp'; -import './expm1'; -import './eye'; -import './fill'; -import './floor'; -import './forEach'; -import './fround'; -import './gauss'; -import './get'; -import './inv'; -import './log'; -import './log10'; -import './log1p'; -import './log2'; -import './lu'; -import './lu_factor'; -import './magic'; -import './map'; -import './matrix'; -import './max'; -import './mean'; -import './min'; -import './multiply'; -import './norm'; -import './normalize'; -import './ones'; -import './pow'; -import './prod'; -import './product'; -import './project'; -import './push'; -import './random'; -import './range'; -import './rank'; -import './reciprocal'; -import './reduce'; -import './reshape'; -import './round'; -import './row_add'; -import './scale'; -import './set'; -import './sign'; -import './sin'; -import './sinh'; -import './slice'; -import './solve'; -import './sqrt'; -import './square'; -import './subtract'; -import './sum'; -import './swap'; -import './tan'; -import './tanh'; -import './toArray'; -import './toString'; -import './trace'; -import './transpose'; -import './trunc'; -import './zeros'; +export { abs } from './abs'; +export { acos } from './acos'; +export { acosh } from './acosh'; +export { add } from './add'; +export { angle } from './angle'; +export { array } from './array'; +export { asin } from './asin'; +export { asinh } from './asinh'; +export { atan } from './atan'; +export { atanh } from './atanh'; +export { augment } from './augment'; +export { binOp } from './binOp'; +export { cbrt } from './cbrt'; +export { ceil } from './ceil'; +export { check } from './check'; +export { combine } from './combine'; +export { copy } from './copy'; +export { cos } from './cos'; +export { cosh } from './cosh'; +export { cross } from './cross'; +export { det } from './det'; +export { diagonal } from './diagonal'; +export { dot } from './dot'; +export { eig } from './eig'; +export { equals } from './equals'; +export { equidimensional } from './equidimensional'; +export { equilateral } from './equilateral'; +export { exp } from './exp'; +export { expm1 } from './expm1'; +export { eye } from './eye'; +export { fill } from './fill'; +export { floor } from './floor'; +export { forEach } from './forEach'; +export { fround } from './fround'; +export { gauss } from './gauss'; +export { get } from './get'; +export { inv } from './inv'; +export { log } from './log'; +export { log10 } from './log10'; +export { log1p } from './log1p'; +export { log2 } from './log2'; +export { lu } from './lu'; +export { lu_factor } from './lu_factor'; +export { magic } from './magic'; +export { map } from './map'; +export { matrix } from './matrix'; +export { max } from './max'; +export { mean } from './mean'; +export { min } from './min'; +export { multiply } from './multiply'; +export { norm } from './norm'; +export { normalize } from './normalize'; +export { ones } from './ones'; +export { pow } from './pow'; +export { prod } from './prod'; +export { product } from './product'; +export { project } from './project'; +export { push } from './push'; +export { random } from './random'; +export { range } from './range'; +export { rank } from './rank'; +export { reciprocal } from './reciprocal'; +export { reduce } from './reduce'; +export { reshape } from './reshape'; +export { round } from './round'; +export { row_add } from './row_add'; +export { scale } from './scale'; +export { set } from './set'; +export { sign } from './sign'; +export { sin } from './sin'; +export { sinh } from './sinh'; +export { slice } from './slice'; +export { solve } from './solve'; +export { sqrt } from './sqrt'; +export { square } from './square'; +export { subtract } from './subtract'; +export { sum } from './sum'; +export { swap } from './swap'; +export { tan } from './tan'; +export { tanh } from './tanh'; +export { toArray } from './toArray'; +export { toString } from './toString'; +export { trace } from './trace'; +export { transpose } from './transpose'; +export { trunc } from './trunc'; +export { zeros } from './zeros'; try { (window as any).v = NDArray; diff --git a/src/core/inv.bench.ts b/src/core/inv.bench.ts index e901f673..ade3d9fe 100644 --- a/src/core/inv.bench.ts +++ b/src/core/inv.bench.ts @@ -1,16 +1,17 @@ -import v = require('..'); +import { inv } from './inv'; +import { random } from './random'; import { bench } from '../bench'; const { floor, sqrt } = Math; bench( - 'v', + 'NDArray', 'inv', - (n: number): [v] => [v.random(floor(sqrt(n)), floor(sqrt(n)))], - (x: v): void => { + (n: number) => [random(floor(sqrt(n)), floor(sqrt(n)))], + (x): void => { x.inv(); }, - (x: v): void => { - v.inv(x); + (x): void => { + inv(x); } ); diff --git a/src/core/inv.spec.ts b/src/core/inv.spec.ts index 043162a6..54c6721a 100644 --- a/src/core/inv.spec.ts +++ b/src/core/inv.spec.ts @@ -1,40 +1,41 @@ import { - deepStrictEqual, throws, } from 'assert'; -import v = require('..'); +import { equals } from './equals'; +import { inv } from './inv'; +import { array } from './array'; describe('(v) inv', () => { it('should throw error if matrix is not square', () => { - const x: v = v.array([[1, 2]]); + const x = array([[1, 2]]); throws(() => { x.inv(); }, Error); }); it('should work as expected', () => { - const x: v = v.array([ + const x = array([ [2, -1, 0], [-1, 2, -1], [0, -1, 2], ]); - const y: v = v.array([ + const y = array([ [3 / 4, 1 / 2, 1 / 4], [1 / 2, 1, 1 / 2], [1 / 4, 1 / 2, 3 / 4], ]); // Need to round result to avoid floating point rounding errors, e.g. 0.99999999994 - deepStrictEqual(y, x.inv().map((value: number) => Number(value.toFixed(2)))); + equals(y, x.inv()); }); it('should work as the static equivalent', () => { - const x: v = v.array([ + const x = array([ [2, -1, 0], [-1, 2, -1], [0, -1, 2], ]); - deepStrictEqual(x.copy().inv(), v.inv(x)); + equals(x.copy().inv(), inv(x)); }); }); diff --git a/src/core/inv.ts b/src/core/inv.ts index e46f3b8f..17b53008 100644 --- a/src/core/inv.ts +++ b/src/core/inv.ts @@ -1,60 +1,75 @@ -import { get_type } from '../util'; - import { NDArray } from './'; +import { NDIter } from '../iterator'; +import { array } from './array'; +import { eye } from './eye'; +import { augment } from './augment'; +import { zeros } from './zeros'; +import * as lapack from '../lapack'; -let nlapack: any; -try { - nlapack = require('nlapack'); -} catch (err) {} - -NDArray.inv = (x: T | ArrayLike): T => NDArray.array(x).inv(); +/** + * @static + * @memberof module:Globals + * @function inv + * @description + * Determines the inverse of `x`. + * Accelerated with LAPACK `?getrf` and `?getri`. + * @param {NDArray} x + * @returns {NDArray} + * @example + * import { inv } from 'vectorious/core/inv'; + * + * inv([[2, -1, 0], [-1, 2, -1], [0, -1, 2]]); // => array([[0.75, 0.5, 0.25], [0.5, 1, 0.5], [0.25, 0.5, 0.75]]) + */ +export const inv = (x: NDArray | ArrayLike): NDArray => array(x).inv(); -NDArray.prototype.inv = function(this: T): T { +/** + * @function inv + * @memberof NDArray.prototype + * @description + * Determines the inverse of current matrix using Gaussian elimination. + * Accelerated with LAPACK `?getri`. + * @returns {this} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([[2, -1, 0], [-1, 2, -1], [0, -1, 2]]).inv(); // <=> array([[0.75, 0.5, 0.25], [0.5, 1, 0.5], [0.25, 0.5, 0.75]]) + */ +export default function(this: NDArray): NDArray { this.square(); - const [n] = this.shape; + const { shape: [n], dtype } = this; try { - if (!['float32', 'float64'].includes(this.dtype)) { - this.dtype = 'float32'; - this.data = get_type(this.dtype).from(this.data); - } - const { data: d1 } = this; - const ipiv: Int32Array = new Int32Array(n); - if (this.dtype === 'float64') { - nlapack.dgetrf(n, n, d1, n, ipiv); - nlapack.dgetri(n, d1, n, ipiv); - } else if (this.dtype === 'float32') { - nlapack.sgetrf(n, n, d1, n, ipiv); - nlapack.sgetri(n, d1, n, ipiv); - } + const ipiv = new Int32Array(n); + + lapack.getrf(dtype, n, n, d1, n, ipiv); + lapack.getri(dtype, n, d1, n, ipiv); return this; } catch (err) { - const eye: T = NDArray.eye(n); - const rref: T = NDArray.augment(this, eye).gauss(); - const left: T = NDArray.zeros(n, n); - const right: T = NDArray.zeros(n, n); + const identity = eye(n); + const rref = augment(this, identity).gauss(); + const left = zeros(n, n); + const right = zeros(n, n); const { data: d1 } = rref; const { data: d2 } = left; const { data: d3 } = right; - let i: number; - let j: number; - - for (i = 0; i < n; i += 1) { - for (j = 0; j < n + n; j += 1) { - if (j < n) { - d2[i * n + j] = d1[i * (n + n) + j]; - } else { - d3[i * n + (j - n)] = d1[i * (n + n) + j]; - } + const iter = new NDIter(rref); + let [ci, cj] = iter.coords; + for (const i of iter) { + if (cj < n) { + d2[ci * n + cj] = d1[i!]; + } else { + d3[ci * n + (cj - n)] = d1[i!]; } + + [ci, cj] = iter.coords; } - if (!left.equals(eye)) { + if (!left.equals(identity)) { throw new Error('matrix is not invertible'); } diff --git a/src/core/log.bench.ts b/src/core/log.bench.ts index 8d0319ac..562f177e 100644 --- a/src/core/log.bench.ts +++ b/src/core/log.bench.ts @@ -1,14 +1,15 @@ -import v = require('..'); +import { log } from './log'; +import { random } from './random'; import { bench } from '../bench'; bench( - 'v', + 'NDArray', 'log', - (n: number): [v] => [v.random(n)], - (x: v): void => { + (n: number) => [random(n)], + (x): void => { x.log(); }, - (x: v): void => { - v.log(x); + (x): void => { + log(x); } ); diff --git a/src/core/log.spec.ts b/src/core/log.spec.ts index dddace13..f907133f 100644 --- a/src/core/log.spec.ts +++ b/src/core/log.spec.ts @@ -1,19 +1,18 @@ -import { - deepStrictEqual, -} from 'assert'; - -import v = require('..'); +import { equals } from './equals'; +import { log } from './log'; +import { map } from './map'; +import { random } from './random'; describe('(v) log', () => { it('should work as expected', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.map((value: number) => Math.log(value)), x.log()); + equals(map(x, (value: number) => Math.log(value)), x.log()); }); it('should work as the static equivalent', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.map((value: number) => Math.log(value)), v.log(x)); + equals(map(x, (value: number) => Math.log(value)), log(x)); }); }); diff --git a/src/core/log.ts b/src/core/log.ts index e8964cd4..cfb70704 100644 --- a/src/core/log.ts +++ b/src/core/log.ts @@ -1,13 +1,39 @@ import { NDArray } from './'; +import { array } from './array'; +import { NDIter } from '../iterator'; -NDArray.log = (x: T | ArrayLike): T => NDArray.array(x).log(); +const { log: f } = Math; -NDArray.prototype.log = function(this: T): T { - const { data: d1, length: l1 } = this; +/** + * @static + * @memberof module:Globals + * @function log + * @description Returns the natural logarithm (log_e, also ln) of each element of `x`. + * @param {NDArray} x + * @returns {NDArray} + * @example + * import { log } from 'vectorious/core/log'; + * + * log([1, 2, 3]); // => array([0, 0.6931471824645996, 1.0986123085021973]) + */ +export const log = (x: NDArray | ArrayLike): NDArray => array(x).log(); - let i: number; - for (i = 0; i < l1; i += 1) { - d1[i] = Math.log(d1[i]); +/** + * @function log + * @memberof NDArray.prototype + * @description Returns the natural logarithm (log_e, also ln) of each element of current array. + * @returns {this} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([1, 2, 3]).log(); // <=> array([0, 0.6931471824645996, 1.0986123085021973]) + */ +export default function(this: NDArray): NDArray { + const { data: d1 } = this; + const iter = new NDIter(this); + + for (const i of iter) { + d1[i!] = f(d1[i!]); } return this; diff --git a/src/core/log10.bench.ts b/src/core/log10.bench.ts index b097b3cc..a8f3b4bb 100644 --- a/src/core/log10.bench.ts +++ b/src/core/log10.bench.ts @@ -1,14 +1,15 @@ -import v = require('..'); +import { log10 } from './log10'; +import { random } from './random'; import { bench } from '../bench'; bench( - 'v', + 'NDArray', 'log10', - (n: number): [v] => [v.random(n)], - (x: v): void => { + (n: number) => [random(n)], + (x): void => { x.log10(); }, - (x: v): void => { - v.log10(x); + (x): void => { + log10(x); } ); diff --git a/src/core/log10.spec.ts b/src/core/log10.spec.ts index d93d027b..f39cdd0b 100644 --- a/src/core/log10.spec.ts +++ b/src/core/log10.spec.ts @@ -1,19 +1,18 @@ -import { - deepStrictEqual, -} from 'assert'; - -import v = require('..'); +import { equals } from './equals'; +import { log10 } from './log10'; +import { map } from './map'; +import { random } from './random'; describe('(v) log10', () => { it('should work as expected', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.map((value: number) => Math.log10(value)), x.log10()); + equals(map(x, (value: number) => Math.log10(value)), x.log10()); }); it('should work as the static equivalent', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.map((value: number) => Math.log10(value)), v.log10(x)); + equals(map(x, (value: number) => Math.log10(value)), log10(x)); }); }); diff --git a/src/core/log10.ts b/src/core/log10.ts index 10e9d7d2..0cbac76d 100644 --- a/src/core/log10.ts +++ b/src/core/log10.ts @@ -1,13 +1,39 @@ import { NDArray } from './'; +import { array } from './array'; +import { NDIter } from '../iterator'; -NDArray.log10 = (x: T | ArrayLike): T => NDArray.array(x).log10(); +const { log10: f } = Math; -NDArray.prototype.log10 = function(this: T): T { - const { data: d1, length: l1 } = this; +/** + * @static + * @memberof module:Globals + * @function log10 + * @description Returns the base 10 logarithm of each element of `x`. + * @param {NDArray} x + * @returns {NDArray} + * @example + * import { log10 } from 'vectorious/core/log10'; + * + * log10([10, 100, 1000]); // => array([1, 2, 3]) + */ +export const log10 = (x: NDArray | ArrayLike): NDArray => array(x).log10(); - let i: number; - for (i = 0; i < l1; i += 1) { - d1[i] = Math.log10(d1[i]); +/** + * @function log10 + * @memberof NDArray.prototype + * @description Returns the base 10 logarithm of each element of current array. + * @returns {this} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([10, 100, 1000]).log10(); // <=> array([1, 2, 3]) + */ +export default function(this: NDArray): NDArray { + const { data: d1 } = this; + const iter = new NDIter(this); + + for (const i of iter) { + d1[i!] = f(d1[i!]); } return this; diff --git a/src/core/log1p.bench.ts b/src/core/log1p.bench.ts index 57dbd09c..db5e0753 100644 --- a/src/core/log1p.bench.ts +++ b/src/core/log1p.bench.ts @@ -1,14 +1,15 @@ -import v = require('..'); +import { log1p } from './log1p'; +import { random } from './random'; import { bench } from '../bench'; bench( - 'v', + 'NDArray', 'log1p', - (n: number): [v] => [v.random(n)], - (x: v): void => { + (n: number) => [random(n)], + (x): void => { x.log1p(); }, - (x: v): void => { - v.log1p(x); + (x): void => { + log1p(x); } ); diff --git a/src/core/log1p.spec.ts b/src/core/log1p.spec.ts index 286d69e5..7c8c51de 100644 --- a/src/core/log1p.spec.ts +++ b/src/core/log1p.spec.ts @@ -1,19 +1,18 @@ -import { - deepStrictEqual, -} from 'assert'; - -import v = require('..'); +import { equals } from './equals'; +import { log1p } from './log1p'; +import { map } from './map'; +import { random } from './random'; describe('(v) log1p', () => { it('should work as expected', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.map((value: number) => Math.log1p(value)), x.log1p()); + equals(map(x, (value: number) => Math.log1p(value)), x.log1p()); }); it('should work as the static equivalent', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.map((value: number) => Math.log1p(value)), v.log1p(x)); + equals(map(x, (value: number) => Math.log1p(value)), log1p(x)); }); }); diff --git a/src/core/log1p.ts b/src/core/log1p.ts index c379c449..35be0168 100644 --- a/src/core/log1p.ts +++ b/src/core/log1p.ts @@ -1,13 +1,39 @@ import { NDArray } from './'; +import { array } from './array'; +import { NDIter } from '../iterator'; -NDArray.log1p = (x: T | ArrayLike): T => NDArray.array(x).log1p(); +const { log1p: f } = Math; -NDArray.prototype.log1p = function(this: T): T { - const { data: d1, length: l1 } = this; +/** + * @static + * @memberof module:Globals + * @function log1p + * @description Returns the natural logarithm (log_e, also ln) of 1 + x for each element of `x`. + * @param {NDArray} x + * @returns {NDArray} + * @example + * import { log1p } from 'vectorious/core/log1p'; + * + * log1p([1, 2, 3]); // => array([0.6931471824645996, 1.0986123085021973, 1.3862943649291992]) + */ +export const log1p = (x: NDArray | ArrayLike): NDArray => array(x).log1p(); - let i: number; - for (i = 0; i < l1; i += 1) { - d1[i] = Math.log1p(d1[i]); +/** + * @function log1p + * @memberof NDArray.prototype + * @description Returns the natural logarithm (log_e, also ln) of 1 + x for each element of current array. + * @returns {this} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([1, 2, 3]); // <=> array([0.6931471824645996, 1.0986123085021973, 1.3862943649291992]) + */ +export default function(this: NDArray): NDArray { + const { data: d1 } = this; + const iter = new NDIter(this); + + for (const i of iter) { + d1[i!] = f(d1[i!]); } return this; diff --git a/src/core/log2.bench.ts b/src/core/log2.bench.ts index a5d0c6ea..6cbdb7ce 100644 --- a/src/core/log2.bench.ts +++ b/src/core/log2.bench.ts @@ -1,14 +1,15 @@ -import v = require('..'); +import { log2 } from './log2'; +import { random } from './random'; import { bench } from '../bench'; bench( - 'v', + 'NDArray', 'log2', - (n: number): [v] => [v.random(n)], - (x: v): void => { + (n: number) => [random(n)], + (x): void => { x.log2(); }, - (x: v): void => { - v.log2(x); + (x): void => { + log2(x); } ); diff --git a/src/core/log2.spec.ts b/src/core/log2.spec.ts index cdf0af43..ec038ac2 100644 --- a/src/core/log2.spec.ts +++ b/src/core/log2.spec.ts @@ -1,19 +1,18 @@ -import { - deepStrictEqual, -} from 'assert'; - -import v = require('..'); +import { equals } from './equals'; +import { log2 } from './log2'; +import { map } from './map'; +import { random } from './random'; describe('(v) log2', () => { it('should work as expected', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.map((value: number) => Math.log2(value)), x.log2()); + equals(map(x, (value: number) => Math.log2(value)), x.log2()); }); it('should work as the static equivalent', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.map((value: number) => Math.log2(value)), v.log2(x)); + equals(map(x, (value: number) => Math.log2(value)), log2(x)); }); }); diff --git a/src/core/log2.ts b/src/core/log2.ts index 0672ef46..951a9226 100644 --- a/src/core/log2.ts +++ b/src/core/log2.ts @@ -1,13 +1,39 @@ import { NDArray } from './'; +import { array } from './array'; +import { NDIter } from '../iterator'; -NDArray.log2 = (x: T | ArrayLike): T => NDArray.array(x).log2(); +const { log2: f } = Math; -NDArray.prototype.log2 = function(this: T): T { - const { data: d1, length: l1 } = this; +/** + * @static + * @memberof module:Globals + * @function log2 + * @description Returns the base 2 logarithm of each element of `x`. + * @param {NDArray} x + * @returns {NDArray} + * @example + * import { log2 } from 'vectorious/core/log2'; + * + * log2([1, 2, 4]); // => array([0, 1, 2]) + */ +export const log2 = (x: NDArray | ArrayLike): NDArray => array(x).log2(); - let i: number; - for (i = 0; i < l1; i += 1) { - d1[i] = Math.log2(d1[i]); +/** + * @function log2 + * @memberof NDArray.prototype + * @description Returns the base 2 logarithm of each element of current array. + * @returns {this} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([1, 2, 4]).log2(); // => array([0, 1, 2]) + */ +export default function(this: NDArray): NDArray { + const { data: d1 } = this; + const iter = new NDIter(this); + + for (const i of iter) { + d1[i!] = f(d1[i!]); } return this; diff --git a/src/core/lu.bench.ts b/src/core/lu.bench.ts index f507c56f..503ea2e4 100644 --- a/src/core/lu.bench.ts +++ b/src/core/lu.bench.ts @@ -1,16 +1,17 @@ -import v = require('..'); +import { lu } from './lu'; +import { random } from './random'; import { bench } from '../bench'; const { floor, sqrt } = Math; bench( - 'v', + 'NDArray', 'lu', - (n: number): [v] => [v.random(floor(sqrt(n)), floor(sqrt(n)))], - (x: v): void => { + (n: number) => [random(floor(sqrt(n)), floor(sqrt(n)))], + (x): void => { x.lu(); }, - (x: v): void => { - v.lu(x); + (x): void => { + lu(x); } ); diff --git a/src/core/lu.spec.ts b/src/core/lu.spec.ts index d7556555..5be71311 100644 --- a/src/core/lu.spec.ts +++ b/src/core/lu.spec.ts @@ -1,35 +1,33 @@ -import { - deepStrictEqual, -} from 'assert'; - -import v = require('..'); +import { equals } from './equals'; +import { lu } from './lu'; +import { array } from './array'; describe('(v) lu', () => { it('should work as expected', () => { - const x: v = v.array([[1, 3, 5], [2, 4, 7], [1, 1, 0]]); - const ys: v[] = [ - v.array([[1, 0, 0], [0.5, 1, 0], [0.5, -1, 1]]), - v.array([[2, 4, 7], [0, 1, 1.5], [0, 0, -2]]), + const x = array([[1, 3, 5], [2, 4, 7], [1, 1, 0]]); + const ys = [ + array([[1, 0, 0], [0.5, 1, 0], [0.5, -1, 1]]), + array([[2, 4, 7], [0, 1, 1.5], [0, 0, -2]]), ]; - deepStrictEqual(ys, x.lu().slice(0, 2)); + equals(ys, x.lu().slice(0, 2)); }); it('should work as expected', () => { - const x: v = v.array([[11, 9, 24, 2], [1, 5, 2, 6], [3, 17, 18, 1], [2, 5, 7, 1]]); - const ys: v[] = [ - v.array([[1, 0, 0, 0], [0.27273, 1, 0, 0], [0.09091, 0.2875, 1, 0], [0.18182, 0.23125, 0.0036, 1]]), - v.array([[11, 9, 24, 2], [0, 14.54545, 11.45455, 0.45455], [0, 0, -3.475, 5.6875], [0, 0, 0, 0.51079]]), + const x = array([[11, 9, 24, 2], [1, 5, 2, 6], [3, 17, 18, 1], [2, 5, 7, 1]]); + const ys = [ + array([[1, 0, 0, 0], [0.27273, 1, 0, 0], [0.09091, 0.2875, 1, 0], [0.18182, 0.23125, 0.0036, 1]]), + array([[11, 9, 24, 2], [0, 14.54545, 11.45455, 0.45455], [0, 0, -3.475, 5.6875], [0, 0, 0, 0.51079]]), ]; - const [lower, upper]: [v, v, Int32Array] = x.lu(); - deepStrictEqual(ys[0], lower.map((value: number) => Number(value.toFixed(5)))); - deepStrictEqual(ys[1], upper.map((value: number) => Number(value.toFixed(5)))); + const [lower, upper] = x.lu(); + equals(ys[0], lower.map((value: number) => Number(value.toFixed(5)))); + equals(ys[1], upper.map((value: number) => Number(value.toFixed(5)))); }); it('should work as the static equivalent', () => { - const x: v = v.array([[1, 1, 1]]); + const x = array([[1, 1, 1]]); - deepStrictEqual(x.copy().lu(), v.lu(x)); + equals(x.copy().lu(), lu(x)); }); }); diff --git a/src/core/lu.ts b/src/core/lu.ts index 371bc010..4a68b383 100644 --- a/src/core/lu.ts +++ b/src/core/lu.ts @@ -1,32 +1,55 @@ import { NDArray } from './'; +import { NDIter } from '../iterator'; +import { array } from './array'; /** - * Performs full LU decomposition on a matrix. + * @static + * @memberof module:Globals + * @function lu + * @description + * Performs full LU decomposition on `x`. + * Accelerated with LAPACK `?getrf`. + * @param {NDArray} x + * @returns {Array} + * @example + * import { lu } from 'vectorious/core/lu'; + * + * lu([[1, 3, 5], [2, 4, 7], [1, 1, 0]]); // => [array([[1, 0, 0], [0.5, 1, 0], [0.5, -1, 1]]), array([[2, 4, 7], [0, 1, 1.5], [0, 0, -2]]), Int32Array([2, 2, 3])] */ -NDArray.lu = (x: T | ArrayLike): [T, T, Int32Array] => - NDArray.array(x).lu(); +export const lu = (x: NDArray | ArrayLike): [NDArray, NDArray, Int32Array] => + array(x).lu(); -NDArray.prototype.lu = function(this: T): [T, T, Int32Array] { - const [r, c] = this.shape; +/** + * @function lu + * @memberof NDArray.prototype + * @description + * Performs full LU decomposition on current matrix. + * Accelerated with LAPACK `?getrf`. + * @returns {Array} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([[1, 3, 5], [2, 4, 7], [1, 1, 0]]).lu(); // => [array([[1, 0, 0], [0.5, 1, 0], [0.5, -1, 1]]), array([[2, 4, 7], [0, 1, 1.5], [0, 0, -2]]), Int32Array([2, 2, 3])] + */ +export default function (this: NDArray): [NDArray, NDArray, Int32Array] { const [LU, ipiv] = this.copy().lu_factor(); - const L: T = LU.copy(); - const T: T = LU.copy(); + const L = LU.copy(); + const U = LU.copy(); const { data: d1 } = L; - const { data: d2 } = T; + const { data: d2 } = U; - let i: number; - let j: number; - for (i = 0; i < r; i += 1) { - for (j = i; j < c; j += 1) { - d1[i * c + j] = i === j ? 1 : 0; - } - } + const iter = new NDIter(LU); - for (i = 0; i < r; i += 1) { - for (j = 0; j < i && j < c; j += 1) { - d2[i * c + j] = 0; + let [ci, cj] = iter.coords; + for (const i of iter) { + if (cj < ci) { + d2[i!] = 0; + } else { + d1[i!] = ci === cj ? 1 : 0; } + + [ci, cj] = iter.coords; } - return [L, T, ipiv]; + return [L, U, ipiv]; }; diff --git a/src/core/lu_factor.bench.ts b/src/core/lu_factor.bench.ts index 3fd10bc2..f32ef17e 100644 --- a/src/core/lu_factor.bench.ts +++ b/src/core/lu_factor.bench.ts @@ -1,16 +1,17 @@ -import v = require('..'); +import { lu_factor } from './lu_factor'; +import { random } from './random'; import { bench } from '../bench'; const { floor, sqrt } = Math; bench( - 'v', + 'NDArray', 'lu_factor', - (n: number): [v] => [v.random(floor(sqrt(n)), floor(sqrt(n)))], - (x: v): void => { + (n: number) => [random(floor(sqrt(n)), floor(sqrt(n)))], + (x): void => { x.lu_factor(); }, - (x: v): void => { - v.lu_factor(x); + (x): void => { + lu_factor(x); } ); diff --git a/src/core/lu_factor.spec.ts b/src/core/lu_factor.spec.ts index 43326285..3c8e5704 100644 --- a/src/core/lu_factor.spec.ts +++ b/src/core/lu_factor.spec.ts @@ -1,23 +1,21 @@ -import { - deepStrictEqual, -} from 'assert'; - -import v = require('..'); +import { equals } from './equals'; +import { lu_factor } from './lu_factor'; +import { array } from './array'; describe('(v) lu_factor', () => { it('should work as expected', () => { - const x: v = v.array([[1, 3, 5], [2, 4, 7], [1, 1, 0]]); - const y: v = v.array([[2, 4, 7], [0.5, 1, 1.5], [0.5, -1, -2]]); + const x = array([[1, 3, 5], [2, 4, 7], [1, 1, 0]]); + const y = array([[2, 4, 7], [0.5, 1, 1.5], [0.5, -1, -2]]); const ipiv: Int32Array = new Int32Array([2, 2, 3]); const [LU, piv] = x.lu_factor(); - deepStrictEqual(ipiv, piv); - deepStrictEqual(y, LU); + equals(ipiv, piv); + equals(y, LU); }); it('should work as the static equivalent', () => { - const x: v = v.array([[1, 3, 5], [2, 4, 7], [1, 1, 0]]); + const x = array([[1, 3, 5], [2, 4, 7], [1, 1, 0]]); - deepStrictEqual(x.copy().lu_factor(), v.lu_factor(x)); + equals(x.copy().lu_factor(), lu_factor(x)); }); }); diff --git a/src/core/lu_factor.ts b/src/core/lu_factor.ts index 24c85b87..1fb45be0 100644 --- a/src/core/lu_factor.ts +++ b/src/core/lu_factor.ts @@ -1,34 +1,43 @@ -import { get_type } from '../util'; - import { NDArray } from './'; +import { array } from './array'; +import * as lapack from '../lapack'; -let nlapack: any; -try { - nlapack = require('nlapack'); -} catch (err) {} - -NDArray.lu_factor = (x: T | ArrayLike): [T, Int32Array] => - NDArray.array(x).lu_factor(); +/** + * @static + * @memberof module:Globals + * @function lu_factor + * @description + * Performs LU factorization on `x`. + * Accelerated with LAPACK `?getrf`. + * @param {NDArray} x + * @returns {Array} + * @example + * import { lu_factor } from 'vectorious/core/lu_factor'; + * + * lu_factor([[1, 3, 5], [2, 4, 7], [1, 1, 0]]); // => [array([[2, 4, 7], [0.5, 1, 1.5], [0.5, -1, -2]]), Int32Array([2, 2, 3])] + */ +export const lu_factor = (x: NDArray | ArrayLike): [NDArray, Int32Array] => + array(x).lu_factor(); -NDArray.prototype.lu_factor = function(this: T): [T, Int32Array] { - const [n] = this.shape; +/** + * @function lu_factor + * @memberof NDArray.prototype + * @description + * Performs LU factorization on current matrix. + * Accelerated with LAPACK `?getrf`. + * @returns {Array} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([[1, 3, 5], [2, 4, 7], [1, 1, 0]]).lu_factor(); // <=> [array([[2, 4, 7], [0.5, 1, 1.5], [0.5, -1, -2]]), Int32Array([2, 2, 3])] + */ +export default function(this: NDArray): [NDArray, Int32Array] { + const { data: d1, shape: [n], dtype } = this; const ipiv: Int32Array = new Int32Array(n); try { - if (!['float32', 'float64'].includes(this.dtype)) { - this.dtype = 'float32'; - this.data = get_type(this.dtype).from(this.data); - } - - const { data: d1 } = this; - if (this.dtype === 'float64') { - nlapack.dgetrf(n, n, d1, n, ipiv); - } else if (this.dtype === 'float32') { - nlapack.sgetrf(n, n, d1, n, ipiv); - } + lapack.getrf(dtype, n, n, d1, n, ipiv); } catch (err) { - const { data: d1 } = this; - let max: number; let abs: number; let diag: number; diff --git a/src/core/magic.bench.ts b/src/core/magic.bench.ts index 359e26a5..0e8b5af7 100644 --- a/src/core/magic.bench.ts +++ b/src/core/magic.bench.ts @@ -1,10 +1,11 @@ -import v = require('..'); +import { magic } from './magic'; import { bench } from '../bench'; + bench( - 'v', + 'NDArray', 'magic', (n: number): [number] => [n], (n: number): void => { - v.magic(n); + magic(n); } ); diff --git a/src/core/magic.spec.ts b/src/core/magic.spec.ts index 05f49cf3..1025bf33 100644 --- a/src/core/magic.spec.ts +++ b/src/core/magic.spec.ts @@ -1,16 +1,17 @@ import { - deepStrictEqual, throws, } from 'assert'; -import v = require('..'); +import { equals } from './equals'; +import { magic } from './magic'; +import { array } from './array'; describe('(v) magic', () => { it('should throw error if invalid size', () => { - throws(() => { v.magic(-1); }, Error); + throws(() => { magic(-1); }, Error); }); it('should work as expected', () => { - deepStrictEqual(v.array([[8, 1, 6], [3, 5, 7], [4, 9, 2]]), v.magic(3)); + equals(array([[8, 1, 6], [3, 5, 7], [4, 9, 2]]), magic(3)); }); }); diff --git a/src/core/magic.ts b/src/core/magic.ts index 7b33a2e4..ee981952 100644 --- a/src/core/magic.ts +++ b/src/core/magic.ts @@ -1,25 +1,37 @@ import { TypedArray } from '../types'; import { NDArray } from './'; +import { NDIter } from '../iterator'; -const magicHelper: (n: number, x: number, y: number) => number = (n: number, x: number, y: number): number => - (x + y * 2 + 1) % n; - -NDArray.magic = function(this: new(...args: any[]) => T, size: number): T { - if (size < 0) { - throw new Error('invalid size'); +/** + * @static + * @memberof module:Globals + * @function magic + * @description Creates a magic square matrix of size `n` + * @param {Number} n + * @returns {NDArray} + * @example + * import { magic } from 'vectorious/core/magic'; + * + * magic(3); // => array([[8, 1, 6], [3, 5, 7], [4, 9, 2]]) + */ +export const magic = (n: number): NDArray => { + if (n < 0) { + throw new Error('invalid n'); } - const d1: TypedArray = new Float32Array(size * size); + const d1: TypedArray = new Float64Array(n * n); + const magic = new NDArray(d1, { shape: [n, n] }); + const iter = new NDIter(magic); + + let [ci, cj] = iter.coords; + for (const i of iter) { + const a = n - ci - 1; + const b = n - cj - 1; - let i: number; - let j: number; - for (i = 0; i < size; i += 1) { - for (j = 0; j < size; j += 1) { - d1[(size - i - 1) * size + (size - j - 1)] = - magicHelper(size, size - j - 1, i) * size + magicHelper(size, j, i) + 1; - } + d1[i!] = ((cj + a * 2 + 1) % n) * n + ((b + a * 2 + 1) % n) + 1; + [ci, cj] = iter.coords; } - return new this(d1, { shape: [size, size] }); + return magic; }; diff --git a/src/core/map.bench.ts b/src/core/map.bench.ts index 9c8f9e37..094a6ae8 100644 --- a/src/core/map.bench.ts +++ b/src/core/map.bench.ts @@ -1,14 +1,15 @@ -import v = require('..'); +import { map } from './map'; +import { random } from './random'; import { bench } from '../bench'; bench( - 'v', + 'NDArray', 'map', - (n: number): [v] => [v.random(n)], - (x: v): void => { + (n: number) => [random(n)], + (x): void => { x.map((value: number) => value); }, - (x: v): void => { - v.map(x, (value: number) => value); + (x): void => { + map(x, (value: number) => value); } ); diff --git a/src/core/map.spec.ts b/src/core/map.spec.ts index 46f85660..2546510b 100644 --- a/src/core/map.spec.ts +++ b/src/core/map.spec.ts @@ -1,19 +1,17 @@ -import { - deepStrictEqual, -} from 'assert'; - -import v = require('..'); +import { equals } from './equals'; +import { map } from './map'; +import { array } from './array'; describe('(v) map', () => { it('should work as expected', () => { - const x: v = v.array([1, 2, 3]); + const x = array([1, 2, 3]); - deepStrictEqual(v.array([1, 4, 9]), x.map((value: number) => value * value)); + equals(array([1, 4, 9]), x.map((value: number) => value * value)); }); it('should work as the static equivalent', () => { - const x: v = v.array([1, 2, 3]); + const x = array([1, 2, 3]); - deepStrictEqual(v.array([1, 4, 9]), v.map(x, (value: number) => value * value)); + equals(array([1, 4, 9]), map(x, (value: number) => value * value)); }); }); diff --git a/src/core/map.ts b/src/core/map.ts index e8bbd1a6..7d424265 100644 --- a/src/core/map.ts +++ b/src/core/map.ts @@ -1,24 +1,47 @@ import { TypedArray } from '../types'; import { NDArray } from './'; +import { NDIter } from '../iterator'; +import { array } from './array'; -NDArray.map = ( - x: T | ArrayLike, +/** + * @static + * @memberof module:Globals + * @function map + * @description Equivalent to `TypedArray.prototype.map`. + * @param {NDArray} x + * @returns {NDArray} + * @example + * import { map } from 'vectorious/core/map'; + * + * map([1, 2, 3], value => -value); // => array([-1, -2, -3]) + */ +export const map = ( + x: NDArray | ArrayLike, f: (value: number, i: number, src: TypedArray) => number -): T => NDArray.array(x).map(f); +): NDArray => array(x).map(f); -NDArray.prototype.map = function( - this: T, +/** + * @function map + * @memberof NDArray.prototype + * @description Equivalent to `TypedArray.prototype.map`. + * @returns {this} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([1, 2, 3]).map(value => -value); // => array([-1, -2, -3]) + */ +export default function( + this: NDArray, f: (value: number, i: number, src: TypedArray) => number -): T { - const { data: d1, length: l1 } = this; - const mapped: T = this.copy(); - const { data: d2 } = mapped; +): NDArray { + const { data: d1 } = this; + const iter = new NDIter(this); + const map = f.bind(this); - let i: number; - for (i = 0; i < l1; i += 1) { - d2[i] = f.call(mapped, d1[i], i, d1); + for (const i of iter) { + map(d1[i!], i!, d1); } - return mapped; + return this; }; diff --git a/src/core/matrix.bench.ts b/src/core/matrix.bench.ts index 5936cc93..00dde542 100644 --- a/src/core/matrix.bench.ts +++ b/src/core/matrix.bench.ts @@ -1,10 +1,11 @@ -import v = require('..'); +import { matrix } from './matrix'; import { bench } from '../bench'; + bench( - 'v', + 'NDArray', 'matrix', (n: number): [number] => [n], (n: number): void => { - v.matrix(n, n); + matrix(n, n); } ); diff --git a/src/core/matrix.spec.ts b/src/core/matrix.spec.ts index 8c69b7b1..cb7420ce 100644 --- a/src/core/matrix.spec.ts +++ b/src/core/matrix.spec.ts @@ -1,19 +1,17 @@ -import { - deepStrictEqual, -} from 'assert'; - -import v = require('..'); +import { equals } from './equals'; +import { matrix } from './matrix'; +import { array } from './array'; describe('(v) matrix', () => { it('should work as expected', () => { - const x: v = v.array(new Float32Array([0, 0, 0]), { shape: [3, 1] }); + const x = array(new Float64Array([0, 0, 0]), { shape: [3, 1] }); - deepStrictEqual(x, v.matrix(3, 1)); + equals(x, matrix(3, 1)); }); it('should work as expected in two dimensions', () => { - const x: v = v.array([[0, 0], [0, 0]]); + const x = array([[0, 0], [0, 0]]); - deepStrictEqual(x, v.matrix(2, 2)); + equals(x, matrix(2, 2)); }); }); diff --git a/src/core/matrix.ts b/src/core/matrix.ts index 779db347..5fba2bda 100644 --- a/src/core/matrix.ts +++ b/src/core/matrix.ts @@ -1,8 +1,20 @@ import { NDArray } from './'; -NDArray.matrix = function(this: new(...args: any[]) => T, r: number, c: number): T { - return new this( - new Float32Array(r * c), +/** + * @static + * @memberof module:Globals + * @function matrix + * @description Creates a matrix of `r` rows and `c` columns. + * @param {Number} r + * @param {Number} c + * @returns {NDArray} + * @example + * import { matrix } from 'vectorious/core/matrix'; + * + * matrix(2, 2); // => array([[0, 0], [0, 0]]) + */ +export const matrix = (r: number, c: number): NDArray => + new NDArray( + new Float64Array(r * c), { shape: [r, c] } ); -}; diff --git a/src/core/max.bench.ts b/src/core/max.bench.ts index 841e1ab5..5107d18a 100644 --- a/src/core/max.bench.ts +++ b/src/core/max.bench.ts @@ -1,14 +1,15 @@ -import v = require('..'); +import { max } from './max'; +import { random } from './random'; import { bench } from '../bench'; bench( - 'v', + 'NDArray', 'max', - (n: number): [v] => [v.random(n)], - (x: v): void => { + (n: number) => [random(n)], + (x): void => { x.max(); }, - (x: v): void => { - v.max(x); + (x): void => { + max(x); } ); diff --git a/src/core/max.spec.ts b/src/core/max.spec.ts index 8af8a48c..910b053e 100644 --- a/src/core/max.spec.ts +++ b/src/core/max.spec.ts @@ -2,13 +2,14 @@ import { strictEqual, } from 'assert'; -import v = require('..'); +import { max } from './max'; +import { array } from './array'; describe('(v) max', () => { it('should find the maximum number in arrays', () => { - const x: v = v.array([1, 2, 3]); - const y: v = v.array([3, -1, 1]); - const z: v = v.array([2, 5, 1]); + const x = array([1, 2, 3]); + const y = array([3, -1, 1]); + const z = array([2, 5, 1]); strictEqual(3, x.max()); strictEqual(3, y.max()); @@ -16,12 +17,12 @@ describe('(v) max', () => { }); it('should work as the static equivalent', () => { - const x: v = v.array([1, 2, 3]); - const y: v = v.array([3, -1, 1]); - const z: v = v.array([2, 5, 1]); + const x = array([1, 2, 3]); + const y = array([3, -1, 1]); + const z = array([2, 5, 1]); - strictEqual(3, v.max(x)); - strictEqual(3, v.max(y)); - strictEqual(5, v.max(z)); + strictEqual(3, max(x)); + strictEqual(3, max(y)); + strictEqual(5, max(z)); }); }); diff --git a/src/core/max.ts b/src/core/max.ts index 2e7adbd1..decec26a 100644 --- a/src/core/max.ts +++ b/src/core/max.ts @@ -1,41 +1,52 @@ -import { get_type } from '../util'; - import { NDArray } from './'; - -let nblas: any; -try { - nblas = require('nblas'); -} catch (err) {} - -NDArray.max = (x: T | ArrayLike): number => NDArray.array(x).max(); - -NDArray.prototype.max = function(this: T): number { - const { length: l1 } = this; - let result: number = Number.NEGATIVE_INFINITY; +import { array } from './array'; +import { NDIter } from '../iterator'; +import * as blas from '../blas'; + +/** + * @static + * @memberof module:Globals + * @function max + * @description + * Gets the maximum value (largest) element of `x`. + * Accelerated with BLAS `i?amax`. + * @param {NDArray} x + * @returns {Number} + * @example + * import { max } from 'vectorious/core/max'; + * + * max([1, 2, 3]); // => 3 + */ +export const max = (x: NDArray | ArrayLike): number => array(x).max(); + +/** + * @function max + * @memberof NDArray.prototype + * @description + * Gets the maximum value (smallest) element of current array. + * Accelerated with BLAS `i?amax`. + * @returns {Number} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([1, 2, 3]).max(); // => 3 + */ +export default function(this: NDArray): number { + const { data: d1, length: l1, dtype } = this; + let max: number = Number.NEGATIVE_INFINITY; try { - if (!['float32', 'float64'].includes(this.dtype)) { - this.dtype = 'float32'; - this.data = get_type(this.dtype).from(this.data); - } - - const { data: d1 } = this; - if (this.dtype === 'float64') { - result = d1[nblas.idamax(l1, d1, 1)]; - } - - if (this.dtype === 'float32') { - result = d1[nblas.isamax(l1, d1, 1)]; - } + max = d1[blas.iamax(dtype, l1, d1, 1)]; } catch (err) { - const { data: d1 } = this; + const iter = new NDIter(this); - let i: number; - for (i = 0; i < l1; i += 1) { - const value: number = d1[i]; - result = result < value ? value : result; + for (const i of iter) { + const value = d1[i!]; + if (max < value) { + max = value; + } } } - return result; + return max; }; diff --git a/src/core/mean.bench.ts b/src/core/mean.bench.ts index 7983832d..6b4a6a7d 100644 --- a/src/core/mean.bench.ts +++ b/src/core/mean.bench.ts @@ -1,14 +1,15 @@ -import v = require('..'); +import { mean } from './mean'; +import { random } from './random'; import { bench } from '../bench'; bench( - 'v', + 'NDArray', 'mean', - (n: number): [v] => [v.random(n)], - (x: v): void => { + (n: number) => [random(n)], + (x): void => { x.mean(); }, - (x: v): void => { - v.mean(x); + (x): void => { + mean(x); } ); diff --git a/src/core/mean.spec.ts b/src/core/mean.spec.ts index 463601f9..e4a7769e 100644 --- a/src/core/mean.spec.ts +++ b/src/core/mean.spec.ts @@ -1,19 +1,18 @@ -import { - deepStrictEqual, -} from 'assert'; +import { strictEqual } from 'assert'; -import v = require('..'); +import { mean } from './mean'; +import { random } from './random'; describe('(v) mean', () => { it('should work as expected', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.reduce((acc: number, value: number) => acc + value, 0) / x.length, x.mean()); + strictEqual(x.reduce((acc: number, value: number) => acc + value, 0) / x.length, x.mean()); }); it('should work as the static equivalent', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.reduce((acc: number, value: number) => acc + value, 0) / x.length, v.mean(x)); + strictEqual(x.reduce((acc: number, value: number) => acc + value, 0) / x.length, mean(x)); }); }); diff --git a/src/core/mean.ts b/src/core/mean.ts index 86c8eb02..4e4eb5df 100644 --- a/src/core/mean.ts +++ b/src/core/mean.ts @@ -1,14 +1,38 @@ import { NDArray } from './'; +import { array } from './array'; +import { NDIter } from '../iterator'; -NDArray.mean = (x: T | ArrayLike): number => NDArray.array(x).mean(); +/** + * @static + * @memberof module:Globals + * @function mean + * @description Gets the arithmetic mean of `x`. + * @param {NDArray} x + * @returns {Number} + * @example + * import { mean } from 'vectorious/core/mean'; + * + * mean([1, 2, 3]); // => 2 + */ +export const mean = (x: NDArray | ArrayLike): number => array(x).mean(); -NDArray.prototype.mean = function(this: T): number { +/** + * @function mean + * @memberof NDArray.prototype + * @description Gets the arithmetic mean of current array. + * @returns {Number} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([1, 2, 3]).mean(); // => 2 + */ +export default function(this: NDArray): number { const { data: d1, length: l1 } = this; + const iter = new NDIter(this); - let i: number; let mean: number = 0; - for (i = 0; i < l1; i += 1) { - mean += d1[i]; + for (const i of iter) { + mean += d1[i!]; } return mean / l1; diff --git a/src/core/min.bench.ts b/src/core/min.bench.ts index b6055425..84e7dcb4 100644 --- a/src/core/min.bench.ts +++ b/src/core/min.bench.ts @@ -1,14 +1,15 @@ -import v = require('..'); +import { min } from './min'; +import { random } from './random'; import { bench } from '../bench'; bench( - 'v', + 'NDArray', 'min', - (n: number): [v] => [v.random(n)], - (x: v): void => { + (n: number) => [random(n)], + (x): void => { x.min(); }, - (x: v): void => { - v.min(x); + (x): void => { + min(x); } ); diff --git a/src/core/min.spec.ts b/src/core/min.spec.ts index b16ef312..b9821728 100644 --- a/src/core/min.spec.ts +++ b/src/core/min.spec.ts @@ -2,13 +2,14 @@ import { strictEqual, } from 'assert'; -import v = require('..'); +import { min } from './min'; +import { array } from './array'; describe('(v) min', () => { it('should find the minimum number in arrays', () => { - const x: v = v.array([1, 2, 3]); - const y: v = v.array([3, -1, 1]); - const z: v = v.array([2, 5, 1]); + const x = array([1, 2, 3]); + const y = array([3, -1, 1]); + const z = array([2, 5, 1]); strictEqual(1, x.min()); strictEqual(-1, y.min()); @@ -16,12 +17,12 @@ describe('(v) min', () => { }); it('should work as the static equivalent', () => { - const x: v = v.array([1, 2, 3]); - const y: v = v.array([3, -1, 1]); - const z: v = v.array([2, 5, 1]); + const x = array([1, 2, 3]); + const y = array([3, -1, 1]); + const z = array([2, 5, 1]); - strictEqual(1, v.min(x)); - strictEqual(-1, v.min(y)); - strictEqual(1, v.min(z)); + strictEqual(1, min(x)); + strictEqual(-1, min(y)); + strictEqual(1, min(z)); }); }); diff --git a/src/core/min.ts b/src/core/min.ts index 99a1d6a3..1dc40d0d 100644 --- a/src/core/min.ts +++ b/src/core/min.ts @@ -1,16 +1,43 @@ import { NDArray } from './'; +import { array } from './array'; +import { NDIter } from '../iterator'; -NDArray.min = (x: T | ArrayLike): number => NDArray.array(x).min(); +/** + * @static + * @memberof module:Globals + * @function min + * @description Gets the minimum value (smallest) element of `x`. + * @param {NDArray} x + * @returns {Number} + * @example + * import { min } from 'vectorious/core/min'; + * + * min([1, 2, 3]); // => 1 + */ +export const min = (x: NDArray | ArrayLike): number => array(x).min(); -NDArray.prototype.min = function(this: T): number { - const { data, length } = this; +/** + * @function min + * @memberof NDArray.prototype + * @description Gets the minimum value (smallest) element of current array. + * @returns {Number} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([1, 2, 3]).min(); // 1 + */ +export default function(this: NDArray): number { + const { data: d1 } = this; - let result: number = Number.POSITIVE_INFINITY; + const iter = new NDIter(this); - let i: number; - for (i = 0; i < length; i += 1) { - result = result < data[i] ? result : data[i]; + let min: number = Number.POSITIVE_INFINITY; + for (const i of iter) { + const value = d1[i!]; + if (min > value) { + min = value; + } } - return result; + return min; }; diff --git a/src/core/multiply.bench.ts b/src/core/multiply.bench.ts index 89a079bd..bac501de 100644 --- a/src/core/multiply.bench.ts +++ b/src/core/multiply.bench.ts @@ -1,16 +1,17 @@ -import v = require('..'); +import { multiply } from './multiply'; +import { random } from './random'; import { bench } from '../bench'; const { floor, sqrt } = Math; bench( - 'v', + 'NDArray', 'multiply', - (n: number): [v, v] => [v.random(floor(sqrt(n)), floor(sqrt(n))), v.random(floor(sqrt(n)), floor(sqrt(n)))], - (x: v, y: v): void => { + (n: number) => [random(floor(sqrt(n)), floor(sqrt(n))), random(floor(sqrt(n)), floor(sqrt(n)))], + (x, y): void => { x.multiply(y); }, - (x: v, y: v): void => { - v.multiply(x, y); + (x, y): void => { + multiply(x, y); } ); diff --git a/src/core/multiply.spec.ts b/src/core/multiply.spec.ts index 8f1dcf89..cdd955c1 100644 --- a/src/core/multiply.spec.ts +++ b/src/core/multiply.spec.ts @@ -1,47 +1,48 @@ import { - deepStrictEqual, throws, } from 'assert'; -import v = require('..'); +import { equals } from './equals'; +import { multiply } from './multiply'; +import { array } from './array'; describe('(v) multiply', () => { it('should throw error if sizes do not match', () => { - const x: v = v.array([[1, 2], [3, 4]]); - const y: v = v.array([[1, 2]]); + const x = array([[1, 2], [3, 4]]); + const y = array([[1, 2]]); throws(() => { x.multiply(y); }, Error); }); it('should work as expected', () => { - const x: v = v.array([[1, 2]]); - const y: v = v.array([[1], [2]]); - const z: v = v.array([[5]]); - const u: v = v.array([[1, 2], [2, 4]]); + const x = array([[1, 2]]); + const y = array([[1], [2]]); + const z = array([[5]]); + const u = array([[1, 2], [2, 4]]); - deepStrictEqual(z, x.copy().multiply(y)); - deepStrictEqual(u, y.copy().multiply(x)); + equals(z, x.copy().multiply(y)); + equals(u, y.copy().multiply(x)); }); it('should work as expected', () => { - const x: v = v.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]); - const y: v = v.array([[ 30, 36, 42], [ 66, 81, 96], [102, 126, 150]]); + const x = array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]); + const y = array([[30, 36, 42], [66, 81, 96], [102, 126, 150]]); - deepStrictEqual(y, x.multiply(x)); + equals(y, x.multiply(x)); }); it('should work as expected', () => { - const x: v = v.array([[0, 1, 0], [1, 0, 0], [0, 0, 1]]); - const y: v = v.array([[1, 3, 5], [2, 4, 7], [1, 1, 0]]); - const z: v = v.array([[2, 4, 7], [1, 3, 5], [1, 1, 0]]); + const x = array([[0, 1, 0], [1, 0, 0], [0, 0, 1]]); + const y = array([[1, 3, 5], [2, 4, 7], [1, 1, 0]]); + const z = array([[2, 4, 7], [1, 3, 5], [1, 1, 0]]); - deepStrictEqual(z, x.multiply(y)); + equals(z, x.multiply(y)); }); it('should work as the static equivalent', () => { - const x: v = v.array([[1], [2], [3]]); - const y: v = v.array([[1, 1, 1]]); + const x = array([[1], [2], [3]]); + const y = array([[1, 1, 1]]); - deepStrictEqual(x.copy().multiply(y), v.multiply(x, y)); + equals(x.copy().multiply(y), multiply(x, y)); }); }); diff --git a/src/core/multiply.ts b/src/core/multiply.ts index 1ef9bb98..3c6085f7 100644 --- a/src/core/multiply.ts +++ b/src/core/multiply.ts @@ -1,59 +1,68 @@ -import { get_type } from '../util'; - import { NDArray } from './'; +import { NDIter } from '../iterator'; +import { array } from './array'; +import { matrix } from './matrix'; +import * as blas from '../blas'; -let nblas: any; -try { - nblas = require('nblas'); -} catch (err) {} - -NDArray.multiply = (x: T | ArrayLike, y: T | ArrayLike): T => - NDArray.array(x).multiply(NDArray.array(y)); +/** + * @static + * @memberof module:Globals + * @function multiply + * @description + * Multiplies two matrices `x` and `y` of matching dimensions. + * Accelerated with BLAS `?gemm`. + * @param {NDArray} x + * @param {NDArray} y + * @returns {NDArray} + * @example + * import { multiply } from 'vectorious/core/multiply'; + * + * multiply([[1, 2]], [[1], [2]]); // => array([[5]]) + */ +export const multiply = (x: NDArray | ArrayLike, y: NDArray | ArrayLike): NDArray => + array(x).multiply(array(y)); -NDArray.prototype.multiply = function(this: T, x: T): T { - const [r1, c1] = this.shape; - const [r2, c2] = x.shape; +/** + * @function multiply + * @memberof NDArray.prototype + * @description + * Multiplies current matrix with `x`. + * Accelerated with BLAS `?gemm`. + * @param {NDArray} x + * @returns {NDArray} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([[1, 2]]).multiply([[1], [2]]); // <=> array([[5]]) + */ +export default function(this: NDArray, x: NDArray): NDArray { + const { shape: [r1, c1], data: d1, dtype } = this; + const { shape: [r2, c2], data: d2 } = x; if (c1 !== r2) { throw new Error('sizes do not match'); } - const y: NDArray = NDArray.matrix(r1, c2); + const y = matrix(r1, c2); + const { data: d3 } = y; try { - if (!['float32', 'float64'].includes(this.dtype)) { - this.dtype = 'float32'; - this.data = get_type(this.dtype).from(this.data); - } - - const { data: d1 } = this; - const { data: d2 } = x; - const { data: d3 } = y; - if (this.dtype === 'float64') { - nblas.dgemm(nblas.NoTrans, nblas.NoTrans, r1, c2, c1, 1, d1, c1, d2, c2, 0, d3, c2); - } else if (this.dtype === 'float32') { - nblas.sgemm(nblas.NoTrans, nblas.NoTrans, r1, c2, c1, 1, d1, c1, d2, c2, 0, d3, c2); - } + blas.gemm(dtype, blas.NoTrans, blas.NoTrans, r1, c2, c1, 1, d1, c1, d2, c2, 0, d3, c2); } catch (err) { - const { data: d1 } = this; - const { data: d2 } = x; - const { data: d3 } = y; - - let i: number; - let j: number; - let k: number; - let sum: number; - for (i = 0; i < r1; i += 1) { - for (j = 0; j < c2; j += 1) { - sum = 0; - for (k = 0; k < c1; k += 1) { - sum += d1[i * c1 + k] * d2[k * c2 + j]; - } - - d3[i * c2 + j] = sum; + const iter = new NDIter(y); + + let k; + let [ci, cj] = iter.coords; + for (const i of iter) { + let sum = 0; + for (k = 0; k < c1; k += 1) { + sum += d1[ci * c1 + k] * d2[k * c2 + cj]; } + + d3[i!] = sum; + [ci, cj] = iter.coords; } } - return y as T; + return y; }; diff --git a/src/core/norm.bench.ts b/src/core/norm.bench.ts index 902ef933..bf5d56fd 100644 --- a/src/core/norm.bench.ts +++ b/src/core/norm.bench.ts @@ -1,14 +1,15 @@ -import v = require('..'); +import { norm } from './norm'; +import { random } from './random'; import { bench } from '../bench'; bench( - 'v', + 'NDArray', 'norm', - (n: number): [v] => [v.random(n)], - (x: v): void => { + (n: number) => [random(n)], + (x): void => { x.norm(); }, - (x: v): void => { - v.norm(x); + (x): void => { + norm(x); } ); diff --git a/src/core/norm.spec.ts b/src/core/norm.spec.ts index c09b1e22..72ea5ac7 100644 --- a/src/core/norm.spec.ts +++ b/src/core/norm.spec.ts @@ -2,18 +2,19 @@ import { strictEqual, } from 'assert'; -import v = require('..'); +import { norm } from './norm'; +import { array } from './array'; describe('(v) norm', () => { it('should return 0 if empty vector', () => { - strictEqual(0, v.array().norm()); + strictEqual(0, array().norm()); }); it('should work as expected', () => { - strictEqual(4, v.array([1, 1, 1, 2, 3]).norm()); + strictEqual(4, array([1, 1, 1, 2, 3]).norm()); }); it('should work as the static equivalent', () => { - strictEqual(4, v.norm(v.array([1, 1, 1, 2, 3]))); + strictEqual(4, norm(array([1, 1, 1, 2, 3]))); }); }); diff --git a/src/core/norm.ts b/src/core/norm.ts index 912850eb..4e4c1505 100644 --- a/src/core/norm.ts +++ b/src/core/norm.ts @@ -1,34 +1,45 @@ -import { get_type } from '../util'; - import { NDArray } from './'; - -let nblas: any; -try { - nblas = require('nblas'); -} catch (err) {} - -NDArray.norm = (x: T | ArrayLike): number => NDArray.array(x).norm(); - -NDArray.prototype.norm = function(this: T): number { - const { length: l1 } = this; +import { array } from './array'; +import * as blas from '../blas'; + +const { sqrt: f } = Math; + +/** + * @static + * @memberof module:Globals + * @function norm + * @description + * Calculates the norm of current array (also called L2 norm or Euclidean length). + * Accelerated with BLAS `?nrm2`. + * @param {NDArray} x + * @returns {Number} + * @example + * import { norm } from 'vectorious/core/norm'; + * + * norm([1, 2, 3]); // => 3.7416574954986572 + */ +export const norm = (x: NDArray | ArrayLike): number => array(x).norm(); + +/** + * @function norm + * @memberof NDArray.prototype + * @description + * Calculates the norm of current array (also called L2 norm or Euclidean length). + * Accelerated with BLAS `?nrm2`. + * @returns {Number} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([1, 2, 3]).norm(); // => 3.7416574954986572 + */ +export default function(this: NDArray): number { + const { data: d1, length: l1, dtype } = this; let result: number = 0; try { - if (!['float32', 'float64'].includes(this.dtype)) { - this.dtype = 'float32'; - this.data = get_type(this.dtype).from(this.data); - } - - const { data: d1 } = this; - if (this.dtype === 'float64') { - result = nblas.dnrm2(l1, d1, 1); - } - - if (this.dtype === 'float32') { - result = nblas.snrm2(l1, d1, 1); - } + result = blas.nrm2(dtype, l1, d1, 1); } catch (err) { - result = Math.sqrt(this.dot(this)); + result = f(this.dot(this)); } return result; diff --git a/src/core/normalize.bench.ts b/src/core/normalize.bench.ts index 3d8b6534..012b3727 100644 --- a/src/core/normalize.bench.ts +++ b/src/core/normalize.bench.ts @@ -1,15 +1,15 @@ -import v = require('..'); +import { normalize } from './normalize'; +import { random } from './random'; import { bench } from '../bench'; -const r: (n: number) => v = (n: number): v => v.random(n); bench( - 'v', + 'NDArray', 'normalize', - (n: number): [v] => [v.random(n)], - (x: v): void => { + (n: number) => [random(n)], + (x): void => { x.normalize(); }, - (x: v): void => { - v.normalize(x); + (x): void => { + normalize(x); } ); diff --git a/src/core/normalize.spec.ts b/src/core/normalize.spec.ts index 8cf23e21..d4d72396 100644 --- a/src/core/normalize.spec.ts +++ b/src/core/normalize.spec.ts @@ -1,21 +1,19 @@ -import { - deepStrictEqual, -} from 'assert'; - -import v = require('..'); +import { equals } from './equals'; +import { normalize } from './normalize'; +import { array } from './array'; describe('(v) normalize', () => { it('should work as expected', () => { - const x: v = v.array([1, 1]); - const y: v = v.array([1 / Math.sqrt(2), 1 / Math.sqrt(2)]); + const x = array([1, 1]); + const y = array([1 / Math.sqrt(2), 1 / Math.sqrt(2)]); - deepStrictEqual(y, x.normalize()); + equals(y, x.normalize()); }); it('should work as the static equivalent', () => { - const x: v = v.array([1, 1]); - const y: v = v.array([1 / Math.sqrt(2), 1 / Math.sqrt(2)]); + const x = array([1, 1]); + const y = array([1 / Math.sqrt(2), 1 / Math.sqrt(2)]); - deepStrictEqual(y, v.normalize(x)); + equals(y, normalize(x)); }); }); diff --git a/src/core/normalize.ts b/src/core/normalize.ts index 7c74c809..a22cbea0 100644 --- a/src/core/normalize.ts +++ b/src/core/normalize.ts @@ -1,8 +1,31 @@ import { NDArray } from './'; +import { array } from './array'; -NDArray.normalize = (x: T | ArrayLike): T => - NDArray.array(x).normalize(); +/** + * @static + * @memberof module:Globals + * @function normalize + * @description Normalizes `x`. + * @param {NDArray} x + * @returns {NDArray} + * @example + * import { normalize } from 'vectorious/core/normalize'; + * + * normalize([1, 2, 3]); // => array([0.26726123690605164, 0.5345224738121033, 0.8017836809158325]) + */ +export const normalize = (x: NDArray | ArrayLike): NDArray => + array(x).normalize(); -NDArray.prototype.normalize = function(this: T): NDArray { +/** + * @function normalize + * @memberof NDArray.prototype + * @description Normalizes current vector. + * @returns {this} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([1, 2, 3]).normalize(); // => array([0.26726123690605164, 0.5345224738121033, 0.8017836809158325]) + */ +export default function(this: NDArray): NDArray { return this.scale(1 / this.norm()); }; diff --git a/src/core/ones.bench.ts b/src/core/ones.bench.ts index 8b82fe2c..23d18fc7 100644 --- a/src/core/ones.bench.ts +++ b/src/core/ones.bench.ts @@ -1,10 +1,11 @@ -import v = require('..'); +import { ones } from './ones'; import { bench } from '../bench'; + bench( - 'v', + 'NDArray', 'ones', (n: number): [number] => [n], (n: number): void => { - v.ones(n); + ones(n); } ); diff --git a/src/core/ones.spec.ts b/src/core/ones.spec.ts index ce7f5b6f..6cf9438d 100644 --- a/src/core/ones.spec.ts +++ b/src/core/ones.spec.ts @@ -1,19 +1,17 @@ -import { - deepStrictEqual, -} from 'assert'; - -import v = require('..'); +import { equals } from './equals'; +import { ones } from './ones'; +import { array } from './array'; describe('(v) ones', () => { it('should work as expected', () => { - const x: v = v.array([1, 1, 1]); + const x = array([1, 1, 1]); - deepStrictEqual(x, v.ones(3)); + equals(x, ones(3)); }); it('should work as expected in two dimensions', () => { - const x: v = v.array([[1, 1], [1, 1]]); + const x = array([[1, 1], [1, 1]]); - deepStrictEqual(x, v.ones(2, 2)); + equals(x, ones(2, 2)); }); }); diff --git a/src/core/ones.ts b/src/core/ones.ts index 8af51901..170da50d 100644 --- a/src/core/ones.ts +++ b/src/core/ones.ts @@ -1,8 +1,19 @@ import { NDArray } from './'; -NDArray.ones = function(this: new(...args: any[]) => T, ...shape: number[]): T { - return new this( - new Float32Array(shape.reduce((sum: number, dim: number) => sum * dim, 1)), +/** + * @static + * @memberof module:Globals + * @function ones + * @description Creates an array containing ones (`1`) of shape `shape` + * @param {Number[]} ...shape + * @returns {NDArray} + * @example + * import { ones } from 'vectorious/core/ones'; + * + * ones(3); // => array([1, 1, 1]) + */ +export const ones = (...shape: number[]): NDArray => + new NDArray( + new Float64Array(shape.reduce((sum: number, dim: number) => sum * dim, 1)), { shape } ).fill(1); -}; diff --git a/src/core/pow.bench.ts b/src/core/pow.bench.ts index 9b979d67..a99a3a2e 100644 --- a/src/core/pow.bench.ts +++ b/src/core/pow.bench.ts @@ -1,14 +1,15 @@ -import v = require('..'); +import { pow } from './pow'; +import { random } from './random'; import { bench } from '../bench'; bench( - 'v', + 'NDArray', 'pow', - (n: number): [v, number] => [v.random(n), Math.random()], - (x: v, exponent: number): void => { + (n: number) => [random(n), Math.random()], + (x, exponent: number): void => { x.pow(exponent); }, - (x: v, exponent: number): void => { - v.pow(x, exponent); + (x, exponent: number): void => { + pow(x, exponent); } ); diff --git a/src/core/pow.spec.ts b/src/core/pow.spec.ts index abb399a3..834b58e9 100644 --- a/src/core/pow.spec.ts +++ b/src/core/pow.spec.ts @@ -1,19 +1,18 @@ -import { - deepStrictEqual, -} from 'assert'; - -import v = require('..'); +import { equals } from './equals'; +import { pow } from './pow'; +import { map } from './map'; +import { random } from './random'; describe('(v) pow', () => { it('should work as expected', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.map((value: number) => Math.pow(value, 2)), x.pow(2)); + equals(map(x, (value: number) => Math.pow(value, 2)), x.pow(2)); }); it('should work as the static equivalent', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.map((value: number) => Math.pow(value, 2)), v.pow(x, 2)); + equals(map(x, (value: number) => Math.pow(value, 2)), pow(x, 2)); }); }); diff --git a/src/core/pow.ts b/src/core/pow.ts index 4e32e91f..a89c923f 100644 --- a/src/core/pow.ts +++ b/src/core/pow.ts @@ -1,14 +1,42 @@ import { NDArray } from './'; +import { array } from './array'; +import { NDIter } from '../iterator'; -NDArray.pow = (x: T | ArrayLike, exponent: number): T => - NDArray.array(x).pow(exponent); +const { pow: f } = Math; -NDArray.prototype.pow = function(this: T, exponent: number): T { - const { data: d1, length: l1 } = this; +/** + * @static + * @memberof module:Globals + * @function pow + * @description Returns each element of `x` to the exponent power, that is, element^exponent. + * @param {NDArray} x + * @param {Number} exponent + * @returns {NDArray} + * @example + * import { pow } from 'vectorious/core/pow'; + * + * pow([1, 2, 3], 2); // => array([1, 4, 9]) + */ +export const pow = (x: NDArray | ArrayLike, exponent: number): NDArray => + array(x).pow(exponent); - let i: number; - for (i = 0; i < l1; i += 1) { - d1[i] = Math.pow(d1[i], exponent); +/** + * @function pow + * @memberof NDArray.prototype + * @description Returns each element of current array to the exponent power, that is, element^exponent. + * @param {Number} exponent + * @returns {this} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([1, 2, 3]).pow(2); // <=> array([1, 4, 9]) + */ +export default function(this: NDArray, exponent: number): NDArray { + const { data: d1 } = this; + const iter = new NDIter(this); + + for (const i of iter) { + d1[i!] = f(d1[i!], exponent); } return this; diff --git a/src/core/prod.bench.ts b/src/core/prod.bench.ts index 2f1f442d..eeb340b0 100644 --- a/src/core/prod.bench.ts +++ b/src/core/prod.bench.ts @@ -1,14 +1,15 @@ -import v = require('..'); +import { prod } from './prod'; +import { random } from './random'; import { bench } from '../bench'; bench( - 'v', + 'NDArray', 'prod', - (n: number): [v] => [v.random(n)], - (x: v): void => { + (n: number) => [random(n)], + (x): void => { x.prod(); }, - (x: v): void => { - v.prod(x); + (x): void => { + prod(x); } ); diff --git a/src/core/prod.spec.ts b/src/core/prod.spec.ts index 22ca2e9a..fab7d59a 100644 --- a/src/core/prod.spec.ts +++ b/src/core/prod.spec.ts @@ -1,19 +1,18 @@ -import { - deepStrictEqual, -} from 'assert'; +import { strictEqual } from 'assert'; -import v = require('..'); +import { prod } from './prod'; +import { random } from './random'; describe('(v) prod', () => { it('should work as expected', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.reduce((acc: number, value: number) => acc * value, 1), x.prod()); + strictEqual(x.reduce((acc: number, value: number) => acc * value, 1), x.prod()); }); it('should work as the static equivalent', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.reduce((acc: number, value: number) => acc * value, 1), v.prod(x)); + strictEqual(x.reduce((acc: number, value: number) => acc * value, 1), prod(x)); }); }); diff --git a/src/core/prod.ts b/src/core/prod.ts index 9e2a937e..d2e025d7 100644 --- a/src/core/prod.ts +++ b/src/core/prod.ts @@ -1,14 +1,38 @@ import { NDArray } from './'; +import { array } from './array'; +import { NDIter } from '../iterator'; -NDArray.prod = (x: T | ArrayLike): number => NDArray.array(x).prod(); +/** + * @static + * @memberof module:Globals + * @function prod + * @description Product of all elements of `x`. + * @param {NDArray} x + * @returns {Number} + * @example + * import { prod } from 'vectorious/core/prod'; + * + * prod([1, 2, 3]); // => 6 + */ +export const prod = (x: NDArray | ArrayLike): number => array(x).prod(); -NDArray.prototype.prod = function(this: T): number { - const { data: d1, length: l1 } = this; +/** + * @function prod + * @memberof NDArray.prototype + * @description Product of all elements of current array + * @returns {Number} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([1, 2, 3]).prod(); // => 6 + */ +export default function(this: NDArray): number { + const { data: d1 } = this; + const iter = new NDIter(this); - let i: number; let prod: number = 1; - for (i = 0; i < l1; i += 1) { - prod *= d1[i]; + for (const i of iter) { + prod *= d1[i!]; } return prod; diff --git a/src/core/product.bench.ts b/src/core/product.bench.ts index 1e5e18a5..227898b1 100644 --- a/src/core/product.bench.ts +++ b/src/core/product.bench.ts @@ -1,14 +1,15 @@ -import v = require('..'); +import { product } from './product'; +import { random } from './random'; import { bench } from '../bench'; bench( - 'v', + 'NDArray', 'product', - (n: number): [v, v] => [v.random(n), v.random(n)], - (x: v, y: v): void => { + (n: number) => [random(n), random(n)], + (x, y): void => { x.product(y); }, - (x: v, y: v): void => { - v.product(x, y); + (x, y): void => { + product(x, y); } ); diff --git a/src/core/product.spec.ts b/src/core/product.spec.ts index c8be3638..0f6adaa3 100644 --- a/src/core/product.spec.ts +++ b/src/core/product.spec.ts @@ -1,21 +1,19 @@ -import { - deepStrictEqual, -} from 'assert'; - -import v = require('..'); +import { equals } from './equals'; +import { product } from './product'; +import { array } from './array'; describe('(v) product', () => { it('should work as expected', () => { - const x: v = v.array([[3, 2, 1]]); - const y: v = v.array([[1, 2, 3]]); + const x = array([[3, 2, 1]]); + const y = array([[1, 2, 3]]); - deepStrictEqual(v.array([[3, 4, 3]]), x.product(y)); + equals(array([[3, 4, 3]]), x.product(y)); }); it('should work as the static equivalent', () => { - const x: v = v.array([[3, 2, 1]]); - const y: v = v.array([[1, 2, 3]]); + const x = array([[3, 2, 1]]); + const y = array([[1, 2, 3]]); - deepStrictEqual(v.array([[3, 4, 3]]), v.product(x, y)); + equals(array([[3, 4, 3]]), product(x, y)); }); }); diff --git a/src/core/product.ts b/src/core/product.ts index d51f3e7c..eda1acba 100644 --- a/src/core/product.ts +++ b/src/core/product.ts @@ -1,18 +1,40 @@ import { NDArray } from './'; +import { NDMultiIter } from '../iterator'; +import { array } from './array'; -NDArray.product = (x: T | ArrayLike, y: T | ArrayLike): T => - NDArray.array(x).product(NDArray.array(y)); +/** + * @static + * @memberof module:Globals + * @function product + * @description Hadamard product of `x` and `y` + * @param {NDArray} x + * @param {NDArray} y + * @returns {NDArray} + * @example + * import { product } from 'vectorious/core/product'; + * + * product([1, 2, 3], [4, 5, 6]); // => array([4, 10, 18]) + */ +export const product = (x: NDArray | ArrayLike, y: NDArray | ArrayLike): NDArray => + array(x).product(array(y)); -NDArray.prototype.product = function(this: T, x: T): T { - this.equilateral(x); - this.equidimensional(x); - - const { data: d1, length: l1 } = this; +/** + * @function product + * @memberof NDArray.prototype + * @description Hadamard product of current matrix and `x` + * @returns {NDArray} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([1, 2, 3]).product([4, 5, 6]); // <=> array([4, 10, 18]) + */ +export default function(this: NDArray, x: NDArray): NDArray { + const { data: d1 } = this; const { data: d2 } = x; - let i: number; - for (i = 0; i < l1; i += 1) { - d1[i] *= d2[i]; + const iter = new NDMultiIter(this, x); + for (const [i, j] of iter) { + d1[i!] *= d2[j!]; } return this; diff --git a/src/core/project.bench.ts b/src/core/project.bench.ts index 9d12ec62..96fd4c50 100644 --- a/src/core/project.bench.ts +++ b/src/core/project.bench.ts @@ -1,15 +1,15 @@ -import v = require('..'); +import { project } from './project'; +import { random } from './random'; import { bench } from '../bench'; -const r: (n: number) => v = (n: number): v => v.random(n); bench( - 'v', + 'NDArray', 'project', - (n: number): [v, v] => [v.random(n), v.random(n)], - (x: v, y: v): void => { + (n: number) => [random(n), random(n)], + (x, y): void => { x.project(y); }, - (x: v, y: v): void => { - v.project(x, y); + (x, y): void => { + project(x, y); } ); diff --git a/src/core/project.spec.ts b/src/core/project.spec.ts index a26650bc..804b13db 100644 --- a/src/core/project.spec.ts +++ b/src/core/project.spec.ts @@ -1,31 +1,21 @@ -import { - deepStrictEqual, - throws, -} from 'assert'; - -import v = require('..'); +import { equals } from './equals'; +import { project } from './project'; +import { array } from './array'; describe('(v) project', () => { - it('should throw error if sizes do not match', () => { - const x: v = v.array([1]); - const y: v = v.array([1, 2]); - - throws(() => { x.project(y); }, Error); - }); - it('should work as expected', () => { - const x: v = v.array([2, 1]); - const y: v = v.array([-3, 4]); - const z: v = v.array([6 / 25, -8 / 25]); + const x = array([2, 1]); + const y = array([-3, 4]); + const z = array([6 / 25, -8 / 25]); - deepStrictEqual(z, x.project(y)); + equals(z, x.project(y)); }); it('should work as the static equivalent', () => { - const x: v = v.array([2, 1]); - const y: v = v.array([-3, 4]); - const z: v = v.array([6 / 25, -8 / 25]); + const x = array([2, 1]); + const y = array([-3, 4]); + const z = array([6 / 25, -8 / 25]); - deepStrictEqual(z, v.project(x, y)); + equals(z, project(x, y)); }); }); diff --git a/src/core/project.ts b/src/core/project.ts index 47ecc776..06456878 100644 --- a/src/core/project.ts +++ b/src/core/project.ts @@ -1,8 +1,32 @@ import { NDArray } from './'; +import { array } from './array'; -NDArray.project = (x: T | ArrayLike, y: T | ArrayLike): T => - NDArray.array(x).project(NDArray.array(y)); +/** + * @static + * @memberof module:Globals + * @function project + * @description Projects the `y` onto `x` using the projection formula `(y * (x * y / y * y))`. + * @param {NDArray} x + * @param {NDArray} y + * @returns {NDArray} + * @example + * import { project } from 'vectorious/core/project'; + * + * project([1, 2, 3], [4, 5, 6]); // => array([1.6623376607894897, 2.0779221057891846, 2.49350643157959]) + */ +export const project = (x: NDArray | ArrayLike, y: NDArray | ArrayLike): NDArray => + array(x).project(array(y)); -NDArray.prototype.project = function(this: T, x: T): T { +/** + * @function project + * @memberof NDArray.prototype + * @description Projects the current vector onto `x` using the projection formula `(y * (x * y / y * y))`. + * @returns {NDArray} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([1, 2, 3]).project([4, 5, 6]); // <=> array([1.6623376607894897, 2.0779221057891846, 2.49350643157959]) + */ +export default function(this: NDArray, x: NDArray): NDArray { return x.scale(this.dot(x) / x.dot(x)); }; diff --git a/src/core/push.bench.ts b/src/core/push.bench.ts index 4fd82157..bfa29ebb 100644 --- a/src/core/push.bench.ts +++ b/src/core/push.bench.ts @@ -1,16 +1,15 @@ -import v = require('..'); +import { push } from './push'; +import { random } from './random'; import { bench } from '../bench'; -const { random } = Math; -const r: (n: number) => v = (n: number): v => v.random(n); bench( - 'v', + 'NDArray', 'push', - (n: number): [v, number] => [v.random(n), random()], - (x: v, value: number): void => { + (n: number) => [random(n), Math.random()], + (x, value: number): void => { x.push(value); }, - (x: v, value: number): void => { - v.push(x, value); + (x, value: number): void => { + push(x, value); } ); diff --git a/src/core/push.spec.ts b/src/core/push.spec.ts index 7d9eb4b9..54c2d2c2 100644 --- a/src/core/push.spec.ts +++ b/src/core/push.spec.ts @@ -1,15 +1,13 @@ -import { - deepStrictEqual, -} from 'assert'; - -import v = require('..'); +import { equals } from './equals'; +import { push } from './push'; +import { array } from './array'; describe('(v) push', () => { it('should start with v(1, 2), push(3) to get v(1, 2, 3)', () => { - deepStrictEqual(v.array([1, 2, 3]), v.array([1, 2]).push(3)); + equals(array([1, 2, 3]), array([1, 2]).push(3)); }); it('should work as the static equivalent', () => { - deepStrictEqual(v.array([1, 2, 3]), v.push(v.array([1, 2]), 3)); + equals(array([1, 2, 3]), push(array([1, 2]), 3)); }); }); diff --git a/src/core/push.ts b/src/core/push.ts index 7d26421b..31baaf1b 100644 --- a/src/core/push.ts +++ b/src/core/push.ts @@ -2,11 +2,36 @@ import { TypedArray } from '../types'; import { get_type } from '../util'; import { NDArray } from './'; +import { array } from './array'; -NDArray.push = (x: T | ArrayLike, value: number): T => - NDArray.array(x).push(value); +/** + * @static + * @memberof module:Globals + * @function push + * @description Pushes a new `value` into `x`. + * @param {NDArray} x + * @param {Number} value + * @returns {NDArray} + * @example + * import { push } from 'vectorious/core/push'; + * + * push([1, 2, 3], 4); // => array([1, 2, 3, 4]) + */ +export const push = (x: NDArray | ArrayLike, value: number): NDArray => + array(x).push(value); -NDArray.prototype.push = function(this: T, value: number): T { +/** + * @function push + * @memberof NDArray.prototype + * @description Pushes a new `value` into current vector. + * @param {Number} value + * @returns {this} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([1, 2, 3]).push(4); // => array([1, 2, 3, 4]) + */ +export default function(this: NDArray, value: number): NDArray { if (this.shape.length !== 1) { throw new Error('push operation not permitted for multidimensional arrays'); } diff --git a/src/core/random.bench.ts b/src/core/random.bench.ts index 152cce81..23839465 100644 --- a/src/core/random.bench.ts +++ b/src/core/random.bench.ts @@ -1,10 +1,11 @@ -import v = require('..'); +import { random } from './random'; import { bench } from '../bench'; + bench( - 'v', + 'NDArray', 'random', (n: number): [number] => [n], (n: number): void => { - v.random(n); + random(n); } ); diff --git a/src/core/random.spec.ts b/src/core/random.spec.ts index 6df30027..2ffbf688 100644 --- a/src/core/random.spec.ts +++ b/src/core/random.spec.ts @@ -1,22 +1,22 @@ import { - deepStrictEqual, strictEqual, } from 'assert'; -import v = require('..'); +import { equals } from './equals'; +import { random } from './random'; describe('(v) random', () => { it('should work as expected', () => { - const x: v = v.random(3); + const x = random(3); strictEqual(3, x.length); - deepStrictEqual([3], x.shape); + equals([3], x.shape); }); it('should work as expected', () => { - const x: v = v.random(3, 3); + const x = random(3, 3); strictEqual(9, x.length); - deepStrictEqual([3, 3], x.shape); + equals([3, 3], x.shape); }); }); diff --git a/src/core/random.ts b/src/core/random.ts index 9f0762aa..5fa7c471 100644 --- a/src/core/random.ts +++ b/src/core/random.ts @@ -1,8 +1,19 @@ import { NDArray } from './'; -NDArray.random = function(this: new(...args: any[]) => T, ...shape: number[]): T { - return new this( - new Float32Array(shape.reduce((sum: number, dim: number) => sum * dim, 1)), +/** + * @static + * @memberof module:Globals + * @function random + * @description Creates a vector containing random samples from a uniform distribution over `[0, 1)` of shape `shape` + * @param {Number[]} ...shape + * @returns {NDArray} + * @example + * import { random } from 'vectorious/core/random'; + * + * random(3); // => array([0.27496153116226196, 0.7581521272659302, 0.3682245910167694]) + */ +export const random = (...shape: number[]): NDArray => + new NDArray( + new Float64Array(shape.reduce((sum: number, dim: number) => sum * dim, 1)), { shape } ).map(() => Math.random()); -}; diff --git a/src/core/range.bench.ts b/src/core/range.bench.ts index 66aa6eea..d1829664 100644 --- a/src/core/range.bench.ts +++ b/src/core/range.bench.ts @@ -1,10 +1,11 @@ -import v = require('..'); +import { range } from './range'; import { bench } from '../bench'; + bench( - 'v', + 'NDArray', 'range', (n: number): [number, number] => [0, n], (start: number, end: number): void => { - v.range(start, end); + range(start, end); } ); diff --git a/src/core/range.spec.ts b/src/core/range.spec.ts index 8621ca7e..3618938a 100644 --- a/src/core/range.spec.ts +++ b/src/core/range.spec.ts @@ -1,25 +1,23 @@ -import { - deepStrictEqual, -} from 'assert'; - -import v = require('..'); +import { equals } from './equals'; +import { range } from './range'; +import { array } from './array'; describe('(v) range', () => { it('should work as expected', () => { - const x: v = v.array([0, 1, 2]); + const x = array([0, 1, 2]); - deepStrictEqual(x, v.range(0, 3)); + equals(x, range(0, 3)); }); it('should work as expected', () => { - const x: v = v.array([2, 1, 0]); + const x = array([2, 1, 0]); - deepStrictEqual(x, v.range(2, -1)); + equals(x, range(2, -1)); }); it('should work as expected', () => { - const x: v = v.array([0, 0.5, 1, 1.5]); + const x = array([0, 0.5, 1, 1.5]); - deepStrictEqual(x, v.range(0, 0.5, 2)); + equals(x, range(0, 0.5, 2)); }); }); diff --git a/src/core/range.ts b/src/core/range.ts index 70995db7..7a019640 100644 --- a/src/core/range.ts +++ b/src/core/range.ts @@ -2,7 +2,25 @@ import { TypedArray, TypedArrayConstructor } from '../types'; import { NDArray } from './'; -NDArray.range = function(this: new(...args: any[]) => T, ...args: number[]): T { +/** + * @static + * @memberof module:Globals + * @function range + * @description + * Creates an array containing a range (can be either ascending or descending) + * of numbers specified by the arguments provided (e.g. `NDArray.range(0, .5, 2)` + * gives an array containing all numbers in the interval `[0, 2)` separated by + * steps of `0.5`) + * @param {Number} start + * @param {Number} step + * @param {Number} stop + * @returns {NDArray} + * @example + * import { range } from 'vectorious/core/range'; + * + * range(1, 2, 9); // => array([1, 3, 5, 7]) + */ +export const range = (...args: number[]): NDArray => { const type: TypedArrayConstructor = Float32Array; let backwards: boolean = false; let start: number; @@ -50,5 +68,5 @@ NDArray.range = function(this: new(...args: any[]) => T, ...a } } - return new this(data); + return new NDArray(data); }; diff --git a/src/core/rank.bench.ts b/src/core/rank.bench.ts index 1d66f08e..4b6fb777 100644 --- a/src/core/rank.bench.ts +++ b/src/core/rank.bench.ts @@ -1,16 +1,17 @@ -import v = require('..'); +import { rank } from './rank'; +import { random } from './random'; import { bench } from '../bench'; const { floor, sqrt } = Math; bench( - 'v', + 'NDArray', 'rank', - (n: number): [v] => [v.random(floor(sqrt(n)), floor(sqrt(n)))], - (x: v): void => { + (n: number) => [random(floor(sqrt(n)), floor(sqrt(n)))], + (x): void => { x.rank(); }, - (x: v): void => { - v.rank(x); + (x): void => { + rank(x); } ); diff --git a/src/core/rank.spec.ts b/src/core/rank.spec.ts index bab8c313..ad305795 100644 --- a/src/core/rank.spec.ts +++ b/src/core/rank.spec.ts @@ -1,15 +1,15 @@ import { - deepStrictEqual, strictEqual, } from 'assert'; -import v = require('..'); +import { rank } from './rank'; +import { array } from './array'; describe('(v) rank', () => { it('should work as expected', () => { - const x: v = v.array([[1, 2, 1], [-2, -3, 1], [3, 5, 0]]); - const y: v = v.array([[1, 1, 1], [2, 2, 2], [3, 3, 3]]); - const z: v = v.array([[0, 0, 0], [0, 0, 0]]); + const x = array([[1, 2, 1], [-2, -3, 1], [3, 5, 0]]); + const y = array([[1, 1, 1], [2, 2, 2], [3, 3, 3]]); + const z = array([[0, 0, 0], [0, 0, 0]]); strictEqual(x.rank(), 2); strictEqual(y.rank(), 1); @@ -17,8 +17,8 @@ describe('(v) rank', () => { }); it('should work as the static equivalent', () => { - const x: v = v.array([[1, 1, 1]]); + const x = array([[1, 1, 1]]); - deepStrictEqual(x.copy().rank(), v.rank(x)); + strictEqual(x.copy().rank(), rank(x)); }); }); diff --git a/src/core/rank.ts b/src/core/rank.ts index cf3ae85e..26996c08 100644 --- a/src/core/rank.ts +++ b/src/core/rank.ts @@ -1,30 +1,47 @@ import { NDArray } from './'; +import { NDIter } from '../iterator'; +import { array } from './array'; /** - * Finds the rank of the matrix using gaussian elimination. + * @static + * @memberof module:Globals + * @function rank + * @description Finds the rank of `x` using gaussian elimination. + * @param {NDArray} x + * @param {Number} tolerance + * @returns {Number} + * @example + * import { rank } from 'vectorious/core/rank'; + * + * rank([[1, 1, 1], [2, 2, 2], [3, 3, 3]]); // => 1 */ -NDArray.rank = (x: T | ArrayLike): number => NDArray.array(x).rank(); +export const rank = (x: NDArray | ArrayLike, tolerance: number = 1e-6): number => array(x).rank(tolerance); /** - * Finds the rank of the matrix using gaussian elimination. + * @function rank + * @memberof NDArray.prototype + * @description Finds the rank of current matrix using gaussian elimination. + * @param {Number} tolerance + * @returns {Number} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([[1, 1, 1], [2, 2, 2], [3, 3, 3]]).rank(); // => 1 + * @todo Switch to SVD algorithm */ -NDArray.prototype.rank = function(this: T): number { - this.gauss(); +export default function(this: NDArray, tolerance: number = 1e-6): number { + const { data: d1 } = this.copy().gauss(); - const [r, c] = this.shape; - const { data: d1 } = this; + const iter = new NDIter(this); let rk: number = 0; - let i: number; - let j: number; - - for (i = 0; i < r; i += 1) { - for (j = i; j < c; j += 1) { - if (rk <= i && d1[i * c + j] !== 0) { - rk += 1; - continue; - } + let [ci, cj] = iter.coords; + for (const i of iter) { + if (rk <= ci && cj >= ci && d1[i!] > tolerance) { + rk += 1; } + + [ci, cj] = iter.coords; } return rk; diff --git a/src/core/reciprocal.bench.ts b/src/core/reciprocal.bench.ts index a3f134a0..e4d50000 100644 --- a/src/core/reciprocal.bench.ts +++ b/src/core/reciprocal.bench.ts @@ -1,14 +1,15 @@ -import v = require('..'); +import { reciprocal } from './reciprocal'; +import { random } from './random'; import { bench } from '../bench'; bench( - 'v', + 'NDArray', 'reciprocal', - (n: number): [v] => [v.random(n)], - (x: v): void => { + (n: number) => [random(n)], + (x): void => { x.reciprocal(); }, - (x: v): void => { - v.reciprocal(x); + (x): void => { + reciprocal(x); } ); diff --git a/src/core/reciprocal.spec.ts b/src/core/reciprocal.spec.ts index 9958f7d1..6ca36943 100644 --- a/src/core/reciprocal.spec.ts +++ b/src/core/reciprocal.spec.ts @@ -1,19 +1,18 @@ -import { - deepStrictEqual, -} from 'assert'; - -import v = require('..'); +import { equals } from './equals'; +import { reciprocal } from './reciprocal'; +import { map } from './map'; +import { random } from './random'; describe('(v) reciprocal', () => { it('should work as expected', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.map((value: number) => 1 / value), x.reciprocal()); + equals(map(x, (value: number) => 1 / value), x.reciprocal()); }); it('should work as the static equivalent', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.map((value: number) => 1 / value), v.reciprocal(x)); + equals(map(x, (value: number) => 1 / value), reciprocal(x)); }); }); diff --git a/src/core/reciprocal.ts b/src/core/reciprocal.ts index 0f622569..e2b53130 100644 --- a/src/core/reciprocal.ts +++ b/src/core/reciprocal.ts @@ -1,14 +1,38 @@ import { NDArray } from './'; +import { array } from './array'; +import { NDIter } from '../iterator'; -NDArray.reciprocal = (x: T | ArrayLike): T => - NDArray.array(x).reciprocal(); +/** + * @static + * @memberof module:Globals + * @function reciprocal + * @description Gets the element-wise reciprocal of `x`. + * @param {NDArray} x + * @returns {NDArray} + * @example + * import { reciprocal } from 'vectorious/core/reciprocal'; + * + * reciprocal([1, 2, 3]); // => array([1, 0.5, 0.3333333432674408]) + */ +export const reciprocal = (x: NDArray | ArrayLike): NDArray => + array(x).reciprocal(); -NDArray.prototype.reciprocal = function(this: T): T { - const { data: d1, length: l1 } = this; +/** + * @function reciprocal + * @memberof NDArray.prototype + * @description Gets the element-wise reciprocal of current array. + * @returns {this} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([1, 2, 3]); // => array([1, 0.5, 0.3333333432674408]) + */ +export default function(this: NDArray): NDArray { + const { data: d1 } = this; + const iter = new NDIter(this); - let i: number; - for (i = 0; i < l1; i += 1) { - d1[i] = 1 / d1[i]; + for (const i of iter) { + d1[i!] = 1 / d1[i!]; } return this; diff --git a/src/core/reduce.bench.ts b/src/core/reduce.bench.ts index 7f476785..e26f87ea 100644 --- a/src/core/reduce.bench.ts +++ b/src/core/reduce.bench.ts @@ -1,14 +1,15 @@ -import v = require('..'); +import { reduce } from './reduce'; +import { random } from './random'; import { bench } from '../bench'; bench( - 'v', + 'NDArray', 'reduce', - (n: number): [v] => [v.random(n)], - (x: v): void => { + (n: number) => [random(n)], + (x): void => { x.reduce((value: number) => value); }, - (x: v): void => { - v.reduce(x, (value: number) => value); + (x): void => { + reduce(x, (value: number) => value); } ); diff --git a/src/core/reduce.spec.ts b/src/core/reduce.spec.ts index 47338dc5..b230315a 100644 --- a/src/core/reduce.spec.ts +++ b/src/core/reduce.spec.ts @@ -1,32 +1,33 @@ import { - deepStrictEqual, + strictEqual, throws, } from 'assert'; -import v = require('..'); +import { reduce } from './reduce'; +import { array } from './array'; describe('(v) reduce', () => { it('should work as expected', () => { - const x: v = v.array([1, 2, 3]); - const y: v = v.array([1, 2, 3, 4, 5, 6]); + const x = array([1, 2, 3]); + const y = array([1, 2, 3, 4, 5, 6]); const sum: (a: number, b: number) => number = (a: number, b: number): number => a + b; - deepStrictEqual(6, x.reduce(sum, 0)); - deepStrictEqual(21, y.reduce(sum)); + strictEqual(6, x.reduce(sum, 0)); + strictEqual(21, y.reduce(sum)); }); it('should throw error if empty vector with no initial value', () => { - const x: v = v.array(); + const x = array(); const sum: (a: number, b: number) => number = (a: number, b: number): number => a + b; throws(() => { x.reduce(sum); }, Error); }); it('should work as the static equivalent', () => { - const x: v = v.array([1, 2, 3]); - const y: v = v.array([1, 2, 3, 4, 5, 6]); + const x = array([1, 2, 3]); + const y = array([1, 2, 3, 4, 5, 6]); const sum: (a: number, b: number) => number = (a: number, b: number): number => a + b; - deepStrictEqual(6, v.reduce(x, sum, 0)); - deepStrictEqual(21, v.reduce(y, sum)); + strictEqual(6, reduce(x, sum, 0)); + strictEqual(21, reduce(y, sum)); }); }); diff --git a/src/core/reduce.ts b/src/core/reduce.ts index 327d8860..18b89205 100644 --- a/src/core/reduce.ts +++ b/src/core/reduce.ts @@ -1,36 +1,65 @@ import { TypedArray } from '../types'; import { NDArray } from './'; +import { array } from './array'; +import { NDIter } from '../iterator'; -NDArray.reduce = ( - x: T, +/** + * @static + * @memberof module:Globals + * @function reduce + * @description Equivalent to `TypedArray.prototype.reduce`. + * @param {NDArray} x + * @param {Function} f + * @param {Number} initialValue + * @returns {Number} + * @example + * import { reduce } from 'vectorious/core/reduce'; + * + * reduce([1, 2, 3], (a, b) => a + b, 0); // => 6 + */ +export const reduce = ( + x: NDArray, f: (acc: number, value: number, i: number, src: TypedArray) => number, initialValue?: number -): number => NDArray.array(x).reduce(f, initialValue); +): number => array(x).reduce(f, initialValue); -NDArray.prototype.reduce = function( - this: T, +/** + * @function reduce + * @memberof NDArray.prototype + * @description Equivalent to `TypedArray.prototype.reduce`. + * @param {Function} f + * @param {Number} initialValue + * @returns {Number} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([1, 2, 3]).reduce((a, b) => a + b, 0); // => 6 + */ +export default function( + this: NDArray, f: (acc: number, value: number, i: number, src: TypedArray) => number, initialValue?: number ): number { const { data: d1, length: l1 } = this; if (l1 === 0 && typeof initialValue === 'undefined') { - throw new Error('Reduce of empty matrix with no initial value.'); + throw new Error('Reduce of empty array with no initial value.'); } - let i: number; + const iter = new NDIter(this); + const reduce = f.bind(this); + let value: number; if (typeof initialValue === 'undefined') { value = d1[0]; - i = 1; + iter.next(); } else { value = initialValue; - i = 0; } - for (; i < l1; i += 1) { - value = f.call(this, value, d1[i], i, d1); + for (const i of iter) { + value = reduce(value, d1[i!], i!, d1); } return value; diff --git a/src/core/reshape.bench.ts b/src/core/reshape.bench.ts index cdf9adce..edc6238b 100644 --- a/src/core/reshape.bench.ts +++ b/src/core/reshape.bench.ts @@ -1,14 +1,15 @@ -import v = require('..'); +import { reshape } from './reshape'; +import { random } from './random'; import { bench } from '../bench'; bench( - 'v', + 'NDArray', 'reshape', - (n: number): [v, number] => [v.random(n), n], - (x: v, n: number): void => { + (n: number) => [random(n), n], + (x, n: number): void => { x.reshape(n); }, - (x: v, n: number): void => { - v.reshape(x, n); + (x, n: number): void => { + reshape(x, n); } ); diff --git a/src/core/reshape.spec.ts b/src/core/reshape.spec.ts index c69d77dc..de74dc66 100644 --- a/src/core/reshape.spec.ts +++ b/src/core/reshape.spec.ts @@ -1,32 +1,33 @@ import { - deepStrictEqual, throws, } from 'assert'; -import v = require('..'); +import { equals } from './equals'; +import { reshape } from './reshape'; +import { array } from './array'; describe('(v) reshape', () => { it('should throw error if new shape does not match length', () => { - const f32: Float32Array = new Float32Array([1, 2, 3, 4]); - const x: v = v.array(f32); + const f32 = new Float64Array([1, 2, 3, 4]); + const x = array(f32); throws(() => { x.reshape(1, 2); }, Error); }); it('should be able to create row vector of column vector', () => { - const f32: Float32Array = new Float32Array([1, 2, 3, 4]); - const x: v = v.array(f32, { shape: [1, 4] }); + const f32 = new Float64Array([1, 2, 3, 4]); + const x = array(f32, { shape: [1, 4] }); - deepStrictEqual(x.shape, [1, 4]); + equals(x.shape, [1, 4]); x.reshape(4, 1); - deepStrictEqual(x.shape, [4, 1]); + equals(x.shape, [4, 1]); }); it('should work as the static equivalent', () => { - const f32: Float32Array = new Float32Array([1, 2, 3, 4]); - const x: v = v.array(f32, { shape: [1, 4] }); + const f32 = new Float64Array([1, 2, 3, 4]); + const x = array(f32, { shape: [1, 4] }); - deepStrictEqual(x.shape, [1, 4]); - deepStrictEqual(v.reshape(x, 4, 1).shape, [4, 1]); + equals(x.shape, [1, 4]); + equals(reshape(x, 4, 1).shape, [4, 1]); }); }); diff --git a/src/core/reshape.ts b/src/core/reshape.ts index b215115c..36a12c9c 100644 --- a/src/core/reshape.ts +++ b/src/core/reshape.ts @@ -1,15 +1,43 @@ +import { get_strides } from '../util'; + import { NDArray } from './'; +import { array } from './array'; -NDArray.reshape = (x: T | ArrayLike, ...shape: number[]): T => - NDArray.array(x).reshape(...shape); +/** + * @static + * @memberof module:Globals + * @function reshape + * @description Reshapes `x` + * @param {NDArray} x + * @param {Number[]} ...shape + * @returns {NDArray} + * @example + * import { reshape } from 'vectorious/core/reshape'; + * + * reshape([1, 2, 3, 4], 2, 2); // => array([[1, 2], [3, 4]]) + */ +export const reshape = (x: NDArray | ArrayLike, ...shape: number[]): NDArray => + array(x).reshape(...shape); -NDArray.prototype.reshape = function(this: T, ...shape: number[]): T { +/** + * @function reshape + * @memberof NDArray.prototype + * @description Reshapes current array + * @param {Number[]} ...shape + * @returns {this} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([1, 2, 3, 4]).reshape(2, 2); // <=> array([[1, 2], [3, 4]]) + */ +export default function(this: NDArray, ...shape: number[]): NDArray { const { length } = this; if (shape.reduce((sum: number, dim: number) => sum * dim, 1) !== length) { throw new Error(`shape ${shape} does not match length ${length}`); } this.shape = shape; + this.strides = get_strides(shape); return this; }; diff --git a/src/core/round.bench.ts b/src/core/round.bench.ts index d7119579..1cfd1612 100644 --- a/src/core/round.bench.ts +++ b/src/core/round.bench.ts @@ -1,14 +1,15 @@ -import v = require('..'); +import { round } from './round'; +import { random } from './random'; import { bench } from '../bench'; bench( - 'v', + 'NDArray', 'round', - (n: number): [v] => [v.random(n)], - (x: v): void => { + (n: number) => [random(n)], + (x): void => { x.round(); }, - (x: v): void => { - v.round(x); + (x): void => { + round(x); } ); diff --git a/src/core/round.spec.ts b/src/core/round.spec.ts index be7936ff..1d31de9b 100644 --- a/src/core/round.spec.ts +++ b/src/core/round.spec.ts @@ -1,19 +1,18 @@ -import { - deepStrictEqual, -} from 'assert'; - -import v = require('..'); +import { equals } from './equals'; +import { round } from './round'; +import { map } from './map'; +import { random } from './random'; describe('(v) round', () => { it('should work as expected', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.map((value: number) => Math.round(value)), x.round()); + equals(map(x, (value: number) => Math.round(value)), x.round()); }); it('should work as the static equivalent', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.map((value: number) => Math.round(value)), v.round(x)); + equals(map(x, (value: number) => Math.round(value)), round(x)); }); }); diff --git a/src/core/round.ts b/src/core/round.ts index 93892c84..47018212 100644 --- a/src/core/round.ts +++ b/src/core/round.ts @@ -1,13 +1,39 @@ import { NDArray } from './'; +import { array } from './array'; +import { NDIter } from '../iterator'; -NDArray.round = (x: T | ArrayLike): T => NDArray.array(x).round(); +const { round: f } = Math; -NDArray.prototype.round = function(this: T): T { - const { data: d1, length: l1 } = this; +/** + * @static + * @memberof module:Globals + * @function round + * @description Returns the value of each element of `x` rounded to the nearest integer. + * @param {NDArray} x + * @returns {NDArray} + * @example + * import { round } from 'vectorious/core/round'; + * + * round([1.2, 2.8, 3.5]); // => array([1, 3, 4]) + */ +export const round = (x: NDArray | ArrayLike): NDArray => array(x).round(); - let i: number; - for (i = 0; i < l1; i += 1) { - d1[i] = Math.round(d1[i]); +/** + * @function round + * @memberof NDArray.prototype + * @description Returns the value of each element of current array rounded to the nearest integer. + * @returns {this} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([1.2, 2.8, 3.5]).round(); // <=> array([1, 3, 4]) + */ +export default function(this: NDArray): NDArray { + const { data: d1 } = this; + const iter = new NDIter(this); + + for (const i of iter) { + d1[i!] = f(d1[i!]); } return this; diff --git a/src/core/row_add.bench.ts b/src/core/row_add.bench.ts index 921ac33f..b06a2493 100644 --- a/src/core/row_add.bench.ts +++ b/src/core/row_add.bench.ts @@ -1,16 +1,15 @@ -import v = require('..'); +import { row_add } from './row_add'; +import { random } from './random'; import { bench } from '../bench'; -const { floor, random, sqrt } = Math; - bench( - 'v', + 'NDArray', 'row_add', - (n: number): [v, number, number] => [v.random(n), floor(random() * floor(sqrt(n))), floor(random() * floor(sqrt(n)))], - (x: v, dest: number, source: number): void => { + (n: number) => [random(n), Math.floor(Math.random() * Math.floor(Math.sqrt(n))), Math.floor(Math.random() * Math.floor(Math.sqrt(n)))], + (x, dest: number, source: number): void => { x.row_add(dest, source); }, - (x: v, dest: number, source: number): void => { - v.row_add(x, dest, source); + (x, dest: number, source: number): void => { + row_add(x, dest, source); } ); diff --git a/src/core/row_add.spec.ts b/src/core/row_add.spec.ts index c558199c..dec9d49f 100644 --- a/src/core/row_add.spec.ts +++ b/src/core/row_add.spec.ts @@ -1,23 +1,21 @@ -import { - deepStrictEqual, -} from 'assert'; - -import v = require('..'); +import { equals } from './equals'; +import { row_add } from './row_add'; +import { array } from './array'; describe('(v) row_add', () => { it('should work as expected', () => { - const x: v = v.array([[1, 2], [3, 4]]); - const y: v = v.array([[31, 42], [3, 4]]); + const x = array([[1, 2], [3, 4]]); + const y = array([[31, 42], [3, 4]]); x.row_add(0, 1, 10); - deepStrictEqual(y, x); + equals(y, x); }); it('should work as the static equivalent', () => { - const x: v = v.array([[1, 2], [3, 4]]); - const y: v = v.array([[31, 42], [3, 4]]); + const x = array([[1, 2], [3, 4]]); + const y = array([[31, 42], [3, 4]]); - deepStrictEqual(y, v.row_add(x, 0, 1, 10)); + equals(y, row_add(x, 0, 1, 10)); }); }); diff --git a/src/core/row_add.ts b/src/core/row_add.ts index d5b3a949..28e2eea2 100644 --- a/src/core/row_add.ts +++ b/src/core/row_add.ts @@ -1,14 +1,43 @@ import { NDArray } from './'; +import { array } from './array'; -NDArray.row_add = ( - x: T | ArrayLike, +/** + * @static + * @memberof module:Globals + * @function row_add + * @description Adds a multiple of one row multiplied by `scalar` to another inside `x`. + * @param {NDArray} x + * @param {Number} dest + * @param {Number} source + * @param {Number} scalar + * @returns {NDArray} + * @example + * import { row_add } from 'vectorious/core/row_add'; + * + * row_add([[1, 2], [3, 4]], 1, 0, 2); // => array([[1, 2], [5, 8]]) + */ +export const row_add = ( + x: NDArray | ArrayLike, dest: number, source: number, scalar: number = 1 -): T => - NDArray.array(x).row_add(dest, source, scalar); +): NDArray => + array(x).row_add(dest, source, scalar); -NDArray.prototype.row_add = function(this: T, dest: number, source: number, scalar: number = 1): T { +/** + * @function row_add + * @memberof NDArray.prototype + * @description Adds a multiple of one row multiplied by `scalar` to another inside current matrix. + * @param {Number} dest + * @param {Number} source + * @param {Number} scalar + * @returns {this} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([[1, 2], [3, 4]]).row_add(1, 0, 2); // <=> array([[1, 2], [5, 8]]) + */ +export default function(this: NDArray, dest: number, source: number, scalar: number = 1): NDArray { this.check(dest, 0); this.check(source, 0); diff --git a/src/core/scale.bench.ts b/src/core/scale.bench.ts index baae55ff..df0f02fd 100644 --- a/src/core/scale.bench.ts +++ b/src/core/scale.bench.ts @@ -1,14 +1,15 @@ -import v = require('..'); +import { scale } from './scale'; +import { random } from './random'; import { bench } from '../bench'; bench( - 'v', + 'NDArray', 'scale', - (n: number): [v, number] => [v.random(n), Math.random()], - (x: v, alpha: number) => { + (n: number) => [random(n), Math.random()], + (x, alpha: number) => { x.scale(alpha); }, - (x: v, alpha: number) => { - v.scale(x, alpha); + (x, alpha: number) => { + scale(x, alpha); } ); diff --git a/src/core/scale.spec.ts b/src/core/scale.spec.ts index 4293fc5c..ba2dd6a1 100644 --- a/src/core/scale.spec.ts +++ b/src/core/scale.spec.ts @@ -1,21 +1,19 @@ -import { - deepStrictEqual, -} from 'assert'; - -import v = require('..'); +import { equals } from './equals'; +import { scale } from './scale'; +import { array } from './array'; describe('(v) scale', () => { it('should scale v(1, 2, 3) by 2 to v(2, 4, 6)', () => { - const x: v = v.array([1, 2, 3]); - const y: v = v.array([2, 4, 6]); + const x = array([1, 2, 3]); + const y = array([2, 4, 6]); - deepStrictEqual(y, x.scale(2)); + equals(y, x.scale(2)); }); it('should work as the static equivalent', () => { - const x: v = v.array([1, 2, 3]); - const y: v = v.array([2, 4, 6]); + const x = array([1, 2, 3]); + const y = array([2, 4, 6]); - deepStrictEqual(y, v.scale(x, 2)); + equals(y, scale(x, 2)); }); }); diff --git a/src/core/scale.ts b/src/core/scale.ts index 6ac2b979..e841aa34 100644 --- a/src/core/scale.ts +++ b/src/core/scale.ts @@ -1,36 +1,49 @@ -import { get_type } from '../util'; - import { NDArray } from './'; - -let nblas: any; -try { - nblas = require('nblas'); -} catch (err) {} - -NDArray.scale = (x: T | ArrayLike, scalar: number): T => - NDArray.array(x).scale(scalar); - -NDArray.prototype.scale = function(this: T, scalar: number): T { - const { length: l1 } = this; +import { array } from './array'; +import { NDIter } from '../iterator'; +import * as blas from '../blas'; + +/** + * @static + * @memberof module:Globals + * @function scale + * @description + * Multiplies all elements of `x` with a specified `scalar`. + * Accelerated with BLAS `?scal`. + * @param {NDArray} x + * @param {Number} scalar + * @returns {NDArray} + * @example + * import { scale } from 'vectorious/core/scale'; + * + * scale([1, 2, 3], 2); // => array([2, 4, 6]) + */ +export const scale = (x: NDArray | ArrayLike, scalar: number): NDArray => + array(x).scale(scalar); + +/** + * @function scale + * @memberof NDArray.prototype + * @description + * Multiplies all elements of current array with a specified `scalar`. + * Accelerated with BLAS `?scal`. + * @param {Number} scalar + * @returns {this} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([1, 2, 3]).scale(2); // <=> array([2, 4, 6]) + */ +export default function(this: NDArray, scalar: number): NDArray { + const { data: d1, length: l1, dtype } = this; try { - if (!['float32', 'float64'].includes(this.dtype)) { - this.dtype = 'float32'; - this.data = get_type(this.dtype).from(this.data); - } - - const { data: d1 } = this; - if (this.dtype === 'float64') { - nblas.dscal(l1, scalar, d1, 1); - } else if (this.dtype === 'float32') { - nblas.sscal(l1, scalar, d1, 1); - } + blas.scal(dtype, l1, scalar, d1, 1); } catch (err) { - const { data: d1 } = this; + const iter = new NDIter(this); - let i: number; - for (i = 0; i < l1; i += 1) { - d1[i] *= scalar; + for (const i of iter) { + d1[i!] *= scalar; } } diff --git a/src/core/set.bench.ts b/src/core/set.bench.ts index fe458bb0..6523090e 100644 --- a/src/core/set.bench.ts +++ b/src/core/set.bench.ts @@ -1,17 +1,15 @@ -import v = require('..'); +import { set } from './set'; +import { random } from './random'; import { bench } from '../bench'; -const { random, floor } = Math; -const r: (n: number) => v = (n: number): v => - v.array(new Float32Array(n)).fill(random); bench( - 'v', + 'NDArray', 'set', - (n: number): [v, number, number] => [v.random(n), floor(random() * n), random()], - (x: v, i: number, alpha: number) => { + (n: number) => [random(n), Math.floor(Math.random() * n), Math.random()], + (x, i: number, alpha: number) => { x.set(i, alpha); }, - (x: v, i: number, alpha: number) => { - v.set(x, i, alpha); + (x, i: number, alpha: number) => { + set(x, i, alpha); } ); diff --git a/src/core/set.spec.ts b/src/core/set.spec.ts index f3857ba6..36db7806 100644 --- a/src/core/set.spec.ts +++ b/src/core/set.spec.ts @@ -2,11 +2,12 @@ import { strictEqual, } from 'assert'; -import v = require('..'); +import { set } from './set'; +import { array } from './array'; describe('(v) set', () => { it('should set properties as expected', () => { - const x: v = v.array([-1, -1, -1, -1]); + const x = array([-1, -1, -1, -1]); x.set(0, 0); x.set(1, 1); @@ -20,12 +21,12 @@ describe('(v) set', () => { }); it('should work as the static equivalent', () => { - const x: v = v.array([-1, -1, -1, -1]); + const x = array([-1, -1, -1, -1]); - v.set(x, 0, 0); - v.set(x, 1, 1); - v.set(x, 2, 2); - v.set(x, 3, 3); + set(x, 0, 0); + set(x, 1, 1); + set(x, 2, 2); + set(x, 3, 3); strictEqual(0, x.data[0]); strictEqual(1, x.data[1]); diff --git a/src/core/set.ts b/src/core/set.ts index dd594266..2278e9df 100644 --- a/src/core/set.ts +++ b/src/core/set.ts @@ -1,10 +1,36 @@ import { NDArray } from './'; -NDArray.set = (x: T, ...args: number[]): void => { +/** + * @static + * @memberof module:Globals + * @function set + * @description Sets the element at `i, j, ..., n` to `value`. + * @param {NDArray} x + * @param {Number[]} ...indices + * @param {Number} value + * @returns {NDArray} + * @example + * import { set } from 'vectorious/core/set'; + * + * set([1, 2, 3], 1, 0); // => array([1, 0, 3]) + */ +export const set = (x: NDArray, ...args: number[]): void => { x.set(...args); }; -NDArray.prototype.set = function(this: T, ...args: number[]): void { +/** + * @function set + * @memberof NDArray.prototype + * @description Sets the element at `i, j, ..., n` to `value`. + * @param {Number[]} ...indices + * @param {Number} value + * @returns {this} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([1, 2, 3]).set(1, 0); // <=> array([1, 0, 3]) + */ +export default function(this: NDArray, ...args: number[]): void { const indices: number[] = args.slice(0, -1); const value: number = args[args.length - 1]; diff --git a/src/core/sign.bench.ts b/src/core/sign.bench.ts index 660b79fe..83b4899b 100644 --- a/src/core/sign.bench.ts +++ b/src/core/sign.bench.ts @@ -1,14 +1,15 @@ -import v = require('..'); +import { sign } from './sign'; +import { random } from './random'; import { bench } from '../bench'; bench( - 'v', + 'NDArray', 'sign', - (n: number): [v] => [v.random(n)], - (x: v): void => { + (n: number) => [random(n)], + (x): void => { x.sign(); }, - (x: v): void => { - v.sign(x); + (x): void => { + sign(x); } ); diff --git a/src/core/sign.spec.ts b/src/core/sign.spec.ts index e234bd8b..3f55415b 100644 --- a/src/core/sign.spec.ts +++ b/src/core/sign.spec.ts @@ -1,19 +1,18 @@ -import { - deepStrictEqual, -} from 'assert'; - -import v = require('..'); +import { equals } from './equals'; +import { sign } from './sign'; +import { map } from './map'; +import { random } from './random'; describe('(v) sign', () => { it('should work as expected', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.map((value: number) => Math.sign(value)), x.sign()); + equals(map(x, (value: number) => Math.sign(value)), x.sign()); }); it('should work as the static equivalent', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.map((value: number) => Math.sign(value)), v.sign(x)); + equals(map(x, (value: number) => Math.sign(value)), sign(x)); }); }); diff --git a/src/core/sign.ts b/src/core/sign.ts index d780a38a..05b8d690 100644 --- a/src/core/sign.ts +++ b/src/core/sign.ts @@ -1,13 +1,43 @@ import { NDArray } from './'; +import { array } from './array'; +import { NDIter } from '../iterator'; -NDArray.sign = (x: T | ArrayLike): T => NDArray.array(x).sign(); +const { sign: f } = Math; -NDArray.prototype.sign = function(this: T): T { - const { data: d1, length: l1 } = this; +/** + * @static + * @memberof module:Globals + * @function sign + * @description + * Returns the sign of each element of `x`, indicating + * whether it is positive, negative or zero. + * @param {Number} x + * @returns {NDArray} + * @example + * import { sign } from 'vectorious/core/sign'; + * + * sign([1, 2, 3]); // => array([1, 1, 1]) + */ +export const sign = (x: NDArray | ArrayLike): NDArray => array(x).sign(); - let i: number; - for (i = 0; i < l1; i += 1) { - d1[i] = Math.sign(d1[i]); +/** + * @function sign + * @memberof NDArray.prototype + * @description + * Returns the sign of each element of current array, indicating + * whether it is positive, negative or zero. + * @returns {this} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([1, 2, 3]).sign(); // <=> array([1, 1, 1]) + */ +export default function(this: NDArray): NDArray { + const { data: d1 } = this; + const iter = new NDIter(this); + + for (const i of iter) { + d1[i!] = f(d1[i!]); } return this; diff --git a/src/core/sin.bench.ts b/src/core/sin.bench.ts index 0e45bf9e..6fdb6ce2 100644 --- a/src/core/sin.bench.ts +++ b/src/core/sin.bench.ts @@ -1,14 +1,15 @@ -import v = require('..'); +import { sin } from './sin'; +import { random } from './random'; import { bench } from '../bench'; bench( - 'v', + 'NDArray', 'sin', - (n: number): [v] => [v.random(n)], - (x: v): void => { + (n: number) => [random(n)], + (x): void => { x.sin(); }, - (x: v): void => { - v.sin(x); + (x): void => { + sin(x); } ); diff --git a/src/core/sin.spec.ts b/src/core/sin.spec.ts index 634b828d..5d7a68ee 100644 --- a/src/core/sin.spec.ts +++ b/src/core/sin.spec.ts @@ -1,19 +1,18 @@ -import { - deepStrictEqual, -} from 'assert'; - -import v = require('..'); +import { equals } from './equals'; +import { sin } from './sin'; +import { map } from './map'; +import { random } from './random'; describe('(v) sin', () => { it('should work as expected', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.map((value: number) => Math.sin(value)), x.sin()); + equals(map(x, (value: number) => Math.sin(value)), x.sin()); }); it('should work as the static equivalent', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.map((value: number) => Math.sin(value)), v.sin(x)); + equals(map(x, (value: number) => Math.sin(value)), sin(x)); }); }); diff --git a/src/core/sin.ts b/src/core/sin.ts index e8934937..5062ba6f 100644 --- a/src/core/sin.ts +++ b/src/core/sin.ts @@ -1,13 +1,39 @@ import { NDArray } from './'; +import { array } from './array'; +import { NDIter } from '../iterator'; -NDArray.sin = (x: T | ArrayLike): T => NDArray.array(x).sin(); +const { sin: f } = Math; -NDArray.prototype.sin = function(this: T): T { - const { data: d1, length: l1 } = this; +/** + * @static + * @memberof module:Globals + * @function sin + * @description Returns the sine of each element of `x`. + * @param {NDArray} x + * @returns {NDArray} + * @example + * import { sin } from 'vectorious/core/sin'; + * + * sin([0, Math.PI / 2, Math.PI]); // => array([0, 1, 0]) + */ +export const sin = (x: NDArray | ArrayLike): NDArray => array(x).sin(); - let i: number; - for (i = 0; i < l1; i += 1) { - d1[i] = Math.sin(d1[i]); +/** + * @function sin + * @memberof NDArray.prototype + * @description Returns the sine of each element of current array. + * @returns {this} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([0, Math.PI / 2, Math.PI]).sin(); // <=> array([0, 1, 0]) + */ +export default function(this: NDArray): NDArray { + const { data: d1 } = this; + const iter = new NDIter(this); + + for (const i of iter) { + d1[i!] = f(d1[i!]); } return this; diff --git a/src/core/sinh.bench.ts b/src/core/sinh.bench.ts index 005b67d8..0f65292b 100644 --- a/src/core/sinh.bench.ts +++ b/src/core/sinh.bench.ts @@ -1,14 +1,15 @@ -import v = require('..'); +import { sinh } from './sinh'; +import { random } from './random'; import { bench } from '../bench'; bench( - 'v', + 'NDArray', 'sinh', - (n: number): [v] => [v.random(n)], - (x: v): void => { + (n: number) => [random(n)], + (x): void => { x.sinh(); }, - (x: v): void => { - v.sinh(x); + (x): void => { + sinh(x); } ); diff --git a/src/core/sinh.spec.ts b/src/core/sinh.spec.ts index 79a2b920..17936f3c 100644 --- a/src/core/sinh.spec.ts +++ b/src/core/sinh.spec.ts @@ -1,19 +1,18 @@ -import { - deepStrictEqual, -} from 'assert'; - -import v = require('..'); +import { equals } from './equals'; +import { sinh } from './sinh'; +import { map } from './map'; +import { random } from './random'; describe('(v) sinh', () => { it('should work as expected', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.map((value: number) => Math.sinh(value)), x.sinh()); + equals(map(x, (value: number) => Math.sinh(value)), x.sinh()); }); it('should work as the static equivalent', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.map((value: number) => Math.sinh(value)), v.sinh(x)); + equals(map(x, (value: number) => Math.sinh(value)), sinh(x)); }); }); diff --git a/src/core/sinh.ts b/src/core/sinh.ts index b832b81e..816a8af4 100644 --- a/src/core/sinh.ts +++ b/src/core/sinh.ts @@ -1,13 +1,39 @@ import { NDArray } from './'; +import { array } from './array'; +import { NDIter } from '../iterator'; -NDArray.sinh = (x: T | ArrayLike): T => NDArray.array(x).sinh(); +const { sinh: f } = Math; -NDArray.prototype.sinh = function(this: T): T { - const { data: d1, length: l1 } = this; +/** + * @static + * @memberof module:Globals + * @function sinh + * @description Returns the hyperbolic sine of each element of `x`. + * @param {NDArray} x + * @returns {NDArray} + * @example + * import { sinh } from 'vectorious/core/sinh'; + * + * sinh([1, 2, 3]); // => array([1.175201177597046, 3.6268603801727295, 10.017874717712402]) + */ +export const sinh = (x: NDArray | ArrayLike): NDArray => array(x).sinh(); - let i: number; - for (i = 0; i < l1; i += 1) { - d1[i] = Math.sinh(d1[i]); +/** + * @function sinh + * @memberof NDArray.prototype + * @description Returns the hyperbolic sine of each element of current array. + * @returns {this} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([1, 2, 3]).sinh(); // <=> array([1.175201177597046, 3.6268603801727295, 10.017874717712402]) + */ +export default function(this: NDArray): NDArray { + const { data: d1 } = this; + const iter = new NDIter(this); + + for (const i of iter) { + d1[i!] = f(d1[i!]); } return this; diff --git a/src/core/slice.bench.ts b/src/core/slice.bench.ts index 3bb0764d..993b5161 100644 --- a/src/core/slice.bench.ts +++ b/src/core/slice.bench.ts @@ -1,17 +1,15 @@ -import v = require('..'); +import { slice } from './slice'; +import { random } from './random'; import { bench } from '../bench'; -const { random, floor } = Math; -const r: (n: number) => v = (n: number): v => - v.array(new Float32Array(n)).fill(random); bench( - 'v', + 'NDArray', 'copy', - (n: number): [v, number, number, number] => [v.random(n), 0, floor(random() * n), n], - (x: v, start: number, step: number, end: number): void => { + (n: number) => [random(n), 0, Math.floor(Math.random() * n), n], + (x, start: number, step: number, end: number): void => { x.slice(start, step, end); }, - (x: v, start: number, step: number, end: number): void => { - v.slice(x, start, step, end); + (x, start: number, step: number, end: number): void => { + slice(x, start, step, end); } ); diff --git a/src/core/slice.spec.ts b/src/core/slice.spec.ts index 87916143..5c98a1c6 100644 --- a/src/core/slice.spec.ts +++ b/src/core/slice.spec.ts @@ -1,25 +1,23 @@ -import { - deepStrictEqual, -} from 'assert'; - -import v = require('..'); +import { equals } from './equals'; +import { slice } from './slice'; +import { array } from './array'; describe('(v) slice', () => { it('should work as expected', () => { - const x: v = v.array([-1, -2, 3, 4]); + const x = array([-1, -2, 3, 4]); - deepStrictEqual(v.array([-1, 3]), x.slice(0, 4, 2)); + equals(array([-1, 3]), x.slice(0, 4, 2)); }); it('should work as expected', () => { - const x: v = v.array([-1, -2, 3, 4]); + const x = array([-1, -2, 3, 4]); - deepStrictEqual(v.array([-2, 3]), x.slice(1, 3)); + equals(array([-2, 3]), x.slice(1, 3)); }); it('should work as the static equivalent', () => { - const x: v = v.array([-1, -2, 3, 4]); + const x = array([-1, -2, 3, 4]); - deepStrictEqual(v.array([-1, 3]), v.slice(x, 0, 4, 2)); + equals(array([-1, 3]), slice(x, 0, 4, 2)); }); }); diff --git a/src/core/slice.ts b/src/core/slice.ts index 006a39c7..34ad634f 100644 --- a/src/core/slice.ts +++ b/src/core/slice.ts @@ -1,27 +1,54 @@ -import { TypedArray } from '../types'; -import { get_type } from '../util'; - +import { get_strides } from '../util'; import { NDArray } from './'; +import { array } from './array'; -NDArray.slice = ( - x: T | ArrayLike, - start?: number, - step?: number, - end?: number -): T => - NDArray.array(x).slice(start, step, end); +/** + * @static + * @memberof module:Globals + * @function slice + * @description Slices `x` in the corresponding dimension + * @param {NDArray} x + * @param {Number} begin + * @param {Number} end + * @param {Number} step + * @returns {NDArray} + * @example + * import { slice } from 'vectorious/core/slice'; + * + * slice([1, 2, 3, 4], 0, 4, 2); // => array([1, 3]) + */ +export const slice = ( + x: NDArray | ArrayLike, + begin?: number, + end?: number, + step?: number +): NDArray => + array(x).slice(begin, end, step); -NDArray.prototype.slice = function( - this: T, +/** + * @function slice + * @memberof NDArray.prototype + * @description Slices the current array in the corresponding dimension + * @param {Number} begin + * @param {Number} end + * @param {Number} step + * @returns {this} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([1, 2, 3, 4]).slice(0, 4, 2); // => array([1, 3]) + */ +export default function( + this: NDArray, begin: number = 0, end: number = this.shape[0], step: number = 1 -): T { - const { data: d1, shape: s1 } = this; - const { length: ndim } = s1; +): NDArray { + const { shape: s1 } = this; + const nd = s1.length; if (begin < 0 || end < 0) { - return this.slice(begin < 0 ? ndim + begin : begin, end < 0 ? ndim + end : end); + return this.slice(begin < 0 ? nd + begin : begin, end < 0 ? nd + end : end); } if (step === 0) { @@ -30,16 +57,11 @@ NDArray.prototype.slice = function( const s2: number[] = [Math.ceil((end - begin) / step), ...s1.slice(1)]; const l2: number = s2.reduce((sum: number, dim: number) => sum * dim, 1); - const d2: TypedArray = new (get_type(this.dtype))(l2); - - let i: number; - for (i = 0; i < l2; i += 1) { - d2[i] = d1[begin + i * step]; - } + const st2: number[] = get_strides(s2); + this.shape = s2; this.length = l2; - this.data = d2; - this.reshape(...s2); + this.strides = st2; return this; }; diff --git a/src/core/solve.bench.ts b/src/core/solve.bench.ts index 42ab4838..4af8a580 100644 --- a/src/core/solve.bench.ts +++ b/src/core/solve.bench.ts @@ -1,16 +1,17 @@ -import v = require('..'); +import { solve } from './solve'; +import { random } from './random'; import { bench } from '../bench'; const { floor, sqrt } = Math; bench( - 'v', + 'NDArray', 'solve', - (n: number): [v, v] => [v.random(floor(sqrt(n)), floor(sqrt(n))), v.random(floor(sqrt(n)), 1)], - (x: v, y: v): void => { + (n: number) => [random(floor(sqrt(n)), floor(sqrt(n))), random(floor(sqrt(n)), 1)], + (x, y): void => { x.solve(y); }, - (x: v, y: v): void => { - v.solve(x, y); + (x, y): void => { + solve(x, y); } ); diff --git a/src/core/solve.spec.ts b/src/core/solve.spec.ts index bb20c8f5..a7951efe 100644 --- a/src/core/solve.spec.ts +++ b/src/core/solve.spec.ts @@ -1,23 +1,21 @@ -import { - deepStrictEqual, -} from 'assert'; - -import v = require('..'); +import { equals } from './equals'; +import { solve } from './solve'; +import { array } from './array'; describe('(v) solve', () => { it('should work as expected', () => { - const x: v = v.array([[1, 3, 5], [2, 4, 7], [1, 1, 0]]); - const y: v = v.array([[1], [3], [5]]); - const z: v = v.array([[3.25], [1.75], [-1.5]]); + const x = array([[1, 3, 5], [2, 4, 7], [1, 1, 0]]); + const y = array([[1], [3], [5]]); + const z = array([[3.25], [1.75], [-1.5]]); - deepStrictEqual(z, x.solve(y)); + equals(z, x.solve(y)); }); it('should work as the static equivalent', () => { - const x: v = v.array([[1, 3, 5], [2, 4, 7], [1, 1, 0]]); - const y: v = v.array([[1], [3], [5]]); - const z: v = v.array([[3.25], [1.75], [-1.5]]); + const x = array([[1, 3, 5], [2, 4, 7], [1, 1, 0]]); + const y = array([[1], [3], [5]]); + const z = array([[3.25], [1.75], [-1.5]]); - deepStrictEqual(z, v.solve(x, y)); + equals(z, solve(x, y)); }); }); diff --git a/src/core/solve.ts b/src/core/solve.ts index 43bbbbf3..459552d9 100644 --- a/src/core/solve.ts +++ b/src/core/solve.ts @@ -1,32 +1,45 @@ -import { get_type } from '../util'; - import { NDArray } from './'; +import { array } from './array'; +import * as lapack from '../lapack'; -let nlapack: any; -try { - nlapack = require('nlapack'); -} catch (err) {} - -NDArray.solve = (x: T | ArrayLike, y: T | ArrayLike): T => - NDArray.array(x).solve(NDArray.array(y)); +/** + * @static + * @memberof module:Globals + * @function solve + * @description + * Solves the equation AX = B (where A is `x` and B is `y`). + * Accelerated with LAPACK `?gesv`. + * @param {NDArray} x + * @param {NDArray} y + * @returns {NDArray} + * @example + * import { solve } from 'vectorious/core/solve'; + * + * solve([[1, 3, 5], [2, 4, 7], [1, 1, 0]], [[1], [3], [5]]); // => array([[3.25], [1.75], [-1.5]]) + */ +export const solve = (x: NDArray | ArrayLike, y: NDArray | ArrayLike): NDArray => + array(x).solve(array(y)); -NDArray.prototype.solve = function(this: T, x: T): T { - const [n, nrhs] = x.shape; +/** + * @function solve + * @memberof NDArray.prototype + * @description + * Solves the equation AX = B (where A is current matrix and B is `x`). + * Accelerated with LAPACK `?gesv`. + * @param {NDArray} x + * @returns {NDArray} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([[1, 3, 5], [2, 4, 7], [1, 1, 0]]).solve([[1], [3], [5]]); // => array([[3.25], [1.75], [-1.5]]) + */ +export default function(this: NDArray, x: NDArray): NDArray { + const { data: d1, dtype } = this; + const { data: d2, shape: [n, nrhs] } = x; try { - if (!['float32', 'float64'].includes(this.dtype)) { - this.dtype = 'float32'; - this.data = get_type(this.dtype).from(this.data); - } - - const { data: d1 } = this; - const { data: d2 } = x; const ipiv: Int32Array = new Int32Array(n); - if (this.dtype === 'float64') { - nlapack.dgesv(n, nrhs, d1, n, ipiv, d2, nrhs); - } else if (this.dtype === 'float32') { - nlapack.sgesv(n, nrhs, d1, n, ipiv, d2, nrhs); - } + lapack.gesv(dtype, n, nrhs, d1, n, ipiv, d2, nrhs); } catch (err) { const [LU, ipiv] = this.lu_factor(); const { data: d1 } = LU; diff --git a/src/core/sqrt.bench.ts b/src/core/sqrt.bench.ts index 507013f0..509417e0 100644 --- a/src/core/sqrt.bench.ts +++ b/src/core/sqrt.bench.ts @@ -1,14 +1,15 @@ -import v = require('..'); +import { sqrt } from './sqrt'; +import { random } from './random'; import { bench } from '../bench'; bench( - 'v', + 'NDArray', 'sqrt', - (n: number): [v] => [v.random(n)], - (x: v): void => { + (n: number) => [random(n)], + (x): void => { x.sqrt(); }, - (x: v): void => { - v.sqrt(x); + (x): void => { + sqrt(x); } ); diff --git a/src/core/sqrt.spec.ts b/src/core/sqrt.spec.ts index 0b681ac9..7dfa01ed 100644 --- a/src/core/sqrt.spec.ts +++ b/src/core/sqrt.spec.ts @@ -1,19 +1,18 @@ -import { - deepStrictEqual, -} from 'assert'; - -import v = require('..'); +import { equals } from './equals'; +import { sqrt } from './sqrt'; +import { map } from './map'; +import { random } from './random'; describe('(v) sqrt', () => { it('should work as expected', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.map((value: number) => Math.sqrt(value)), x.sqrt()); + equals(map(x, (value: number) => Math.sqrt(value)), x.sqrt()); }); it('should work as the static equivalent', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.map((value: number) => Math.sqrt(value)), v.sqrt(x)); + equals(map(x, (value: number) => Math.sqrt(value)), sqrt(x)); }); }); diff --git a/src/core/sqrt.ts b/src/core/sqrt.ts index 8527f020..9bc6442a 100644 --- a/src/core/sqrt.ts +++ b/src/core/sqrt.ts @@ -1,13 +1,39 @@ import { NDArray } from './'; +import { array } from './array'; +import { NDIter } from '../iterator'; -NDArray.sqrt = (x: T | ArrayLike): T => NDArray.array(x).sqrt(); +const { sqrt: f } = Math; -NDArray.prototype.sqrt = function(this: T): T { - const { data: d1, length: l1 } = this; +/** + * @static + * @memberof module:Globals + * @function sqrt + * @description Returns the positive square root of each element of `x`. + * @param {NDArray} x + * @returns {NDArray} + * @example + * import { sqrt } from 'vectorious/core/sqrt'; + * + * sqrt([1, 4, 9]); // => array([1, 2, 3]) + */ +export const sqrt = (x: NDArray | ArrayLike): NDArray => array(x).sqrt(); - let i: number; - for (i = 0; i < l1; i += 1) { - d1[i] = Math.sqrt(d1[i]); +/** + * @function sqrt + * @memberof NDArray.prototype + * @description Returns the positive square root of each element of current array. + * @returns {this} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([1, 4, 9]); // <=> array([1, 2, 3]) + */ +export default function(this: NDArray): NDArray { + const { data: d1 } = this; + const iter = new NDIter(this); + + for (const i of iter) { + d1[i!] = f(d1[i!]); } return this; diff --git a/src/core/square.bench.ts b/src/core/square.bench.ts index e866db1c..0a3a2475 100644 --- a/src/core/square.bench.ts +++ b/src/core/square.bench.ts @@ -1,16 +1,17 @@ -import v = require('..'); +import { square } from './square'; +import { random } from './random'; import { bench } from '../bench'; const { floor, sqrt } = Math; bench( - 'v', + 'NDArray', 'square', - (n: number): [v] => [v.random(floor(sqrt(n)), floor(sqrt(n)))], - (x: v): void => { + (n: number) => [random(floor(sqrt(n)), floor(sqrt(n)))], + (x): void => { x.square(); }, - (x: v): void => { - v.square(x); + (x): void => { + square(x); } ); diff --git a/src/core/square.spec.ts b/src/core/square.spec.ts index 0402b727..7dce094c 100644 --- a/src/core/square.spec.ts +++ b/src/core/square.spec.ts @@ -2,16 +2,17 @@ import { throws, } from 'assert'; -import v = require('..'); +import { square } from './square'; +import { array } from './array'; describe('(v) square', () => { it('should throw error if matrix is not square', () => { - const x: v = v.array([[0, 0]]); + const x = array([[0, 0]]); throws(() => { x.square(); }, Error); }); it('should work as the static equivalent', () => { - const x: v = v.array([[0, 0]]); - throws(() => { v.square(x); }, Error); + const x = array([[0, 0]]); + throws(() => { square(x); }, Error); }); }); diff --git a/src/core/square.ts b/src/core/square.ts index 79bf1aa3..26ed25a0 100644 --- a/src/core/square.ts +++ b/src/core/square.ts @@ -1,10 +1,33 @@ import { NDArray } from './'; +import { array } from './array'; -NDArray.square = (x: T | ArrayLike): void => { - NDArray.array(x).square(); +/** + * @static + * @memberof module:Globals + * @function square + * @description Asserts if `x` is square. + * @param {NDArray} x + * @throws {Error} matrix is not square + * @example + * import { square } from 'vectorious/core/square'; + * + * square([1, 2, 3]); // Error: matrix is not square + */ +export const square = (x: NDArray | ArrayLike): void => { + array(x).square(); }; -NDArray.prototype.square = function(this: T): void { +/** + * @function square + * @memberof NDArray.prototype + * @description Asserts if current matrix is square. + * @throws {Error} matrix is not square + * @example + * import { array } from 'vectorious/core/array'; + * + * array([1, 2, 3]).square(); // Error: matrix is not square + */ +export default function(this: NDArray): void { const { length } = this.shape; const [r, c] = this.shape; diff --git a/src/core/subtract.bench.ts b/src/core/subtract.bench.ts index 53b1fe43..97f3b0a4 100644 --- a/src/core/subtract.bench.ts +++ b/src/core/subtract.bench.ts @@ -1,14 +1,15 @@ -import v = require('..'); +import { subtract } from './subtract'; +import { random } from './random'; import { bench } from '../bench'; bench( - 'v', + 'NDArray', 'subtract', - (n: number): [v, v] => [v.random(n), v.random(n)], - (x: v, y: v): void => { + (n: number) => [random(n), random(n)], + (x, y): void => { x.subtract(y); }, - (x: v, y: v): void => { - v.subtract(x, y); + (x, y): void => { + subtract(x, y); } ); diff --git a/src/core/subtract.spec.ts b/src/core/subtract.spec.ts index 9becc013..a0e642e2 100644 --- a/src/core/subtract.spec.ts +++ b/src/core/subtract.spec.ts @@ -1,38 +1,28 @@ -import { - deepStrictEqual, - throws, -} from 'assert'; - -import v = require('..'); +import { equals } from './equals'; +import { subtract } from './subtract'; +import { array } from './array'; describe('(v) subtract', () => { it('should return empty vector if subtracting two empty vectors', () => { - const x: v = v.array(); - const y: v = v.array(); - - deepStrictEqual(v.array(), x.subtract(y)); - }); - - it('should throw error if sizes do not match', () => { - const x: v = v.array([1]); - const y: v = v.array([1, 2]); + const x = array(); + const y = array(); - throws(() => { x.subtract(y); }, Error); + equals(array(), x.subtract(y)); }); it('should produce v(-3, -3, -3) from v(1, 2, 3) and v(4, 5, 6)', () => { - const x: v = v.array([1, 2, 3]); - const y: v = v.array([4, 5, 6]); - const z: v = v.array([-3, -3, -3]); + const x = array([1, 2, 3]); + const y = array([4, 5, 6]); + const z = array([-3, -3, -3]); - deepStrictEqual(z, x.subtract(y)); + equals(z, x.subtract(y)); }); it('should work as the static equivalent', () => { - const x: v = v.array([1, 2, 3]); - const y: v = v.array([4, 5, 6]); - const z: v = v.array([-3, -3, -3]); + const x = array([1, 2, 3]); + const y = array([4, 5, 6]); + const z = array([-3, -3, -3]); - deepStrictEqual(z, v.subtract(x, y)); + equals(z, subtract(x, y)); }); }); diff --git a/src/core/subtract.ts b/src/core/subtract.ts index 8710a54a..c6aeeb88 100644 --- a/src/core/subtract.ts +++ b/src/core/subtract.ts @@ -1,8 +1,35 @@ import { NDArray } from './'; +import { array } from './array'; -NDArray.subtract = (x: T | ArrayLike, y: T | ArrayLike): T => - NDArray.array(x).subtract(NDArray.array(y)); +/** + * @static + * @memberof module:Globals + * @function subtract + * @description + * Subtracts `y` from `x`. + * Accelerated with BLAS `?axpy`. + * @param {NDArray} x + * @returns {NDArray} + * @example + * import { subtract } from 'vectorious/core/subtract'; + * + * subtract([1, 2, 3], [1, 1, 1]); // => array([0, 1, 2]) + */ +export const subtract = (x: NDArray | ArrayLike, y: NDArray | ArrayLike): NDArray => + array(x).subtract(array(y)); -NDArray.prototype.subtract = function(this: T, x: T): T { +/** + * @function subtract + * @memberof NDArray.prototype + * @description + * Subtracts `x` from the current array. + * Accelerated with BLAS `?axpy`. + * @returns {this} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([1, 2, 3]).subtract([1, 1, 1]); // <=> array([0, 1, 2]) + */ +export default function (this: NDArray, x: NDArray): NDArray { return this.add(x, -1); }; diff --git a/src/core/sum.bench.ts b/src/core/sum.bench.ts index 30815962..beb1b0c8 100644 --- a/src/core/sum.bench.ts +++ b/src/core/sum.bench.ts @@ -1,14 +1,15 @@ -import v = require('..'); +import { sum } from './sum'; +import { random } from './random'; import { bench } from '../bench'; bench( - 'v', + 'NDArray', 'sum', - (n: number): [v] => [v.random(n)], - (x: v): void => { + (n: number) => [random(n)], + (x): void => { x.sum(); }, - (x: v): void => { - v.sum(x); + (x): void => { + sum(x); } ); diff --git a/src/core/sum.spec.ts b/src/core/sum.spec.ts index ea950d89..00abe698 100644 --- a/src/core/sum.spec.ts +++ b/src/core/sum.spec.ts @@ -1,19 +1,18 @@ -import { - deepStrictEqual, -} from 'assert'; +import { strictEqual } from 'assert'; -import v = require('..'); +import { sum } from './sum'; +import { random } from './random'; describe('(v) sum', () => { it('should work as expected', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.reduce((acc: number, value: number) => acc + value, 0), x.sum()); + strictEqual(x.reduce((acc: number, value: number) => acc + value, 0), x.sum()); }); it('should work as the static equivalent', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.reduce((acc: number, value: number) => acc + value, 0), v.sum(x)); + strictEqual(x.reduce((acc: number, value: number) => acc + value, 0), sum(x)); }); }); diff --git a/src/core/sum.ts b/src/core/sum.ts index 9859d8bf..f5d51327 100644 --- a/src/core/sum.ts +++ b/src/core/sum.ts @@ -1,14 +1,38 @@ import { NDArray } from './'; +import { array } from './array'; +import { NDIter } from '../iterator'; -NDArray.sum = (x: T | ArrayLike): number => NDArray.array(x).sum(); +/** + * @static + * @memberof module:Globals + * @function sum + * @description Sum of `x` + * @param {NDArray} x + * @returns {Number} + * @example + * import { sum } from 'vectorious/core/sum'; + * + * sum([1, 2, 3]); // => 6 + */ +export const sum = (x: NDArray | ArrayLike): number => array(x).sum(); -NDArray.prototype.sum = function(this: T): number { - const { data: d1, length: l1 } = this; +/** + * @function sum + * @memberof NDArray.prototype + * @description Sum of array elements + * @returns {Number} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([1, 2, 3]).sum(); // => 6 + */ +export default function(this: NDArray): number { + const { data: d1 } = this; + const iter = new NDIter(this); - let i: number; let sum: number = 0; - for (i = 0; i < l1; i += 1) { - sum += d1[i]; + for (const i of iter) { + sum += d1[i!]; } return sum; diff --git a/src/core/swap.bench.ts b/src/core/swap.bench.ts index 9f3a1a9e..8791cdfe 100644 --- a/src/core/swap.bench.ts +++ b/src/core/swap.bench.ts @@ -1,16 +1,15 @@ -import v = require('..'); +import { swap } from './swap'; +import { random } from './random'; import { bench } from '../bench'; -const { floor, random, sqrt } = Math; - bench( - 'v', + 'NDArray', 'swap', - (n: number): [v, number, number] => [v.random(n), floor(random() * sqrt(n)), floor(random() * sqrt(n))], - (x: v, i: number, j: number): void => { + (n: number) => [random(n), Math.floor(Math.random() * Math.sqrt(n)), Math.floor(Math.random() * Math.sqrt(n))], + (x, i: number, j: number): void => { x.swap(i, j); }, - (x: v, i: number, j: number): void => { - v.swap(x, i, j); + (x, i: number, j: number): void => { + swap(x, i, j); } ); diff --git a/src/core/swap.spec.ts b/src/core/swap.spec.ts index d6860482..93ffe6a5 100644 --- a/src/core/swap.spec.ts +++ b/src/core/swap.spec.ts @@ -1,13 +1,14 @@ import { - deepStrictEqual, throws, } from 'assert'; -import v = require('..'); +import { equals } from './equals'; +import { swap } from './swap'; +import { array } from './array'; describe('(v) swap', () => { it('should throw error if index out of bounds', () => { - const x: v = v.array([[1, 2], [3, 4]]); + const x = array([[1, 2], [3, 4]]); throws(() => { x.swap(-1, 0); }, Error); throws(() => { x.swap(0, -1); }, Error); @@ -16,17 +17,17 @@ describe('(v) swap', () => { }); it('should work as expected', () => { - const x: v = v.array([[1, 2], [3, 4], [5, 6]]); + const x = array([[1, 2], [3, 4], [5, 6]]); x.swap(0, 1); - deepStrictEqual(v.array([[3, 4], [1, 2], [5, 6]]), x); + equals(array([[3, 4], [1, 2], [5, 6]]), x); x.swap(1, 2); - deepStrictEqual(v.array([[3, 4], [5, 6], [1, 2]]), x); + equals(array([[3, 4], [5, 6], [1, 2]]), x); }); it('should work as the static equivalent', () => { - const x: v = v.array([[1, 2], [3, 4], [5, 6]]); + const x = array([[1, 2], [3, 4], [5, 6]]); - deepStrictEqual(v.array([[3, 4], [1, 2], [5, 6]]), v.swap(x, 0, 1)); + equals(array([[3, 4], [1, 2], [5, 6]]), swap(x, 0, 1)); }); }); diff --git a/src/core/swap.ts b/src/core/swap.ts index e730c408..fb47ca96 100644 --- a/src/core/swap.ts +++ b/src/core/swap.ts @@ -1,11 +1,38 @@ import { TypedArray } from '../types'; import { NDArray } from './'; +import { array } from './array'; -NDArray.swap = (x: T | ArrayLike, i: number, j: number): T => - NDArray.array(x).swap(i, j); +/** + * @static + * @memberof module:Globals + * @function swap + * @description Swaps two rows `i` and `j` in `x`. + * @param {NDArray} x + * @param {Number} i + * @param {Number} j + * @returns {NDArray} + * @example + * import { swap } from 'vectorious/core/swap'; + * + * swap([[1, 2], [3, 4]], 0, 1); // => array([[3, 4], [1, 2]]) + */ +export const swap = (x: NDArray | ArrayLike, i: number, j: number): NDArray => + array(x).swap(i, j); -NDArray.prototype.swap = function(this: T, i: number, j: number): T { +/** + * @function swap + * @memberof NDArray.prototype + * @description Swaps two rows `i` and `j` in current matrix + * @param {Number} i + * @param {Number} j + * @returns {this} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([[1, 2], [3, 4]]); // <=> array([[3, 4], [1, 2]]) + */ +export default function(this: NDArray, i: number, j: number): NDArray { this.check(i, 0); this.check(j, 0); diff --git a/src/core/tan.bench.ts b/src/core/tan.bench.ts index 165e8ced..0806378e 100644 --- a/src/core/tan.bench.ts +++ b/src/core/tan.bench.ts @@ -1,14 +1,15 @@ -import v = require('..'); +import { tan } from './tan'; +import { random } from './random'; import { bench } from '../bench'; bench( - 'v', + 'NDArray', 'tan', - (n: number): [v] => [v.random(n)], - (x: v): void => { + (n: number) => [random(n)], + (x): void => { x.tan(); }, - (x: v): void => { - v.tan(x); + (x): void => { + tan(x); } ); diff --git a/src/core/tan.spec.ts b/src/core/tan.spec.ts index 034bbe06..48ae8257 100644 --- a/src/core/tan.spec.ts +++ b/src/core/tan.spec.ts @@ -1,19 +1,18 @@ -import { - deepStrictEqual, -} from 'assert'; - -import v = require('..'); +import { equals } from './equals'; +import { tan } from './tan'; +import { map } from './map'; +import { random } from './random'; describe('(v) tan', () => { it('should work as expected', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.map((value: number) => Math.tan(value)), x.tan()); + equals(map(x, (value: number) => Math.tan(value)), x.tan()); }); it('should work as the static equivalent', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.map((value: number) => Math.tan(value)), v.tan(x)); + equals(map(x, (value: number) => Math.tan(value)), tan(x)); }); }); diff --git a/src/core/tan.ts b/src/core/tan.ts index e692f897..8d4938cc 100644 --- a/src/core/tan.ts +++ b/src/core/tan.ts @@ -1,13 +1,39 @@ import { NDArray } from './'; +import { array } from './array'; +import { NDIter } from '../iterator'; -NDArray.tan = (x: T | ArrayLike): T => NDArray.array(x).tan(); +const { tan: f } = Math; -NDArray.prototype.tan = function(this: T): T { - const { data: d1, length: l1 } = this; +/** + * @static + * @memberof module:Globals + * @function tan + * @description Returns the tangent of each element of `x`. + * @param {NDArray} x + * @returns {NDArray} + * @example + * import { tan } from 'vectorious/core/tan'; + * + * tan([1, 2, 3]); // => array([1.5574077367782593, -2.185039758682251, -0.14254654943943024]) + */ +export const tan = (x: NDArray | ArrayLike): NDArray => array(x).tan(); - let i: number; - for (i = 0; i < l1; i += 1) { - d1[i] = Math.tan(d1[i]); +/** + * @function tan + * @memberof NDArray.prototype + * @description Returns the tangent of each element of current array. + * @returns {this} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([1, 2, 3]).tan(); // <=> array([1.5574077367782593, -2.185039758682251, -0.14254654943943024]) + */ +export default function(this: NDArray): NDArray { + const { data: d1 } = this; + const iter = new NDIter(this); + + for (const i of iter) { + d1[i!] = f(d1[i!]); } return this; diff --git a/src/core/tanh.bench.ts b/src/core/tanh.bench.ts index 582bc3cd..10923f24 100644 --- a/src/core/tanh.bench.ts +++ b/src/core/tanh.bench.ts @@ -1,14 +1,15 @@ -import v = require('..'); +import { tanh } from './tanh'; +import { random } from './random'; import { bench } from '../bench'; bench( - 'v', + 'NDArray', 'tanh', - (n: number): [v] => [v.random(n)], - (x: v): void => { + (n: number) => [random(n)], + (x): void => { x.tanh(); }, - (x: v): void => { - v.tanh(x); + (x): void => { + tanh(x); } ); diff --git a/src/core/tanh.spec.ts b/src/core/tanh.spec.ts index 14162fd9..ec0f9118 100644 --- a/src/core/tanh.spec.ts +++ b/src/core/tanh.spec.ts @@ -1,19 +1,18 @@ -import { - deepStrictEqual, -} from 'assert'; - -import v = require('..'); +import { equals } from './equals'; +import { tanh } from './tanh'; +import { map } from './map'; +import { random } from './random'; describe('(v) tanh', () => { it('should work as expected', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.map((value: number) => Math.tanh(value)), x.tanh()); + equals(map(x, (value: number) => Math.tanh(value)), x.tanh()); }); it('should work as the static equivalent', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.map((value: number) => Math.tanh(value)), v.tanh(x)); + equals(map(x, (value: number) => Math.tanh(value)), tanh(x)); }); }); diff --git a/src/core/tanh.ts b/src/core/tanh.ts index f00049b4..1e701c68 100644 --- a/src/core/tanh.ts +++ b/src/core/tanh.ts @@ -1,13 +1,39 @@ import { NDArray } from './'; +import { array } from './array'; +import { NDIter } from '../iterator'; -NDArray.tanh = (x: T | ArrayLike): T => NDArray.array(x).tanh(); +const { tanh: f } = Math; -NDArray.prototype.tanh = function(this: T): T { - const { data: d1, length: l1 } = this; +/** + * @static + * @memberof module:Globals + * @function tanh + * @description Returns the hyperbolic tangent of each element of `x`. + * @param {NDArray} x + * @returns {NDArray} + * @example + * import { tanh } from 'vectorious/core/tanh'; + * + * tanh([1, 2, 3]); // => array([0.7615941762924194, 0.9640275835990906, 0.9950547814369202]) + */ +export const tanh = (x: NDArray | ArrayLike): NDArray => array(x).tanh(); - let i: number; - for (i = 0; i < l1; i += 1) { - d1[i] = Math.tanh(d1[i]); +/** + * @function tanh + * @memberof NDArray.prototype + * @description Returns the hyperbolic tangent of each element of current array. + * @returns {this} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([1, 2, 3]).tanh(); // <=> array([0.7615941762924194, 0.9640275835990906, 0.9950547814369202]) + */ +export default function(this: NDArray): NDArray { + const { data: d1 } = this; + const iter = new NDIter(this); + + for (const i of iter) { + d1[i!] = f(d1[i!]); } return this; diff --git a/src/core/toArray.bench.ts b/src/core/toArray.bench.ts index 38c008d6..c86b367a 100644 --- a/src/core/toArray.bench.ts +++ b/src/core/toArray.bench.ts @@ -1,15 +1,15 @@ -import v = require('..'); +import { toArray } from './toArray'; +import { random } from './random'; import { bench } from '../bench'; -const r: (n: number) => v = (n: number): v => v.random(n); bench( - 'v', + 'NDArray', 'toArray', - (n: number): [v] => [v.random(n)], - (x: v): void => { + (n: number) => [random(n)], + (x): void => { x.toArray(); }, - (x: v): void => { - v.toArray(x); + (x): void => { + toArray(x); } ); diff --git a/src/core/toArray.spec.ts b/src/core/toArray.spec.ts index cf22819b..6b404f36 100644 --- a/src/core/toArray.spec.ts +++ b/src/core/toArray.spec.ts @@ -1,24 +1,22 @@ -import { - deepStrictEqual, -} from 'assert'; - -import v = require('..'); +import { equals } from './equals'; +import { array } from './array'; +import { toArray } from './toArray'; describe('(v) toArray', () => { it('should work as expected', () => { - deepStrictEqual([], v.array().toArray()); - deepStrictEqual([0, 1, 2, 3, 4, 5, 6, 7], v.array([0, 1, 2, 3, 4, 5, 6, 7]).toArray()); - deepStrictEqual([[0, 1, 2, 3], [4, 5, 6, 7]], v.array([[0, 1, 2, 3], [4, 5, 6, 7]]).toArray()); - deepStrictEqual([[[0, 1], [2, 3]], [[4, 5], [6, 7]]], v.array([[[0, 1], [2, 3]], [[4, 5], [6, 7]]]).toArray()); + equals([], array().toArray()); + equals([0, 1, 2, 3, 4, 5, 6, 7], array([0, 1, 2, 3, 4, 5, 6, 7]).toArray()); + equals([[0, 1, 2, 3], [4, 5, 6, 7]], array([[0, 1, 2, 3], [4, 5, 6, 7]]).toArray()); + equals([[[0, 1], [2, 3]], [[4, 5], [6, 7]]], array([[[0, 1], [2, 3]], [[4, 5], [6, 7]]]).toArray()); }); it('should work as the static equivalent', () => { - deepStrictEqual([], v.array().toArray()); - deepStrictEqual([0, 1, 2, 3, 4, 5, 6, 7], v.toArray(v.array([0, 1, 2, 3, 4, 5, 6, 7]))); - deepStrictEqual([[0, 1, 2, 3], [4, 5, 6, 7]], v.toArray(v.array([[0, 1, 2, 3], [4, 5, 6, 7]]))); - deepStrictEqual( + equals([], array().toArray()); + equals([0, 1, 2, 3, 4, 5, 6, 7], toArray(array([0, 1, 2, 3, 4, 5, 6, 7]))); + equals([[0, 1, 2, 3], [4, 5, 6, 7]], toArray(array([[0, 1, 2, 3], [4, 5, 6, 7]]))); + equals( [[[0, 1], [2, 3]], [[4, 5], [6, 7]]], - v.toArray(v.array([[[0, 1], [2, 3]], [[4, 5], [6, 7]]])) + toArray(array([[[0, 1], [2, 3]], [[4, 5], [6, 7]]])) ); }); }); diff --git a/src/core/toArray.ts b/src/core/toArray.ts index 3a1407d5..bfb6d743 100644 --- a/src/core/toArray.ts +++ b/src/core/toArray.ts @@ -1,8 +1,31 @@ import { NDArray } from './'; +import { array } from './array'; -NDArray.toArray = (x: T | ArrayLike): number[] => NDArray.array(x).toArray(); +/** + * @static + * @memberof module:Globals + * @function toArray + * @description Converts `x` into a JavaScript array. + * @param {NDArray} x + * @returns {Array} + * @example + * import { toArray } from 'vectorious/core/toArray'; + * + * toArray([1, 2, 3]); // => [1, 2, 3] + */ +export const toArray = (x: NDArray | ArrayLike): number[] => array(x).toArray(); -NDArray.prototype.toArray = function(this: T): number[] { +/** + * @function toArray + * @memberof NDArray.prototype + * @description Converts current vector into a JavaScript array. + * @returns {Array} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([1, 2, 3]).toArray(); // => [1, 2, 3] + */ +export default function(this: NDArray): number[] { const { length: l1, shape: s1 } = this; const { length: ndim } = s1; diff --git a/src/core/toString.bench.ts b/src/core/toString.bench.ts index 8f72aaf4..40ad531b 100644 --- a/src/core/toString.bench.ts +++ b/src/core/toString.bench.ts @@ -1,15 +1,15 @@ -import v = require('..'); +import { toString } from './toString'; +import { random } from './random'; import { bench } from '../bench'; -const r: (n: number) => v = (n: number): v => v.random(n); bench( - 'v', + 'NDArray', 'toString', - (n: number): [v] => [v.random(n)], - (x: v): void => { + (n: number) => [random(n)], + (x): void => { x.toString(); }, - (x: v): void => { - v.toString(x); + (x): void => { + toString(x); } ); diff --git a/src/core/toString.spec.ts b/src/core/toString.spec.ts index d51fb612..c8008eec 100644 --- a/src/core/toString.spec.ts +++ b/src/core/toString.spec.ts @@ -2,38 +2,39 @@ import { strictEqual, } from 'assert'; -import v = require('..'); +import { toString } from './toString'; +import { array } from './array'; describe('(v) toString', () => { it('should work as expected', () => { - strictEqual('array([],dtype=float32)', v.array().toString().replace(/\s/g, '')); + strictEqual('array([],dtype=float64)', array().toString().replace(/\s/g, '')); strictEqual( - 'array([0,1,2,3,4,5,6,7],dtype=float32)', - v.array([0, 1, 2, 3, 4, 5, 6, 7]).toString().replace(/\s/g, '') + 'array([0,1,2,3,4,5,6,7],dtype=float64)', + array([0, 1, 2, 3, 4, 5, 6, 7]).toString().replace(/\s/g, '') ); strictEqual( - 'array([[0,1,2,3],[4,5,6,7]],dtype=float32)', - v.array([[0, 1, 2, 3], [4, 5, 6, 7]]).toString().replace(/\s/g, '') + 'array([[0,1,2,3],[4,5,6,7]],dtype=float64)', + array([[0, 1, 2, 3], [4, 5, 6, 7]]).toString().replace(/\s/g, '') ); strictEqual( - 'array([[[0,1],[2,3]],[[4,5],[6,7]]],dtype=float32)', - v.array([[[0, 1], [2, 3]], [[4, 5], [6, 7]]]).toString().replace(/\s/g, '') + 'array([[[0,1],[2,3]],[[4,5],[6,7]]],dtype=float64)', + array([[[0, 1], [2, 3]], [[4, 5], [6, 7]]]).toString().replace(/\s/g, '') ); }); it('should work as the static equivalent', () => { - strictEqual('array([],dtype=float32)', v.toString(v.array()).replace(/\s/g, '')); + strictEqual('array([],dtype=float64)', toString(array()).replace(/\s/g, '')); strictEqual( - 'array([0,1,2,3,4,5,6,7],dtype=float32)', - v.toString(v.array([0, 1, 2, 3, 4, 5, 6, 7])).replace(/\s/g, '') + 'array([0,1,2,3,4,5,6,7],dtype=float64)', + toString(array([0, 1, 2, 3, 4, 5, 6, 7])).replace(/\s/g, '') ); strictEqual( - 'array([[0,1,2,3],[4,5,6,7]],dtype=float32)', - v.toString(v.array([[0, 1, 2, 3], [4, 5, 6, 7]])).replace(/\s/g, '') + 'array([[0,1,2,3],[4,5,6,7]],dtype=float64)', + toString(array([[0, 1, 2, 3], [4, 5, 6, 7]])).replace(/\s/g, '') ); strictEqual( - 'array([[[0,1],[2,3]],[[4,5],[6,7]]],dtype=float32)', - v.toString(v.array([[[0, 1], [2, 3]], [[4, 5], [6, 7]]])).replace(/\s/g, '') + 'array([[[0,1],[2,3]],[[4,5],[6,7]]],dtype=float64)', + toString(array([[[0, 1], [2, 3]], [[4, 5], [6, 7]]])).replace(/\s/g, '') ); }); }); diff --git a/src/core/toString.ts b/src/core/toString.ts index 726b6b35..77e68e8d 100644 --- a/src/core/toString.ts +++ b/src/core/toString.ts @@ -1,11 +1,32 @@ import { inspect } from 'util'; -import { inspectSymbol, NDArray } from './'; +import { NDArray } from './'; +import { array } from './array'; -NDArray.toString = (x: T | ArrayLike): string => x.toString(); +/** + * @static + * @memberof module:Globals + * @function toString + * @description Converts `x` into a readable formatted string. + * @param {NDArray} x + * @returns {String} + * @example + * import { toString } from 'vectorious/core/toString'; + * + * toString([1, 2, 3]); // => '1,2,3' + */ +export const toString = (x: NDArray | ArrayLike): string => array(x).toString(); -NDArray.prototype.toString = function(this: T): string { +/** + * @function toString + * @memberof NDArray.prototype + * @description Converts current vector into a readable formatted string. + * @returns {String} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([1, 2, 3]).toString(); // => '1,2,3' + */ +export default function (this: NDArray): string { return `array(${inspect(this.toArray(), { depth: 10, breakLength: 40 })}, dtype=${this.dtype})`; }; - -NDArray.prototype[inspectSymbol] = NDArray.prototype.toString; diff --git a/src/core/trace.bench.ts b/src/core/trace.bench.ts index 580a4708..6a37d23f 100644 --- a/src/core/trace.bench.ts +++ b/src/core/trace.bench.ts @@ -1,16 +1,17 @@ -import v = require('..'); +import { trace } from './trace'; +import { random } from './random'; import { bench } from '../bench'; const { floor, sqrt } = Math; bench( - 'v', + 'NDArray', 'trace', - (n: number): [v] => [v.random(floor(sqrt(n)), floor(sqrt(n)))], - (x: v): void => { + (n: number) => [random(floor(sqrt(n)), floor(sqrt(n)))], + (x): void => { x.trace(); }, - (x: v): void => { - v.trace(x); + (x): void => { + trace(x); } ); diff --git a/src/core/trace.spec.ts b/src/core/trace.spec.ts index 59897b1a..9223e0b0 100644 --- a/src/core/trace.spec.ts +++ b/src/core/trace.spec.ts @@ -2,22 +2,23 @@ import { strictEqual, } from 'assert'; -import v = require('..'); +import { trace } from './trace'; +import { array } from './array'; describe('(v) trace', () => { it('should work as expected', () => { - const x: v = v.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]); - const y: v = v.array([[1, 2], [3, 4]]); + const x = array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]); + const y = array([[1, 2], [3, 4]]); strictEqual(15, x.trace()); strictEqual(5, y.trace()); }); it('should work as the static equivalent', () => { - const x: v = v.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]); - const y: v = v.array([[1, 2], [3, 4]]); + const x = array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]); + const y = array([[1, 2], [3, 4]]); - strictEqual(15, v.trace(x)); - strictEqual(5, v.trace(y)); + strictEqual(15, trace(x)); + strictEqual(5, trace(y)); }); }); diff --git a/src/core/trace.ts b/src/core/trace.ts index 8a5d20e6..4e5c1e76 100644 --- a/src/core/trace.ts +++ b/src/core/trace.ts @@ -1,8 +1,31 @@ import { NDArray } from './'; +import { array } from './array'; -NDArray.trace = (x: T | ArrayLike): number => NDArray.array(x).trace(); +/** + * @static + * @memberof module:Globals + * @function trace + * @description Gets the trace of `x` (the sum of all diagonal elements). + * @param {NDArray} x + * @returns {Number} + * @example + * import { trace } from 'vectorious/core/trace'; + * + * trace([[1, 2], [3, 4]]); // => 5 + */ +export const trace = (x: NDArray | ArrayLike): number => array(x).trace(); -NDArray.prototype.trace = function(this: T): number { +/** + * @function trace + * @memberof NDArray.prototype + * @description Gets the trace of the matrix (the sum of all diagonal elements). + * @returns {Number} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([1, 2, 3]).trace(); // => 5 + */ +export default function(this: NDArray): number { const [r, c] = this.shape; const { data: d1 } = this; const n: number = Math.min(r, c); diff --git a/src/core/transpose.bench.ts b/src/core/transpose.bench.ts index 7e78ef78..c7c380fa 100644 --- a/src/core/transpose.bench.ts +++ b/src/core/transpose.bench.ts @@ -1,16 +1,17 @@ -import v = require('..'); +import { transpose } from './transpose'; +import { random } from './random'; import { bench } from '../bench'; const { floor, sqrt } = Math; bench( - 'v', + 'NDArray', 'transpose', - (n: number): [v] => [v.random(floor(sqrt(n)), floor(sqrt(n)))], - (x: v): void => { + (n: number) => [random(floor(sqrt(n)), floor(sqrt(n)))], + (x): void => { x.transpose(); }, - (x: v): void => { - v.transpose(x); + (x): void => { + transpose(x); } ); diff --git a/src/core/transpose.spec.ts b/src/core/transpose.spec.ts index e551247d..765128b1 100644 --- a/src/core/transpose.spec.ts +++ b/src/core/transpose.spec.ts @@ -1,36 +1,35 @@ -import { - deepStrictEqual, -} from 'assert'; - -import v = require('..'); +import { equals } from './equals'; +import { array } from './array'; +import { random } from './random'; +import { transpose } from './transpose'; describe('(v) transpose', () => { it('should work as expected', () => { - const x: v = v.array([[1, 2, 3]]); - const y: v = v.array([[1], [2], [3]]); + const x = array([[1, 2, 3]]); + const y = array([[1], [2], [3]]); - deepStrictEqual(x, y.copy().T); - deepStrictEqual(y, x.copy().T); + equals(x, y.copy().T); + equals(y, x.copy().T); }); it('should work as expected', () => { - const x: v = v.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]); - const y: v = v.array([[1, 4, 7], [2, 5, 8], [3, 6, 9]]); + const x = array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]); + const y = array([[1, 4, 7], [2, 5, 8], [3, 6, 9]]); - deepStrictEqual(x, y.copy().T); - deepStrictEqual(y, x.copy().T); + equals(x, y.copy().T); + equals(y, x.copy().T); }); it('should work as expected', () => { - const x: v = v.random(2, 2); - const y: v = x.copy().T.T; + const x = random(2, 2); + const y = x.copy().T.T; - deepStrictEqual(x, y); + equals(x, y); }); it('should work as the static equivalent', () => { - const x: v = v.array([[1, 1, 1]]); + const x = array([[1, 1, 1]]); - deepStrictEqual(x.copy().T, v.transpose(x)); + equals(x.copy().T, transpose(x)); }); }); diff --git a/src/core/transpose.ts b/src/core/transpose.ts index de642bf0..3877ddb8 100644 --- a/src/core/transpose.ts +++ b/src/core/transpose.ts @@ -1,21 +1,43 @@ import { NDArray } from './'; +import { array } from './array'; -NDArray.transpose = (x: T | ArrayLike): T => - NDArray.array(x).transpose(); +/** + * @static + * @memberof module:Globals + * @function transpose + * @description Transposes `x` (mirror across the diagonal). + * @param {NDArray} x + * @returns {NDArray} + * @example + * import { transpose } from 'vectorious/core/transpose'; + * + * transpose([[1, 2, 3], [4, 5, 6], [7, 8, 9]]); // => array([[1, 4, 7], [2, 5, 8], [3, 6, 9]]) + */ +export const transpose = (x: NDArray | ArrayLike): NDArray => + array(x).transpose(); -NDArray.prototype.transpose = function(this: T): T { - const [r, c] = this.shape; - const { data: d1 } = this; - const x: T = this.copy().reshape(c, r); - const { data: d2 } = x; - - let i: number; - let j: number; - for (i = 0; i < r; i += 1) { - for (j = 0; j < c; j += 1) { - d2[j * r + i] = d1[i * c + j]; - } +/** + * @function transpose + * @memberof NDArray.prototype + * @description Transposes current matrix (mirror across the diagonal). + * @returns {this} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]); // <=> array([[1, 4, 7], [2, 5, 8], [3, 6, 9]]) + */ +export default function(this: NDArray): NDArray { + if (this.shape.length < 2) { + return this; } - return x; + let tmp = this.shape[0]; + this.shape[0] = this.shape[1]; + this.shape[1] = tmp; + + tmp = this.strides[0]; + this.strides[0] = this.strides[1]; + this.strides[1] = tmp; + + return this; }; diff --git a/src/core/trunc.bench.ts b/src/core/trunc.bench.ts index c1c19a48..3369be3c 100644 --- a/src/core/trunc.bench.ts +++ b/src/core/trunc.bench.ts @@ -1,14 +1,15 @@ -import v = require('..'); +import { trunc } from './trunc'; +import { random } from './random'; import { bench } from '../bench'; bench( - 'v', + 'NDArray', 'trunc', - (n: number): [v] => [v.random(n)], - (x: v): void => { + (n: number) => [random(n)], + (x): void => { x.trunc(); }, - (x: v): void => { - v.trunc(x); + (x): void => { + trunc(x); } ); diff --git a/src/core/trunc.spec.ts b/src/core/trunc.spec.ts index 40273927..cb84504e 100644 --- a/src/core/trunc.spec.ts +++ b/src/core/trunc.spec.ts @@ -1,19 +1,18 @@ -import { - deepStrictEqual, -} from 'assert'; - -import v = require('..'); +import { equals } from './equals'; +import { trunc } from './trunc'; +import { map } from './map'; +import { random } from './random'; describe('(v) trunc', () => { it('should work as expected', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.map((value: number) => Math.trunc(value)), x.trunc()); + equals(map(x, (value: number) => Math.trunc(value)), x.trunc()); }); it('should work as the static equivalent', () => { - const x: v = v.random(3); + const x = random(3); - deepStrictEqual(x.map((value: number) => Math.trunc(value)), v.trunc(x)); + equals(map(x, (value: number) => Math.trunc(value)), trunc(x)); }); }); diff --git a/src/core/trunc.ts b/src/core/trunc.ts index fc89d61d..e357a1ab 100644 --- a/src/core/trunc.ts +++ b/src/core/trunc.ts @@ -1,13 +1,43 @@ import { NDArray } from './'; +import { array } from './array'; +import { NDIter } from '../iterator'; -NDArray.trunc = (x: T | ArrayLike): T => NDArray.array(x).trunc(); +const { trunc: f } = Math; -NDArray.prototype.trunc = function(this: T): T { - const { data: d1, length: l1 } = this; +/** + * @static + * @memberof module:Globals + * @function trunc + * @description + * Returns the integer part of each element of `x`, + * removing any fractional digits. + * @param {NDArray} x + * @returns {NDArray} + * @example + * import { trunc } from 'vectorious/core/trunc'; + * + * trunc([1.2, 2.8, 3.5]); // => array([1, 2, 3]) + */ +export const trunc = (x: NDArray | ArrayLike): NDArray => array(x).trunc(); - let i: number; - for (i = 0; i < l1; i += 1) { - d1[i] = Math.trunc(d1[i]); +/** + * @function trunc + * @memberof NDArray.prototype + * @description + * Returns the integer part of each element of current array, + * removing any fractional digits. + * @returns {this} + * @example + * import { array } from 'vectorious/core/array'; + * + * array([1.2, 2.8, 3.5]).trunc(); // => array([1, 2, 3]) + */ +export default function(this: NDArray): NDArray { + const { data: d1 } = this; + const iter = new NDIter(this); + + for (const i of iter) { + d1[i!] = f(d1[i!]); } return this; diff --git a/src/core/zeros.bench.ts b/src/core/zeros.bench.ts index 943a7b66..ec240cb6 100644 --- a/src/core/zeros.bench.ts +++ b/src/core/zeros.bench.ts @@ -1,10 +1,11 @@ -import v = require('..'); +import { zeros } from './zeros'; import { bench } from '../bench'; + bench( - 'v', + 'NDArray', 'zeros', (n: number): [number] => [n], (n: number): void => { - v.zeros(n); + zeros(n); } ); diff --git a/src/core/zeros.spec.ts b/src/core/zeros.spec.ts index 7c00ee52..c3a92cb5 100644 --- a/src/core/zeros.spec.ts +++ b/src/core/zeros.spec.ts @@ -1,19 +1,17 @@ -import { - deepStrictEqual, -} from 'assert'; - -import v = require('..'); +import { equals } from './equals'; +import { zeros } from './zeros'; +import { array } from './array'; describe('(v) zeros', () => { it('should work as expected', () => { - const x: v = v.array([0, 0, 0]); + const x = array([0, 0, 0]); - deepStrictEqual(x, v.zeros(3)); + equals(x, zeros(3)); }); it('should work as expected in two dimensions', () => { - const x: v = v.array([[0, 0], [0, 0]]); + const x = array([[0, 0], [0, 0]]); - deepStrictEqual(x, v.zeros(2, 2)); + equals(x, zeros(2, 2)); }); }); diff --git a/src/core/zeros.ts b/src/core/zeros.ts index 540657db..cc162564 100644 --- a/src/core/zeros.ts +++ b/src/core/zeros.ts @@ -1,8 +1,19 @@ import { NDArray } from './'; -NDArray.zeros = function(this: new(...args: any[]) => T, ...shape: number[]): T { - return new this( - new Float32Array(shape.reduce((sum: number, dim: number) => sum * dim, 1)), +/** + * @static + * @memberof module:Globals + * @function zeros + * @description Creates an array containing zeros (`0`) of shape `shape` + * @param {Number[]} ...shape + * @returns {NDArray} + * @example + * import { zeros } from 'vectorious/core/zeros'; + * + * zeros(3); // => array([0, 0, 0]) + */ +export const zeros = (...shape: number[]): NDArray => + new NDArray( + new Float64Array(shape.reduce((sum: number, dim: number) => sum * dim, 1)), { shape } ).fill(0); -}; diff --git a/src/index.ts b/src/index.ts index b265f86c..0fa22477 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,3 +1,5 @@ -import { NDArray } from './core'; - -export = NDArray; +/** + * @module Globals + */ +export * from './core'; +export * from './iterator'; diff --git a/src/iterator/index.spec.ts b/src/iterator/index.spec.ts new file mode 100644 index 00000000..bdf6f32f --- /dev/null +++ b/src/iterator/index.spec.ts @@ -0,0 +1,122 @@ +import { + deepStrictEqual, strictEqual, +} from 'assert'; + +import { array } from '../core/array'; +import { NDIter } from '.'; +import { NDMultiIter } from '.'; + +describe('(NDIter) constructor', () => { + it('should work as expected', () => { + const x = array([0, 1, 2]); + const iter = new NDIter(x); + + deepStrictEqual(iter.next(), { + value: 0, + done: false, + }); + deepStrictEqual(iter.next(), { + value: 1, + done: false, + }); + deepStrictEqual(iter.next(), { + value: 2, + done: false, + }); + deepStrictEqual(iter.next(), { + value: undefined, + done: true, + }); + }); + + it('should work as expected in two dimensions', () => { + const x = array([[0, 1], [2, 3]]); + const iter = new NDIter(x); + + deepStrictEqual(iter.next(), { + value: 0, + done: false, + }); + deepStrictEqual(iter.next(), { + value: 1, + done: false, + }); + deepStrictEqual(iter.next(), { + value: 2, + done: false, + }); + deepStrictEqual(iter.next(), { + value: 3, + done: false, + }); + deepStrictEqual(iter.next(), { + value: undefined, + done: true, + }); + }); + + it('should work in for...of loops', () => { + const x = array([[0, 1], [2, 3]]); + const iter = new NDIter(x); + + let i = 0; + for (const value of iter) { + strictEqual(value, i++); + } + }); + + it('should work in do...while loops', () => { + const x = array([[0, 1], [2, 3]]); + const iter = new NDIter(x); + + let i = 0; + do { + strictEqual(iter.next().value, i++); + } while (!iter.done()); + }); +}); + +describe('(NDMultiIter) constructor', () => { + it('should work as expected', () => { + const x = array([0, 1, 2, 3]); + const y = array([4, 5, 6, 7]); + + const iter = new NDMultiIter(x, y); + + deepStrictEqual(iter.next(), { + value: [0, 0], + done: false, + }); + deepStrictEqual(iter.next(), { + value: [1, 1], + done: false, + }); + deepStrictEqual(iter.next(), { + value: [2, 2], + done: false, + }); + deepStrictEqual(iter.next(), { + value: [3, 3], + done: false, + }); + deepStrictEqual(iter.next(), { + value: undefined, + done: true, + }); + }); + + it('should work with mixed input', () => { + const x = array([[0, 1], [2, 3]]); + const y = array([1, 2]); + const z = array([[1, 3], [3, 5]]); + + const iter = new NDMultiIter(x, y); + + do { + const [i, j] = iter.next().value; + x.data[i] += y.data[j]; + } while (!iter.done()); + + deepStrictEqual(z, x); + }); +}); diff --git a/src/iterator/index.ts b/src/iterator/index.ts new file mode 100644 index 00000000..cf17eb90 --- /dev/null +++ b/src/iterator/index.ts @@ -0,0 +1,539 @@ +import { NDArray } from '../'; +import { array } from '../core/array'; + +export const V_MAXDIMS = 32; + +/** + * @class NDIter + * @description Constructs an NDIter instance. + * @param {NDArray} x + */ +export class NDIter { + /** + * @name x + * @memberof NDIter.prototype + * @type NDArray + */ + public x: NDArray; + + /** + * @name shape + * @memberof NDIter.prototype + * @type Number[] + */ + public shape: number[]; + + /** + * @name shapem1 + * @memberof NDIter.prototype + * @type Number[] + */ + public shapem1: number[]; + + /** + * @name strides + * @memberof NDIter.prototype + * @type Number[] + */ + public strides: number[]; + + /** + * @name backstrides + * @memberof NDIter.prototype + * @type Number[] + */ + public backstrides: number[]; + + /** + * @name length + * @memberof NDIter.prototype + * @type Number + */ + public length: number; + + /** + * @name lengthm1 + * @memberof NDIter.prototype + * @type Number + */ + public lengthm1: number; + + /** + * @name nd + * @memberof NDIter.prototype + * @type Number + */ + public nd: number; + + /** + * @name ndm1 + * @memberof NDIter.prototype + * @type Number + */ + public ndm1: number; + + /** + * @name index + * @memberof NDIter.prototype + * @type Number + */ + public index: number; + + /** + * @name coords + * @memberof NDIter.prototype + * @type Number[] + */ + public coords: number[]; + + /** + * @name pos + * @memberof NDIter.prototype + * @type Number + */ + public pos: number; + + /** + * @name factors + * @memberof NDIter.prototype + * @type Number[] + */ + public factors: number[]; + + /** + * @name contiguous + * @memberof NDIter.prototype + * @type Boolean + */ + public contiguous: boolean; + + constructor(x: NDArray | ArrayLike) { + const { + shape, + strides, + length, + } = array(x); + + this.x = array(x); + this.length = length; + this.lengthm1 = length - 1; + this.nd = shape.length; + this.ndm1 = this.nd - 1; + + this.shape = Array(V_MAXDIMS).fill(0); + this.strides = Array(V_MAXDIMS).fill(0); + this.shapem1 = Array(V_MAXDIMS).fill(0); + this.coords = Array(V_MAXDIMS).fill(0); + this.backstrides = Array(V_MAXDIMS).fill(0); + this.factors = Array(V_MAXDIMS).fill(0); + + if (this.nd !== 0) { + this.factors[this.nd - 1] = 1; + } + + this.contiguous = true; + + let stride = 1; + let i; + for (i = 0; i < this.nd; i += 1) { + this.shape[i] = shape[i]; + this.shapem1[i] = shape[i] - 1; + this.strides[i] = strides[i]; + this.backstrides[i] = strides[i] * this.shapem1[i]; + this.coords[i] = 0; + + // Check if C-contiguous + if (shape[this.nd - i - 1] !== 1) { + if (strides[i] !== stride) { + this.contiguous = false; + } + + stride *= shape[this.nd - i - 1]; + } + + if (i > 0) { + this.factors[this.nd - i - 1] = this.factors[this.nd - i] * shape[this.nd - i]; + } + } + + this.index = 0; + this.pos = 0; + } + + /** + * @function done + * @memberof NDIter.prototype + * @description Returns true if the iterator is done, false otherwise + * @returns {Boolean} + * @example + * import { array } from 'vectorious/core/array'; + * import { NDIter } from 'vectorious/iterator'; + * + * const iter = new NDIter(array([1, 2, 3])); + * iter.done(); // false + */ + done() { + return this.index > this.lengthm1; + } + + /** + * @function current + * @memberof NDIter.prototype + * @description Returns the current element of the iterator + * @returns {Object} current + * @returns {Number} [current.value] + * @returns {Boolean} current.done + * @example + * import { array } from 'vectorious/core/array'; + * import { NDIter } from 'vectorious/iterator'; + * + * const iter = new NDIter(array([1, 2, 3])); + * iter.current(); // { value: 1, done: false } + */ + current() { + const done = this.done(); + return { + value: done ? undefined : this.pos, + done, + } + } + + /** + * @function next1d + * @memberof NDIter.prototype + * @description Steps to the next position in the iterator, assuming it is 1 dimensional. + */ + next1d() { + const { + strides, + coords, + } = this; + + this.pos += strides[0]; + coords[0] += 1; + } + + /** + * @function nextcontiguous + * @memberof NDIter.prototype + * @description Steps to the next position in the iterator, assuming its data is contiguous. + */ + nextcontiguous() { + this.pos += 1; + } + + /** + * @function next2d + * @memberof NDIter.prototype + * @description Steps to the next position in the iterator, assuming it is 2 dimensional. + */ + next2d() { + const { + coords, + strides, + shapem1, + backstrides, + } = this; + + if (coords[1] < shapem1[1]) { + coords[1] += 1; + this.pos += strides[1]; + } else { + coords[1] = 0; + coords[0] += 1; + this.pos += strides[0] - backstrides[1]; + } + } + + /** + * @function next2d + * @memberof NDIter.prototype + * @description Steps to the next position in the iterator + */ + nextnd() { + const { + ndm1, + shapem1, + coords, + strides, + backstrides, + } = this; + + let i; + for (i = ndm1; i >= 0; i -= 1) { + if (coords[i] < shapem1[i]) { + coords[i] += 1; + this.pos += strides[i]; + break; + } else { + coords[i] = 0; + this.pos -= backstrides[i]; + } + } + } + + /** + * @function next + * @memberof NDIter.prototype + * @description + * Steps to the next position in the iterator. + * Returns the current index of the iterator, or undefined if done. + * @returns {Object} + * @example + * import { array } from 'vectorious/core/array'; + * import { NDIter } from 'vectorious/iterator'; + * + * const iter = new NDIter(array([1, 2, 3])); + * iter.next(); // { value: 2, done: false } + * iter.next(); // { value: 3, done: false } + * iter.next(); // { done: true } + */ + next() { + const current = this.current(); + + this.index += 1; + + const { + ndm1, + contiguous, + } = this; + + if (ndm1 === 0) { + this.next1d(); + } else if (contiguous) { + this.nextcontiguous(); + } else if (ndm1 === 1) { + this.next2d(); + } else { + this.nextnd(); + } + + return current; + } + + [Symbol.iterator]() { + return this; + } +} + +/** + * @class NDMultiIter + * @description Constructs an NDMultiIter instance. + * @param {NDArray[]} ...args + */ +export class NDMultiIter { + /** + * @name iters + * @memberof NDMultiIter.prototype + * @type NDIter[] + */ + public iters: NDIter[]; + + /** + * @name shape + * @memberof NDMultiIter.prototype + * @type Number[] + */ + public shape: number[]; + + /** + * @name nd + * @memberof NDMultiIter.prototype + * @type Number + */ + public nd: number; + + /** + * @name length + * @memberof NDMultiIter.prototype + * @type Number + */ + public length: number; + + /** + * @name lengthm1 + * @memberof NDMultiIter.prototype + * @type Number + */ + public lengthm1: number; + + /** + * @name numiter + * @memberof NDMultiIter.prototype + * @type Number + */ + public numiter: number; + + /** + * @name index + * @memberof NDMultiIter.prototype + * @type Number + */ + public index: number; + + /** + * @name pos + * @memberof NDMultiIter.prototype + * @type Number[] + */ + public pos: number[]; + + constructor(...args: (NDArray | ArrayLike)[]) { + this.iters = args.map(arg => new NDIter(arg)); + this.numiter = args.length; + + let i; + let nd; + for (i = 0, nd = 0; i < this.numiter; i += 1) { + nd = Math.max(nd, this.iters[i].x.shape.length); + } + + this.nd = nd; + this.shape = Array(nd).fill(0); + + let it; + let j; + let k; + let tmp; + for (i = 0; i < nd; i += 1) { + this.shape[i] = 1; + for (j = 0; j < this.numiter; j += 1) { + it = this.iters[j]; + k = i + it.x.shape.length - nd; + if (k >= 0) { + tmp = it.x.shape[k]; + if (tmp == 1) { + continue; + } + if (this.shape[i] == 1) { + this.shape[i] = tmp; + + } else if (this.shape[i] !== tmp) { + throw new Error('shape mismatch'); + } + } + } + } + + tmp = this.shape.reduce((acc, dim) => acc * dim, 1); + + this.length = tmp; + this.lengthm1 = tmp - 1; + + for (i = 0; i < this.numiter; i += 1) { + it = this.iters[i]; + it.nd = this.nd; + it.ndm1 = this.nd - 1; + it.length = tmp; + it.lengthm1 = tmp - 1; + + nd = it.x.shape.length; + if (nd !== 0) { + it.factors[this.nd - 1] = 1; + } + + for (j = 0; j < this.nd; j += 1) { + it.shape[j] = this.shape[j]; + it.shapem1[j] = this.shape[j] - 1; + k = j + nd - this.nd; + + if ((k < 0) || it.x.shape[k] !== this.shape[j]) { + it.contiguous = false; + it.strides[j] = 0; + } else { + it.strides[j] = it.x.strides[k]; + } + + it.backstrides[j] = it.strides[j] * it.shapem1[j]; + + if (j > 0) { + it.factors[this.nd - j - 1] = it.factors[this.nd - j] * this.shape[this.nd - j] + } + } + } + + this.index = 0; + this.pos = Array(this.numiter).fill(0); + } + + /** + * @function done + * @memberof NDMultiIter + * @description Returns true if the iterator is done, false otherwise + * @returns {Boolean} + * @example + * import { array } from 'vectorious/core/array'; + * import { NDMultiIter } from 'vectorious/iterator'; + * + * const iter = new NDMultiIter(array([1, 2, 3]), array([4, 5, 6])); + * iter.done(); // false + */ + done() { + return this.index > this.lengthm1; + } + + /** + * @function current + * @memberof NDMultiIter + * @description Returns the current indices of the iterators + * @returns {Object} current + * @returns {Number[]} [current.value] + * @returns {Boolean} current.done + * @example + * import { array } from 'vectorious/core/array'; + * import { NDMultiIter } from 'vectorious/iterator'; + * + * const iter = new NDMultiIter(array([1, 2, 3]), array([4, 5, 6])); + * iter.current(); // { value: [0, 0], done: false } + */ + current() { + const done = this.done(); + return { + value: done ? undefined : this.pos, + done, + } + } + + /** + * @function next + * @memberof NDMultiIter + * @description + * Steps to the next position in the iterator. + * Returns the current indices of the iterators, or undefined if done. + * @returns {Object} current + * @returns {Number[]} [current.value] + * @returns {Boolean} current.done + * @example + * import { array } from 'vectorious/core/array'; + * import { NDMultiIter } from 'vectorious/iterator'; + * + * const iter = new NDMultiIter(array([1, 2, 3]), array([4, 5, 6])); + * iter.next(); // { value: [0, 0], done: false } + * iter.next(); // { value: [1, 1], done: false } + * iter.next(); // { value: [2, 2], done: false }, + * iter.next(); // { value: undefined, done: true }, + */ + next() { + const current = this.current(); + + this.index += 1; + + const { + numiter, + } = this; + + let it; + let i; + for (i = 0; i < numiter; i += 1) { + it = this.iters[i]; + this.pos[i] = it.pos; + it.next(); + } + + return current; + } + + [Symbol.iterator]() { + return this; + } +} diff --git a/src/lapack.ts b/src/lapack.ts new file mode 100644 index 00000000..e5ed7b3d --- /dev/null +++ b/src/lapack.ts @@ -0,0 +1,54 @@ +import { + TypedArray, + DType, +} from './types'; + +let nlapack: any; +try { + nlapack = require('nlapack'); +} catch (err) {} + +export function getrf(dtype: DType, m: number, n: number, x: TypedArray, ldx: number, ipiv: Int32Array) { + if (x.length !== m * n) { + throw new Error('lengths do not match'); + } + + switch (dtype) { + case 'float64': + return nlapack.dgetrf(m, n, x, ldx, ipiv); + case 'float32': + return nlapack.sgetrf(m, n, x, ldx, ipiv); + default: + throw new Error('wrong dtype'); + } +} + +export function getri(dtype: DType, n: number, x: TypedArray, ldx: number, ipiv: Int32Array) { + if (x.length !== n * n) { + throw new Error('lengths do not match'); + } + + switch (dtype) { + case 'float64': + return nlapack.dgetri(n, x, ldx, ipiv); + case 'float32': + return nlapack.sgetri(n, x, ldx, ipiv); + default: + throw new Error('wrong dtype'); + } +} + +export function gesv(dtype: DType, n: number, nrhs: number, x: TypedArray, ldx: number, ipiv: Int32Array, y: TypedArray, ldy: number) { + if (x.length !== ldx * n || y.length !== ldy * nrhs) { + throw new Error('lengths do not match'); + } + + switch (dtype) { + case 'float64': + return nlapack.dgesv(n, nrhs, x, ldx, ipiv, y, ldy); + case 'float32': + return nlapack.sgesv(n, nrhs, x, ldx, ipiv, y, ldy); + default: + throw new Error('wrong dtype'); + } +} diff --git a/src/types.ts b/src/types.ts index 7467a2ab..74e64829 100644 --- a/src/types.ts +++ b/src/types.ts @@ -38,4 +38,5 @@ export interface INDArray { dtype: DType; length: number; shape: number[]; + strides: number[]; } diff --git a/src/util.ts b/src/util.ts index 4728cdfa..689a485d 100644 --- a/src/util.ts +++ b/src/util.ts @@ -4,18 +4,41 @@ import { TypedArrayConstructor, } from './types'; -export const flatten: (input: any[]) => number[] = (input: any[]): number[] => - input.reduce( - (acc: any[], next: any) => acc.concat(Array.isArray(next) ? flatten(next) : next), +export const flatten: (array: any[]) => number[] = (array: any[]): number[] => + array.reduce( + (acc: any[], next: any): any[] => acc.concat(Array.isArray(next) ? flatten(next) : next), [] ); -export const get_shape: (input: any) => number[] = (input: any): number[] => Array.isArray(input) - ? [input.length].concat(get_shape(input[0])) +export const is_typed_array: (array: any) => boolean = (array: any): boolean => + ArrayBuffer.isView(array) && !(array instanceof DataView); + +export const get_length: (shape: number[]) => number = (shape: number[]): number => + shape.reduce((a: number, b: number): number => a * b, 1); + +export const get_shape: (array: any) => number[] = (array: any): number[] => Array.isArray(array) || is_typed_array(array) + ? [array.length].concat(get_shape(array[0])) : []; -export const get_dtype: (input: TypedArray) => DType = (input: TypedArray): DType => { - switch (input.constructor.name) { +export const get_strides: (shape: number[]) => number[] = (shape: number[]): number[] => + [ + ...shape + .slice(1) + .map((_: number, i: number): number => shape + .slice(i + 1) + .reduce((a: number, b: number): number => a * b, 1) + ), + 1, +]; + +export const get_dtype: (array: TypedArray) => DType = (array: TypedArray): DType => { + const { + constructor: { + name = 'Float32Array', + } = {}, + } = array || {}; + + switch (name) { case 'Int8Array': return 'int8'; case 'Uint8Array': return 'uint8'; case 'Int16Array': return 'int16'; @@ -23,13 +46,14 @@ export const get_dtype: (input: TypedArray) => DType = (input: TypedArray): DTyp case 'Int32Array': return 'int32'; case 'Uint32Array': return 'uint32'; case 'Uint8ClampedArray': return 'uint8c'; + case 'Float32Array': return 'float32'; case 'Float64Array': return 'float64'; - default: return 'float32'; + default: return 'float64'; } }; -export const get_type: (input: DType) => TypedArrayConstructor = (input: DType): TypedArrayConstructor => { - switch (input) { +export const get_type: (dtype: DType) => TypedArrayConstructor = (dtype: DType): TypedArrayConstructor => { + switch (dtype) { case 'int8': return Int8Array; case 'uint8': return Uint8Array; case 'int16': return Int16Array; @@ -37,10 +61,8 @@ export const get_type: (input: DType) => TypedArrayConstructor = (input: DType): case 'int32': return Int32Array; case 'uint32': return Uint32Array; case 'uint8c': return Uint8ClampedArray; + case 'float32': return Float32Array; case 'float64': return Float64Array; - default: return Float32Array; + default: return Float64Array; } -}; - -export const is_typed_array: (input: any) => boolean = (input: any): boolean => - !!(input && input.buffer instanceof ArrayBuffer && input.BYTES_PER_ELEMENT); +}; \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index 086fa269..1dbc2986 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -6,7 +6,7 @@ "downlevelIteration": true, "strict": true, "declaration": true, - "removeComments": true, + "removeComments": false, "esModuleInterop": true, "allowSyntheticDefaultImports": true, "forceConsistentCasingInFileNames": true, @@ -15,7 +15,7 @@ "noUnusedLocals": true, "noUnusedParameters": true, "lib": [ - "es5", + "es2015", "dom" ], "types": [ @@ -29,6 +29,6 @@ "exclude": [ "src/**/*.spec.ts", "src/**/*.bench.ts", - "bench.ts" + "src/bench.ts" ] } diff --git a/tslint.json b/tslint.json deleted file mode 100644 index aa51ab38..00000000 --- a/tslint.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "defaultSeverity": "error", - "extends": [ - "tslint:all" - ], - "jsRules": {}, - "rules": { - "quotemark": [true, "single"], - "trailing-comma": [ - true, - { - "multiline": { - "objects": "always", - "arrays": "always", - "functions": "never", - "typeLiterals": "ignore" - }, - "esSpecCompliant": true - } - ], - "variable-name": false, - "no-unused-expression": false, - "no-empty": false, - "no-var-requires": false, - "file-name-casing": [false, "pascal-case"], - "completed-docs": false, - "no-magic-numbers": false, - "no-inferrable-types": false, - "no-any": false, - "no-require-imports": false, - "no-this-assignment": false, - "no-implicit-dependencies": false, - "newline-per-chained-call": false, - "no-unsafe-any": false, - "no-import-side-effect": false - }, - "rulesDirectory": [] -}