From 4aaa0fc6883a7d78df4206586a03a940624917cb Mon Sep 17 00:00:00 2001 From: StefanoMagrassi <1291271+StefanoMagrassi@users.noreply.github.com> Date: Fri, 12 Jun 2020 18:42:38 +0200 Subject: [PATCH 001/106] flatten exported modules paths on release --- .gitignore | 1 + package-lock.json | 792 +++++++++++++++++++++++++++- package.json | 15 +- scripts/helpers/constants.ts | 9 + scripts/helpers/prepare-dist.ts | 71 +++ scripts/helpers/prepare-pkg-json.ts | 33 ++ scripts/helpers/publish-dist.ts | 22 + scripts/libs/child_process.ts | 20 + scripts/libs/fs.ts | 36 ++ scripts/libs/logger.ts | 16 + scripts/libs/program.ts | 29 + scripts/pre-publish.ts | 6 + scripts/release.ts | 34 ++ tsconfig.build-es6.json | 2 +- tsconfig.json | 5 +- 15 files changed, 1063 insertions(+), 28 deletions(-) create mode 100644 scripts/helpers/constants.ts create mode 100644 scripts/helpers/prepare-dist.ts create mode 100644 scripts/helpers/prepare-pkg-json.ts create mode 100644 scripts/helpers/publish-dist.ts create mode 100644 scripts/libs/child_process.ts create mode 100644 scripts/libs/fs.ts create mode 100644 scripts/libs/logger.ts create mode 100644 scripts/libs/program.ts create mode 100644 scripts/pre-publish.ts create mode 100644 scripts/release.ts diff --git a/.gitignore b/.gitignore index 9600292f0..59b1afc5b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ *.log node_modules +/dist lib es6 dev diff --git a/package-lock.json b/package-lock.json index 68c3115e5..3e966f163 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "fp-ts", - "version": "2.6.2", + "version": "2.6.5", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -54,6 +54,28 @@ "chalk": "^2.0.0", "esutils": "^2.0.2", "js-tokens": "^4.0.0" + }, + "dependencies": { + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } + } + }, + "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": { + "color-convert": "^1.9.0" } }, "debug": { @@ -65,6 +87,12 @@ "ms": "^2.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 + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -82,6 +110,15 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true + }, + "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" + } } } }, @@ -162,11 +199,46 @@ "js-tokens": "^4.0.0" }, "dependencies": { + "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": { + "color-convert": "^1.9.0" + } + }, + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "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 + }, + "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" + } } } }, @@ -214,13 +286,50 @@ "chalk": "^2.0.0", "esutils": "^2.0.2", "js-tokens": "^4.0.0" + }, + "dependencies": { + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } + } + }, + "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": { + "color-convert": "^1.9.0" } }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "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 + }, + "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" + } } } }, @@ -259,6 +368,28 @@ "chalk": "^2.0.0", "esutils": "^2.0.2", "js-tokens": "^4.0.0" + }, + "dependencies": { + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } + } + }, + "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": { + "color-convert": "^1.9.0" } }, "debug": { @@ -270,6 +401,12 @@ "ms": "^2.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 + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -281,6 +418,15 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true + }, + "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" + } } } }, @@ -334,11 +480,46 @@ "slash": "^2.0.0" }, "dependencies": { + "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": { + "color-convert": "^1.9.0" + } + }, + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, "slash": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", "dev": true + }, + "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" + } } } }, @@ -394,11 +575,46 @@ "string-length": "^2.0.0" }, "dependencies": { + "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": { + "color-convert": "^1.9.0" + } + }, + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, "slash": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", "dev": true + }, + "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" + } } } }, @@ -468,17 +684,52 @@ "write-file-atomic": "2.4.1" }, "dependencies": { + "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": { + "color-convert": "^1.9.0" + } + }, + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, "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 }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, "slash": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", "dev": true + }, + "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" + } } } }, @@ -627,6 +878,12 @@ "integrity": "sha1-LdNRTpM5bzYrpVUafJ/w2kBcHTg=", "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==", + "dev": true + }, "@types/glob": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.2.tgz", @@ -1358,14 +1615,40 @@ "dev": true }, "chalk": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.2.0.tgz", - "integrity": "sha1-R3s78vm4/Vyp5Cl0fjf3JO568kA=", + "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": "^3.1.0", - "escape-string-regexp": "^1.0.5", - "supports-color": "^4.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.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==", + "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 + } } }, "character-entities": { @@ -3122,9 +3405,9 @@ } }, "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "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", @@ -3254,9 +3537,9 @@ } }, "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, "has-symbols": { @@ -3832,9 +4115,18 @@ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "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": { + "color-convert": "^1.9.0" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true }, @@ -3844,6 +4136,12 @@ "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", "dev": true }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, "jest-cli": { "version": "24.9.0", "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.9.0.tgz", @@ -3923,6 +4221,17 @@ "@types/yargs": "^13.0.0" } }, + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, "exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", @@ -4050,6 +4359,15 @@ "requires": { "ansi-regex": "^4.1.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" + } } } }, @@ -4087,6 +4405,43 @@ "micromatch": "^3.1.10", "pretty-format": "^24.9.0", "realpath-native": "^1.1.0" + }, + "dependencies": { + "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": { + "color-convert": "^1.9.0" + } + }, + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "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" + } + } } }, "jest-diff": { @@ -4099,6 +4454,43 @@ "diff-sequences": "^24.9.0", "jest-get-type": "^24.9.0", "pretty-format": "^24.9.0" + }, + "dependencies": { + "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": { + "color-convert": "^1.9.0" + } + }, + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "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" + } + } } }, "jest-docblock": { @@ -4121,6 +4513,43 @@ "jest-get-type": "^24.9.0", "jest-util": "^24.9.0", "pretty-format": "^24.9.0" + }, + "dependencies": { + "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": { + "color-convert": "^1.9.0" + } + }, + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "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" + } + } } }, "jest-environment-jsdom": { @@ -4206,6 +4635,43 @@ "jest-util": "^24.9.0", "pretty-format": "^24.9.0", "throat": "^4.0.0" + }, + "dependencies": { + "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": { + "color-convert": "^1.9.0" + } + }, + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "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" + } + } } }, "jest-leak-detector": { @@ -4228,6 +4694,43 @@ "jest-diff": "^24.9.0", "jest-get-type": "^24.9.0", "pretty-format": "^24.9.0" + }, + "dependencies": { + "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": { + "color-convert": "^1.9.0" + } + }, + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "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" + } + } } }, "jest-message-util": { @@ -4246,11 +4749,46 @@ "stack-utils": "^1.0.1" }, "dependencies": { + "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": { + "color-convert": "^1.9.0" + } + }, + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, "slash": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", "dev": true + }, + "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" + } } } }, @@ -4286,6 +4824,43 @@ "chalk": "^2.0.1", "jest-pnp-resolver": "^1.2.1", "realpath-native": "^1.1.0" + }, + "dependencies": { + "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": { + "color-convert": "^1.9.0" + } + }, + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "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" + } + } } }, "jest-resolve-dependencies": { @@ -4400,17 +4975,52 @@ "yargs": "^13.3.0" }, "dependencies": { + "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": { + "color-convert": "^1.9.0" + } + }, + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, "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 }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, "slash": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", "dev": true + }, + "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" + } } } }, @@ -4441,11 +5051,46 @@ "semver": "^6.2.0" }, "dependencies": { + "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": { + "color-convert": "^1.9.0" + } + }, + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true + }, + "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" + } } } }, @@ -4469,17 +5114,52 @@ "source-map": "^0.6.0" }, "dependencies": { + "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": { + "color-convert": "^1.9.0" + } + }, + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, "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 }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, "slash": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", "dev": true + }, + "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" + } } } }, @@ -4497,11 +5177,46 @@ "pretty-format": "^24.9.0" }, "dependencies": { + "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": { + "color-convert": "^1.9.0" + } + }, "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": "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "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" + } } } }, @@ -4518,6 +5233,43 @@ "chalk": "^2.0.1", "jest-util": "^24.9.0", "string-length": "^2.0.0" + }, + "dependencies": { + "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": { + "color-convert": "^1.9.0" + } + }, + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "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" + } + } } }, "jest-worker": { @@ -6411,12 +7163,12 @@ } }, "supports-color": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", - "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "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": "^2.0.0" + "has-flag": "^4.0.0" } }, "symbol-tree": { diff --git a/package.json b/package.json index 3612ab6b0..5b2f00686 100644 --- a/package.json +++ b/package.json @@ -14,14 +14,16 @@ "lint": "tslint -p .", "jest-clear-cache": "jest --clearCache", "jest": "jest --ci", - "prettier": "prettier --list-different \"./{src,test,examples}/**/*.ts\"", - "fix-prettier": "prettier --write \"./{src,test,examples}/**/*.ts\"", + "prettier": "prettier --list-different \"./{src,test,examples,scripts}/**/*.ts\"", + "fix-prettier": "prettier --write \"./{src,test,examples,scripts}/**/*.ts\"", "test": "npm run lint && npm run prettier && npm run dtslint && npm run jest-clear-cache && npm run jest && npm run docs", - "clean": "rimraf lib/* es6/*", + "clean": "rimraf ./dist", "prebuild": "npm run clean", "build": "tsc -p ./tsconfig.build.json && tsc -p ./tsconfig.build-es6.json", - "postbuild": "prettier --write \"./{lib,es6}/**/*.ts\"", - "prepublish": "npm run build", + "postbuild": "prettier --write \"./dist/**/*.ts\"", + "prepublish": "ts-node scripts/pre-publish", + "prerelease": "npm run build", + "release": "ts-node scripts/release", "doctoc": "doctoc README.md docs/introduction/code-conventions.md --title \"**Table of contents**\"", "mocha": "mocha -r ts-node/register test/*.ts", "dtslint": "dtslint dtslint", @@ -39,14 +41,17 @@ "homepage": "https://github.com/gcanti/fp-ts", "devDependencies": { "@types/benchmark": "^1.0.31", + "@types/glob": "^7.1.2", "@types/jest": "22.2.2", "@types/node": "^12.6.8", "@types/prettier": "1.10.0", "benchmark": "2.1.4", + "chalk": "^4.1.0", "docs-ts": "^0.5.1", "doctoc": "^1.4.0", "dtslint": "github:gcanti/dtslint", "fast-check": "^1.23.0", + "glob": "^7.1.6", "jest": "^24.8.0", "mocha": "^5.2.0", "prettier": "^2.0.2", diff --git a/scripts/helpers/constants.ts b/scripts/helpers/constants.ts new file mode 100644 index 000000000..c9b9328e5 --- /dev/null +++ b/scripts/helpers/constants.ts @@ -0,0 +1,9 @@ +/** + * The name of the folder where build files are placed. + */ +export const DIST = 'dist' + +/** + * List of NPM specific files to be published. + */ +export const FILES: ReadonlyArray = ['CHANGELOG.md', 'LICENSE', 'README.md'] diff --git a/scripts/helpers/prepare-dist.ts b/scripts/helpers/prepare-dist.ts new file mode 100644 index 000000000..407dad44b --- /dev/null +++ b/scripts/helpers/prepare-dist.ts @@ -0,0 +1,71 @@ +import * as path from 'path' +import { FileSystem } from '../libs/fs' +import { Logger } from '../libs/logger' +import { Program, toErrMsg, Eff } from '../libs/program' +import { sequenceT } from '../../src/Apply' +import { stringifyJSON } from '../../src/Either' +import * as RTE from '../../src/ReaderTaskEither' +import { readonlyArray } from '../../src/ReadonlyArray' +import { chain, map, fromEither, taskEither } from '../../src/TaskEither' +import { pipe } from '../../src/pipeable' +import { FILES, DIST } from './constants' + +interface Capabilities extends Logger, FileSystem {} + +interface AppEff extends Program {} + +const parallel = sequenceT(RTE.readerTaskEither) +const traverseTE = readonlyArray.traverse(taskEither) + +const copyPkgFiles: AppEff> = (C) => + traverseTE(FILES, (file) => + pipe( + C.info(`Copy "${file}" to ${DIST}`), + chain(() => C.copyFile(file, path.resolve(DIST, file))) + ) + ) + +const makeModules: AppEff = (C) => + pipe( + C.info('Creating modules directories...'), + chain(() => C.glob(`${DIST}/lib/*.js`)), + map(getModules), + chain((modules) => traverseTE(modules, makeSingleModule(C))), + chain(() => C.info('modules prepared')) + ) + +export const prepareDist: AppEff = pipe( + parallel(copyPkgFiles, makeModules), + RTE.map(() => undefined) +) + +// --- Internal +function getModules(paths: ReadonlyArray): ReadonlyArray { + return paths.map((filePath) => path.basename(filePath, '.js')).filter((x) => x !== 'index') +} + +function makeSingleModule(C: Capabilities): (module: string) => Eff { + return (m) => + pipe( + C.info(`prepare ${m}`), + chain(() => C.mkdir(path.join(DIST, m))), + chain(() => makePkgJson(m)), + chain((data) => C.writeFile(path.join(DIST, m, 'package.json'), data)) + ) +} + +function makePkgJson(module: string): Eff { + return pipe( + stringifyJSON( + { + name: module, + main: `../lib/${module}.js`, + module: `../es6/${module}.js`, + typings: `../lib/${module}.d.ts`, + sideEffects: false + }, + toErrMsg + ), + fromEither + ) +} diff --git a/scripts/helpers/prepare-pkg-json.ts b/scripts/helpers/prepare-pkg-json.ts new file mode 100644 index 000000000..206ef4f6f --- /dev/null +++ b/scripts/helpers/prepare-pkg-json.ts @@ -0,0 +1,33 @@ +import { Program, toErrMsg } from '../libs/program' +import { FileSystem } from '../libs/fs' +import { Logger } from '../libs/logger' +import { chain, map, fromEither } from '../../src/TaskEither' +import { stringifyJSON, parseJSON } from '../../src/Either' +import * as path from 'path' +import { pipe } from '../../src/pipeable' +import { DIST } from './constants' + +interface Capabilities extends Logger, FileSystem {} + +interface AppEff extends Program {} + +const PKG = 'package.json' + +export const preparePkgJson: AppEff = (C) => + pipe( + C.info(`Copying project\'s "${PKG}" in "${DIST}" folder...`), + chain(() => C.readFile(PKG)), + chain((s) => fromEither(parseJSON(s, toErrMsg))), + map((v) => { + // This is the only way to completly remove fields in object + const clone = Object.assign({}, v as any) + + delete clone.scripts + delete clone.files + + return clone + }), + chain((data) => fromEither(stringifyJSON(data, toErrMsg))), + chain((data) => C.writeFile(path.join(DIST, PKG), data)), + chain(() => C.info(`"${PKG}" copied`)) + ) diff --git a/scripts/helpers/publish-dist.ts b/scripts/helpers/publish-dist.ts new file mode 100644 index 000000000..d259fb5ae --- /dev/null +++ b/scripts/helpers/publish-dist.ts @@ -0,0 +1,22 @@ +import { ChildProcess } from '../libs/child_process' +import { FileSystem } from '../libs/fs' +import { Logger } from '../libs/logger' +import { Program } from '../libs/program' +import { chain } from '../../src/TaskEither' +import { pipe } from '../../src/pipeable' +import { DIST } from './constants' + +interface Capabilities extends ChildProcess, Logger, FileSystem {} + +interface AppEff extends Program {} + +export const publish: AppEff = (C) => + pipe( + C.info(`Running publish in "${DIST}" folder...`), + chain(() => + // C.exec('npm publish', { + C.exec('npm pack', { + cwd: DIST + }) + ) + ) diff --git a/scripts/libs/child_process.ts b/scripts/libs/child_process.ts new file mode 100644 index 000000000..0bc8be46d --- /dev/null +++ b/scripts/libs/child_process.ts @@ -0,0 +1,20 @@ +import * as child_process from 'child_process' +import { Eff } from './program' +import { left, right } from '../../src/Either' + +export interface ChildProcess { + readonly exec: (cmd: string, opts?: child_process.ExecOptions) => Eff +} + +export const childProcessNode: ChildProcess = { + exec: (cmd, args) => () => + new Promise(resolve => { + child_process.exec(cmd, args, err => { + if (err !== null) { + return resolve(left(err.message)) + } + + return resolve(right(undefined)) + }) + }) +} diff --git a/scripts/libs/fs.ts b/scripts/libs/fs.ts new file mode 100644 index 000000000..36dea2004 --- /dev/null +++ b/scripts/libs/fs.ts @@ -0,0 +1,36 @@ +import { mapLeft, taskify, bimap } from '../../src/TaskEither' +import { flow } from '../../src/function' +import { pipe } from '../../src/pipeable' +import * as fs from 'fs' +import Glob from 'glob' +import { Eff } from './program' + +export interface FileSystem { + readonly readFile: (path: string) => Eff + readonly writeFile: (path: string, content: string) => Eff + readonly copyFile: (from: string, to: string) => Eff + readonly glob: (pattern: string) => Eff> + readonly mkdir: (path: string) => Eff +} + +const readFileTE = taskify(fs.readFile) +const writeFileTE = taskify(fs.writeFile) +const copyFileTE = taskify(fs.copyFile) +const globTE = taskify>(Glob) +const mkdirTE = taskify(fs.mkdir) +const toError = (e: Error): string => e.message + +export const fsNode: FileSystem = { + readFile: (path) => pipe(readFileTE(path, 'utf8'), mapLeft(toError)), + + writeFile: flow(writeFileTE, mapLeft(toError)), + + copyFile: flow(copyFileTE, mapLeft(toError)), + + glob: flow(globTE, mapLeft(toError)), + + mkdir: flow( + mkdirTE, + bimap(toError, () => undefined) + ) +} diff --git a/scripts/libs/logger.ts b/scripts/libs/logger.ts new file mode 100644 index 000000000..c9d4d7036 --- /dev/null +++ b/scripts/libs/logger.ts @@ -0,0 +1,16 @@ +import chalk from 'chalk' +import { info, log } from '../../src/Console' +import { rightIO } from '../../src/TaskEither' +import { Eff } from './program' + +export interface Logger { + readonly debug: (s: string) => Eff + readonly info: (s: string) => Eff + readonly log: (s: string) => Eff +} + +export const loggerConsole: Logger = { + debug: s => rightIO(log(chalk.gray(s))), + info: s => rightIO(info(chalk.bold.magenta(s))), + log: s => rightIO(log(chalk.bold.green(s))) +} diff --git a/scripts/libs/program.ts b/scripts/libs/program.ts new file mode 100644 index 000000000..b7e32d68e --- /dev/null +++ b/scripts/libs/program.ts @@ -0,0 +1,29 @@ +import chalk from 'chalk' +import { fold } from '../../src/Either' +import * as RTE from '../../src/ReaderTaskEither' +import * as TE from '../../src/TaskEither' + +export interface Eff extends TE.TaskEither {} + +export interface Program extends RTE.ReaderTaskEither {} + +export const toErrMsg = (e: unknown): string => (e instanceof Error ? e.message : String(e)) + +export function run(eff: Eff): void { + eff() + .then( + fold( + e => { + throw e + }, + _ => { + process.exitCode = 0 + } + ) + ) + .catch(e => { + console.error(chalk.red('[ERROR]', e)) // tslint:disable-line no-console + + process.exitCode = 1 + }) +} diff --git a/scripts/pre-publish.ts b/scripts/pre-publish.ts new file mode 100644 index 000000000..9bd6cf0a4 --- /dev/null +++ b/scripts/pre-publish.ts @@ -0,0 +1,6 @@ +import { left } from '../src/ReaderTaskEither' +import { Program, run } from './libs/program' + +const main: Program<{}, void> = left('"npm publish" can not be directly run; please use "npm run release"\n') + +run(main({})) diff --git a/scripts/release.ts b/scripts/release.ts new file mode 100644 index 000000000..5879e9803 --- /dev/null +++ b/scripts/release.ts @@ -0,0 +1,34 @@ +// Release process (after build) +// - copy package.json and remove "scripts" and "files" +// - foreach file in "/lib" create a directory +// - in each directory put a package.json file with "name", "module" and "typings" +// - finally run npm publish in dist folder + +import { preparePkgJson } from './helpers/prepare-pkg-json' +import { prepareDist } from './helpers/prepare-dist' +import { publish } from './helpers/publish-dist' +import { Program, run } from './libs/program' +import { ChildProcess, childProcessNode } from './libs/child_process' +import { Logger, loggerConsole } from './libs/logger' +import { FileSystem, fsNode } from './libs/fs' +import { chain } from '../src/ReaderTaskEither' +import { pipe } from '../src/function' + +interface Capabilities extends ChildProcess, Logger, FileSystem {} + +interface AppEff extends Program {} + +const main: AppEff = pipe( + preparePkgJson, + chain(() => prepareDist), + // add check here? + chain(() => publish) +) + +run( + main({ + ...loggerConsole, + ...fsNode, + ...childProcessNode + }) +) diff --git a/tsconfig.build-es6.json b/tsconfig.build-es6.json index 743cc302d..6b5e341f1 100644 --- a/tsconfig.build-es6.json +++ b/tsconfig.build-es6.json @@ -1,7 +1,7 @@ { "extends": "./tsconfig.build.json", "compilerOptions": { - "outDir": "./es6", + "outDir": "./dist/es6", "module": "es6" } } diff --git a/tsconfig.json b/tsconfig.json index 70be2e7d5..32621a773 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,10 +1,11 @@ { "compilerOptions": { "noEmit": true, - "outDir": "./lib", + "outDir": "./dist/lib", "target": "es5", "module": "commonjs", "moduleResolution": "node", + "esModuleInterop": true, "lib": ["es6", "dom"], "sourceMap": false, "declaration": true, @@ -16,5 +17,5 @@ "forceConsistentCasingInFileNames": true, "stripInternal": true }, - "include": ["./src", "./test"] + "include": ["./src", "./test", "./scripts"] } From 543418523ec43929ac55c04ef7578635aec04df8 Mon Sep 17 00:00:00 2001 From: StefanoMagrassi <1291271+StefanoMagrassi@users.noreply.github.com> Date: Mon, 15 Jun 2020 12:26:17 +0200 Subject: [PATCH 002/106] add smoke tests for release and remove some noise in scripts --- package-lock.json | 15057 ++++++++++++++++++-------- package.json | 4 +- scripts/helpers/check.ts | 29 + scripts/helpers/constants.ts | 5 + scripts/helpers/prepare-dist.ts | 14 +- scripts/helpers/prepare-pkg-json.ts | 12 +- scripts/helpers/publish-dist.ts | 8 +- scripts/libs/child_process.ts | 6 +- scripts/libs/fs.ts | 14 +- scripts/libs/logger.ts | 10 +- scripts/libs/program.ts | 19 +- scripts/pre-publish.ts | 2 +- scripts/release.ts | 9 +- scripts/smoke-tests/.gitignore | 1 + scripts/smoke-tests/cjs.ts | 4 + scripts/smoke-tests/es6.ts | 4 + 16 files changed, 10776 insertions(+), 4422 deletions(-) create mode 100644 scripts/helpers/check.ts create mode 100644 scripts/smoke-tests/.gitignore create mode 100644 scripts/smoke-tests/cjs.ts create mode 100644 scripts/smoke-tests/es6.ts diff --git a/package-lock.json b/package-lock.json index 3e966f163..1bac840a0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,6 +13,25 @@ "@babel/highlight": "^7.0.0" } }, + "@babel/compat-data": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.10.1.tgz", + "integrity": "sha512-CHvCj7So7iCkGKPRFUfryXIkU2gSBw7VSZFYLsqVhrS47269VK2Hfi9S/YcublPMW8k1u2bQBlbDruoQEm4fgw==", + "dev": true, + "requires": { + "browserslist": "^4.12.0", + "invariant": "^2.2.4", + "semver": "^5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, "@babel/core": { "version": "7.8.7", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.8.7.tgz", @@ -142,63 +161,216 @@ } } }, - "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "@babel/helper-annotate-as-pure": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.1.tgz", + "integrity": "sha512-ewp3rvJEwLaHgyWGe4wQssC2vjks3E80WiUe2BpMb0KhreTjMROCbxXcEovTrbeGVdQct5VjQfrv9EgC+xMzCw==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.1" + }, + "dependencies": { + "@babel/types": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", + "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.1", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, - "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.1.tgz", + "integrity": "sha512-cQpVq48EkYxUU0xozpGCLla3wlkdRRqLWu1ksFMXA9CM5KQmyyRpSEsYXbao7JUkOw/tAaYKCaYyZq6HOFYtyw==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/helper-explode-assignable-expression": "^7.10.1", + "@babel/types": "^7.10.1" + }, + "dependencies": { + "@babel/types": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", + "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.1", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, - "@babel/helper-plugin-utils": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz", - "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==", - "dev": true + "@babel/helper-builder-react-jsx": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.10.1.tgz", + "integrity": "sha512-KXzzpyWhXgzjXIlJU1ZjIXzUPdej1suE6vzqgImZ/cpAsR/CC8gUcX4EWRmDfWz/cs6HOCPMBIJ3nKoXt3BFuw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.1", + "@babel/types": "^7.10.1" + }, + "dependencies": { + "@babel/types": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", + "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.1", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } }, - "@babel/helper-split-export-declaration": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", - "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", + "@babel/helper-builder-react-jsx-experimental": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.10.1.tgz", + "integrity": "sha512-irQJ8kpQUV3JasXPSFQ+LCCtJSc5ceZrPFVj6TElR6XCHssi3jV8ch3odIrNtjJFRZZVbrOEfJMI79TPU/h1pQ==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/helper-annotate-as-pure": "^7.10.1", + "@babel/helper-module-imports": "^7.10.1", + "@babel/types": "^7.10.1" + }, + "dependencies": { + "@babel/types": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", + "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.1", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, - "@babel/helpers": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.8.4.tgz", - "integrity": "sha512-VPbe7wcQ4chu4TDQjimHv/5tj73qz88o12EPkO2ValS2QiQS/1F2SsjyIGNnAD0vF/nZS6Cf9i+vW6HIlnaR8w==", + "@babel/helper-compilation-targets": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.2.tgz", + "integrity": "sha512-hYgOhF4To2UTB4LTaZepN/4Pl9LD4gfbJx8A34mqoluT8TLbof1mhUlYuNWTEebONa8+UlCC4X0TEXu7AOUyGA==", "dev": true, "requires": { - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.8.4", - "@babel/types": "^7.8.3" + "@babel/compat-data": "^7.10.1", + "browserslist": "^4.12.0", + "invariant": "^2.2.4", + "levenary": "^1.1.1", + "semver": "^5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } } }, - "@babel/highlight": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", - "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "@babel/helper-create-class-features-plugin": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.2.tgz", + "integrity": "sha512-5C/QhkGFh1vqcziq1vAL6SI9ymzUp8BCYjFpvYVhWP4DlATIb3u5q3iUd35mvlyGs8fO7hckkW7i0tmH+5+bvQ==", "dev": true, "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^4.0.0" + "@babel/helper-function-name": "^7.10.1", + "@babel/helper-member-expression-to-functions": "^7.10.1", + "@babel/helper-optimise-call-expression": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-replace-supers": "^7.10.1", + "@babel/helper-split-export-declaration": "^7.10.1" }, "dependencies": { + "@babel/code-frame": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.1.tgz", + "integrity": "sha512-IGhtTmpjGbYzcEDOw7DcQtbQSXcG9ftmAXtWTu9V936vDye4xjjekktFAtgZsWpzTj/X01jocB46mTywm/4SZw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.1" + } + }, + "@babel/helper-function-name": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.1.tgz", + "integrity": "sha512-fcpumwhs3YyZ/ttd5Rz0xn0TpIwVkN7X0V38B9TWNfVF42KEkhkAAuPCQ3oXmtTRtiPJrmZ0TrfS0GKF0eMaRQ==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.10.1", + "@babel/template": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.1.tgz", + "integrity": "sha512-F5qdXkYGOQUb0hpRaPoetF9AnsXknKjWMZ+wmsIRsp5ge5sFh4c3h1eH2pRTTuy9KKAA2+TTYomGXAtEL2fQEw==", + "dev": true, + "requires": { + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", + "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", + "dev": true + }, + "@babel/helper-split-export-declaration": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.1.tgz", + "integrity": "sha512-UQ1LVBPrYdbchNhLwj6fetj46BcFwfS4NllJo/1aJsT+1dLTEnXJL0qHqtY7gPzF8S2fXBJamf1biAXV3X077g==", + "dev": true, + "requires": { + "@babel/types": "^7.10.1" + } + }, + "@babel/highlight": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.1.tgz", + "integrity": "sha512-8rMof+gVP8mxYZApLF/JgNDAkdKa+aJt3ZYxF8z6+j/hpeXL7iMsKCPHa2jNMHu/qqBwzQF4OHNoYi8dMA/rYg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.1", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.2.tgz", + "integrity": "sha512-PApSXlNMJyB4JiGVhCOlzKIif+TKFTvu0aQAhnTvfP/z3vVSN6ZypH5bfUNwFXXjRQtUEBNFd2PtmCmG2Py3qQ==", + "dev": true + }, + "@babel/template": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.1.tgz", + "integrity": "sha512-OQDg6SqvFSsc9A0ej6SKINWrpJiNonRIniYondK2ViKhB06i3c0s+76XUft71iqBEe9S1OKsHwPAjfHnuvnCig==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.1", + "@babel/parser": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/types": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", + "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.1", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -242,63 +414,94 @@ } } }, - "@babel/parser": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.8.tgz", - "integrity": "sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA==", - "dev": true - }, - "@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==", + "@babel/helper-create-regexp-features-plugin": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.1.tgz", + "integrity": "sha512-Rx4rHS0pVuJn5pJOqaqcZR4XSgeF9G/pO/79t+4r7380tXFJdzImFnxMU19f83wjSrmKHq6myrM10pFHTGzkUA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-annotate-as-pure": "^7.10.1", + "@babel/helper-regex": "^7.10.1", + "regexpu-core": "^4.7.0" } }, - "@babel/template": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", - "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "@babel/helper-define-map": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.1.tgz", + "integrity": "sha512-+5odWpX+OnvkD0Zmq7panrMuAGQBu6aPUgvMzuMGo4R+jUOvealEj2hiqI6WhxgKrTpFoFj0+VdsuA8KDxHBDg==", "dev": true, "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6" + "@babel/helper-function-name": "^7.10.1", + "@babel/types": "^7.10.1", + "lodash": "^4.17.13" }, "dependencies": { "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.1.tgz", + "integrity": "sha512-IGhtTmpjGbYzcEDOw7DcQtbQSXcG9ftmAXtWTu9V936vDye4xjjekktFAtgZsWpzTj/X01jocB46mTywm/4SZw==", "dev": true, "requires": { - "@babel/highlight": "^7.8.3" + "@babel/highlight": "^7.10.1" + } + }, + "@babel/helper-function-name": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.1.tgz", + "integrity": "sha512-fcpumwhs3YyZ/ttd5Rz0xn0TpIwVkN7X0V38B9TWNfVF42KEkhkAAuPCQ3oXmtTRtiPJrmZ0TrfS0GKF0eMaRQ==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.10.1", + "@babel/template": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.1.tgz", + "integrity": "sha512-F5qdXkYGOQUb0hpRaPoetF9AnsXknKjWMZ+wmsIRsp5ge5sFh4c3h1eH2pRTTuy9KKAA2+TTYomGXAtEL2fQEw==", + "dev": true, + "requires": { + "@babel/types": "^7.10.1" } }, "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.1.tgz", + "integrity": "sha512-8rMof+gVP8mxYZApLF/JgNDAkdKa+aJt3ZYxF8z6+j/hpeXL7iMsKCPHa2jNMHu/qqBwzQF4OHNoYi8dMA/rYg==", "dev": true, "requires": { + "@babel/helper-validator-identifier": "^7.10.1", "chalk": "^2.0.0", - "esutils": "^2.0.2", "js-tokens": "^4.0.0" - }, - "dependencies": { - "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": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - } + } + }, + "@babel/parser": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.2.tgz", + "integrity": "sha512-PApSXlNMJyB4JiGVhCOlzKIif+TKFTvu0aQAhnTvfP/z3vVSN6ZypH5bfUNwFXXjRQtUEBNFd2PtmCmG2Py3qQ==", + "dev": true + }, + "@babel/template": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.1.tgz", + "integrity": "sha512-OQDg6SqvFSsc9A0ej6SKINWrpJiNonRIniYondK2ViKhB06i3c0s+76XUft71iqBEe9S1OKsHwPAjfHnuvnCig==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.1", + "@babel/parser": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/types": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", + "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.1", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" } }, "ansi-styles": { @@ -310,6 +513,17 @@ "color-convert": "^1.9.0" } }, + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -333,54 +547,120 @@ } } }, - "@babel/traverse": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.6.tgz", - "integrity": "sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A==", + "@babel/helper-explode-assignable-expression": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.1.tgz", + "integrity": "sha512-vcUJ3cDjLjvkKzt6rHrl767FeE7pMEYfPanq5L16GRtrXIoznc0HykNW2aEYkcnP76P0isoqJ34dDMFZwzEpJg==", "dev": true, "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.8.6", - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" + "@babel/traverse": "^7.10.1", + "@babel/types": "^7.10.1" }, "dependencies": { "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.1.tgz", + "integrity": "sha512-IGhtTmpjGbYzcEDOw7DcQtbQSXcG9ftmAXtWTu9V936vDye4xjjekktFAtgZsWpzTj/X01jocB46mTywm/4SZw==", "dev": true, "requires": { - "@babel/highlight": "^7.8.3" + "@babel/highlight": "^7.10.1" + } + }, + "@babel/generator": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.2.tgz", + "integrity": "sha512-AxfBNHNu99DTMvlUPlt1h2+Hn7knPpH5ayJ8OqDWSeLld+Fi2AYBTC/IejWDM9Edcii4UzZRCsbUt0WlSDsDsA==", + "dev": true, + "requires": { + "@babel/types": "^7.10.2", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.1.tgz", + "integrity": "sha512-fcpumwhs3YyZ/ttd5Rz0xn0TpIwVkN7X0V38B9TWNfVF42KEkhkAAuPCQ3oXmtTRtiPJrmZ0TrfS0GKF0eMaRQ==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.10.1", + "@babel/template": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.1.tgz", + "integrity": "sha512-F5qdXkYGOQUb0hpRaPoetF9AnsXknKjWMZ+wmsIRsp5ge5sFh4c3h1eH2pRTTuy9KKAA2+TTYomGXAtEL2fQEw==", + "dev": true, + "requires": { + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.1.tgz", + "integrity": "sha512-UQ1LVBPrYdbchNhLwj6fetj46BcFwfS4NllJo/1aJsT+1dLTEnXJL0qHqtY7gPzF8S2fXBJamf1biAXV3X077g==", + "dev": true, + "requires": { + "@babel/types": "^7.10.1" } }, "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.1.tgz", + "integrity": "sha512-8rMof+gVP8mxYZApLF/JgNDAkdKa+aJt3ZYxF8z6+j/hpeXL7iMsKCPHa2jNMHu/qqBwzQF4OHNoYi8dMA/rYg==", "dev": true, "requires": { + "@babel/helper-validator-identifier": "^7.10.1", "chalk": "^2.0.0", - "esutils": "^2.0.2", "js-tokens": "^4.0.0" - }, - "dependencies": { - "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": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - } + } + }, + "@babel/parser": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.2.tgz", + "integrity": "sha512-PApSXlNMJyB4JiGVhCOlzKIif+TKFTvu0aQAhnTvfP/z3vVSN6ZypH5bfUNwFXXjRQtUEBNFd2PtmCmG2Py3qQ==", + "dev": true + }, + "@babel/template": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.1.tgz", + "integrity": "sha512-OQDg6SqvFSsc9A0ej6SKINWrpJiNonRIniYondK2ViKhB06i3c0s+76XUft71iqBEe9S1OKsHwPAjfHnuvnCig==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.1", + "@babel/parser": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/traverse": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.1.tgz", + "integrity": "sha512-C/cTuXeKt85K+p08jN6vMDz8vSV0vZcI0wmQ36o6mjbuo++kPMdpOYw23W2XH04dbRt9/nMEfA4W3eR21CD+TQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.1", + "@babel/generator": "^7.10.1", + "@babel/helper-function-name": "^7.10.1", + "@babel/helper-split-export-declaration": "^7.10.1", + "@babel/parser": "^7.10.1", + "@babel/types": "^7.10.1", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", + "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.1", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" } }, "ansi-styles": { @@ -392,8 +672,19 @@ "color-convert": "^1.9.0" } }, - "debug": { - "version": "4.1.1", + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "debug": { + "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, @@ -419,6 +710,12 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -430,56 +727,164 @@ } } }, - "@babel/types": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", - "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", + "@babel/helper-function-name": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", + "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" } }, - "@cnakazawa/watch": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", - "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", + "@babel/helper-get-function-arity": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", "dev": true, "requires": { - "exec-sh": "^0.3.2", - "minimist": "^1.2.0" + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.1.tgz", + "integrity": "sha512-vLm5srkU8rI6X3+aQ1rQJyfjvCBLXP8cAGeuw04zeAM2ItKb1e7pmVmLyHb4sDaAYnLL13RHOZPLEtcGZ5xvjg==", + "dev": true, + "requires": { + "@babel/types": "^7.10.1" }, "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 + "@babel/types": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", + "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.1", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } } } }, - "@dsherret/to-absolute-glob": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@dsherret/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", - "integrity": "sha1-H2R13IvZdM6gei2vOGSzF7HdMyw=", + "@babel/helper-member-expression-to-functions": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.1.tgz", + "integrity": "sha512-u7XLXeM2n50gb6PWJ9hoO5oO7JFPaZtrh35t8RqKLT1jFKj9IWeD1zrcrYp1q1qiZTdEarfDWfTIP8nGsu0h5g==", "dev": true, "requires": { - "is-absolute": "^1.0.0", - "is-negated-glob": "^1.0.0" + "@babel/types": "^7.10.1" + }, + "dependencies": { + "@babel/types": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", + "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.1", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, - "@jest/console": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz", - "integrity": "sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==", + "@babel/helper-module-imports": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.1.tgz", + "integrity": "sha512-SFxgwYmZ3HZPyZwJRiVNLRHWuW2OgE5k2nrVs6D9Iv4PPnXVffuEHy83Sfx/l4SqF+5kyJXjAyUmrG7tNm+qVg==", "dev": true, "requires": { - "@jest/source-map": "^24.9.0", - "chalk": "^2.0.1", - "slash": "^2.0.0" + "@babel/types": "^7.10.1" + }, + "dependencies": { + "@babel/types": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", + "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.1", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-module-transforms": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.10.1.tgz", + "integrity": "sha512-RLHRCAzyJe7Q7sF4oy2cB+kRnU4wDZY/H2xJFGof+M+SJEGhZsb+GFj5j1AD8NiSaVBJ+Pf0/WObiXu/zxWpFg==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.10.1", + "@babel/helper-replace-supers": "^7.10.1", + "@babel/helper-simple-access": "^7.10.1", + "@babel/helper-split-export-declaration": "^7.10.1", + "@babel/template": "^7.10.1", + "@babel/types": "^7.10.1", + "lodash": "^4.17.13" }, "dependencies": { + "@babel/code-frame": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.1.tgz", + "integrity": "sha512-IGhtTmpjGbYzcEDOw7DcQtbQSXcG9ftmAXtWTu9V936vDye4xjjekktFAtgZsWpzTj/X01jocB46mTywm/4SZw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.1" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.1.tgz", + "integrity": "sha512-UQ1LVBPrYdbchNhLwj6fetj46BcFwfS4NllJo/1aJsT+1dLTEnXJL0qHqtY7gPzF8S2fXBJamf1biAXV3X077g==", + "dev": true, + "requires": { + "@babel/types": "^7.10.1" + } + }, + "@babel/highlight": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.1.tgz", + "integrity": "sha512-8rMof+gVP8mxYZApLF/JgNDAkdKa+aJt3ZYxF8z6+j/hpeXL7iMsKCPHa2jNMHu/qqBwzQF4OHNoYi8dMA/rYg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.1", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.2.tgz", + "integrity": "sha512-PApSXlNMJyB4JiGVhCOlzKIif+TKFTvu0aQAhnTvfP/z3vVSN6ZypH5bfUNwFXXjRQtUEBNFd2PtmCmG2Py3qQ==", + "dev": true + }, + "@babel/template": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.1.tgz", + "integrity": "sha512-OQDg6SqvFSsc9A0ej6SKINWrpJiNonRIniYondK2ViKhB06i3c0s+76XUft71iqBEe9S1OKsHwPAjfHnuvnCig==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.1", + "@babel/parser": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/types": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", + "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.1", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -506,10 +911,10 @@ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "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 }, "supports-color": { @@ -523,58 +928,162 @@ } } }, - "@jest/environment": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.9.0.tgz", - "integrity": "sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ==", + "@babel/helper-optimise-call-expression": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.1.tgz", + "integrity": "sha512-a0DjNS1prnBsoKx83dP2falChcs7p3i8VMzdrSbfLhuQra/2ENC4sbri34dz/rWmDADsmF1q5GbfaXydh0Jbjg==", "dev": true, "requires": { - "@jest/fake-timers": "^24.9.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "jest-mock": "^24.9.0" + "@babel/types": "^7.10.1" + }, + "dependencies": { + "@babel/types": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", + "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.1", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } } }, - "@jest/fake-timers": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz", - "integrity": "sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==", + "@babel/helper-plugin-utils": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz", + "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==", + "dev": true + }, + "@babel/helper-regex": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.1.tgz", + "integrity": "sha512-7isHr19RsIJWWLLFn21ubFt223PjQyg1HY7CZEMRr820HttHPpVvrsIN3bUOo44DEfFV4kBXO7Abbn9KTUZV7g==", "dev": true, "requires": { - "@jest/types": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-mock": "^24.9.0" + "lodash": "^4.17.13" } }, - "@jest/reporters": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.9.0.tgz", - "integrity": "sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw==", + "@babel/helper-remap-async-to-generator": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.1.tgz", + "integrity": "sha512-RfX1P8HqsfgmJ6CwaXGKMAqbYdlleqglvVtht0HGPMSsy2V6MqLlOJVF/0Qyb/m2ZCi2z3q3+s6Pv7R/dQuZ6A==", "dev": true, "requires": { - "@jest/environment": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "glob": "^7.1.2", - "istanbul-lib-coverage": "^2.0.2", - "istanbul-lib-instrument": "^3.0.1", - "istanbul-lib-report": "^2.0.4", - "istanbul-lib-source-maps": "^3.0.1", - "istanbul-reports": "^2.2.6", - "jest-haste-map": "^24.9.0", - "jest-resolve": "^24.9.0", - "jest-runtime": "^24.9.0", - "jest-util": "^24.9.0", - "jest-worker": "^24.6.0", - "node-notifier": "^5.4.2", - "slash": "^2.0.0", - "source-map": "^0.6.0", - "string-length": "^2.0.0" + "@babel/helper-annotate-as-pure": "^7.10.1", + "@babel/helper-wrap-function": "^7.10.1", + "@babel/template": "^7.10.1", + "@babel/traverse": "^7.10.1", + "@babel/types": "^7.10.1" }, "dependencies": { + "@babel/code-frame": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.1.tgz", + "integrity": "sha512-IGhtTmpjGbYzcEDOw7DcQtbQSXcG9ftmAXtWTu9V936vDye4xjjekktFAtgZsWpzTj/X01jocB46mTywm/4SZw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.1" + } + }, + "@babel/generator": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.2.tgz", + "integrity": "sha512-AxfBNHNu99DTMvlUPlt1h2+Hn7knPpH5ayJ8OqDWSeLld+Fi2AYBTC/IejWDM9Edcii4UzZRCsbUt0WlSDsDsA==", + "dev": true, + "requires": { + "@babel/types": "^7.10.2", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.1.tgz", + "integrity": "sha512-fcpumwhs3YyZ/ttd5Rz0xn0TpIwVkN7X0V38B9TWNfVF42KEkhkAAuPCQ3oXmtTRtiPJrmZ0TrfS0GKF0eMaRQ==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.10.1", + "@babel/template": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.1.tgz", + "integrity": "sha512-F5qdXkYGOQUb0hpRaPoetF9AnsXknKjWMZ+wmsIRsp5ge5sFh4c3h1eH2pRTTuy9KKAA2+TTYomGXAtEL2fQEw==", + "dev": true, + "requires": { + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.1.tgz", + "integrity": "sha512-UQ1LVBPrYdbchNhLwj6fetj46BcFwfS4NllJo/1aJsT+1dLTEnXJL0qHqtY7gPzF8S2fXBJamf1biAXV3X077g==", + "dev": true, + "requires": { + "@babel/types": "^7.10.1" + } + }, + "@babel/highlight": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.1.tgz", + "integrity": "sha512-8rMof+gVP8mxYZApLF/JgNDAkdKa+aJt3ZYxF8z6+j/hpeXL7iMsKCPHa2jNMHu/qqBwzQF4OHNoYi8dMA/rYg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.1", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.2.tgz", + "integrity": "sha512-PApSXlNMJyB4JiGVhCOlzKIif+TKFTvu0aQAhnTvfP/z3vVSN6ZypH5bfUNwFXXjRQtUEBNFd2PtmCmG2Py3qQ==", + "dev": true + }, + "@babel/template": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.1.tgz", + "integrity": "sha512-OQDg6SqvFSsc9A0ej6SKINWrpJiNonRIniYondK2ViKhB06i3c0s+76XUft71iqBEe9S1OKsHwPAjfHnuvnCig==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.1", + "@babel/parser": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/traverse": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.1.tgz", + "integrity": "sha512-C/cTuXeKt85K+p08jN6vMDz8vSV0vZcI0wmQ36o6mjbuo++kPMdpOYw23W2XH04dbRt9/nMEfA4W3eR21CD+TQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.1", + "@babel/generator": "^7.10.1", + "@babel/helper-function-name": "^7.10.1", + "@babel/helper-split-export-declaration": "^7.10.1", + "@babel/parser": "^7.10.1", + "@babel/types": "^7.10.1", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", + "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.1", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -595,16 +1104,37 @@ "supports-color": "^5.3.0" } }, + "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" + } + }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "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 + }, + "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.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, "supports-color": { @@ -618,72 +1148,246 @@ } } }, - "@jest/source-map": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz", - "integrity": "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==", + "@babel/helper-replace-supers": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.1.tgz", + "integrity": "sha512-SOwJzEfpuQwInzzQJGjGaiG578UYmyi2Xw668klPWV5n07B73S0a9btjLk/52Mlcxa+5AdIYqws1KyXRfMoB7A==", "dev": true, "requires": { - "callsites": "^3.0.0", - "graceful-fs": "^4.1.15", - "source-map": "^0.6.0" + "@babel/helper-member-expression-to-functions": "^7.10.1", + "@babel/helper-optimise-call-expression": "^7.10.1", + "@babel/traverse": "^7.10.1", + "@babel/types": "^7.10.1" }, "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 + "@babel/code-frame": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.1.tgz", + "integrity": "sha512-IGhtTmpjGbYzcEDOw7DcQtbQSXcG9ftmAXtWTu9V936vDye4xjjekktFAtgZsWpzTj/X01jocB46mTywm/4SZw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.1" + } + }, + "@babel/generator": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.2.tgz", + "integrity": "sha512-AxfBNHNu99DTMvlUPlt1h2+Hn7knPpH5ayJ8OqDWSeLld+Fi2AYBTC/IejWDM9Edcii4UzZRCsbUt0WlSDsDsA==", + "dev": true, + "requires": { + "@babel/types": "^7.10.2", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.1.tgz", + "integrity": "sha512-fcpumwhs3YyZ/ttd5Rz0xn0TpIwVkN7X0V38B9TWNfVF42KEkhkAAuPCQ3oXmtTRtiPJrmZ0TrfS0GKF0eMaRQ==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.10.1", + "@babel/template": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.1.tgz", + "integrity": "sha512-F5qdXkYGOQUb0hpRaPoetF9AnsXknKjWMZ+wmsIRsp5ge5sFh4c3h1eH2pRTTuy9KKAA2+TTYomGXAtEL2fQEw==", + "dev": true, + "requires": { + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.1.tgz", + "integrity": "sha512-UQ1LVBPrYdbchNhLwj6fetj46BcFwfS4NllJo/1aJsT+1dLTEnXJL0qHqtY7gPzF8S2fXBJamf1biAXV3X077g==", + "dev": true, + "requires": { + "@babel/types": "^7.10.1" + } + }, + "@babel/highlight": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.1.tgz", + "integrity": "sha512-8rMof+gVP8mxYZApLF/JgNDAkdKa+aJt3ZYxF8z6+j/hpeXL7iMsKCPHa2jNMHu/qqBwzQF4OHNoYi8dMA/rYg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.1", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.2.tgz", + "integrity": "sha512-PApSXlNMJyB4JiGVhCOlzKIif+TKFTvu0aQAhnTvfP/z3vVSN6ZypH5bfUNwFXXjRQtUEBNFd2PtmCmG2Py3qQ==", + "dev": true + }, + "@babel/template": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.1.tgz", + "integrity": "sha512-OQDg6SqvFSsc9A0ej6SKINWrpJiNonRIniYondK2ViKhB06i3c0s+76XUft71iqBEe9S1OKsHwPAjfHnuvnCig==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.1", + "@babel/parser": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/traverse": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.1.tgz", + "integrity": "sha512-C/cTuXeKt85K+p08jN6vMDz8vSV0vZcI0wmQ36o6mjbuo++kPMdpOYw23W2XH04dbRt9/nMEfA4W3eR21CD+TQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.1", + "@babel/generator": "^7.10.1", + "@babel/helper-function-name": "^7.10.1", + "@babel/helper-split-export-declaration": "^7.10.1", + "@babel/parser": "^7.10.1", + "@babel/types": "^7.10.1", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", + "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.1", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "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": { + "color-convert": "^1.9.0" + } + }, + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "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" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "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 + }, + "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.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "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" + } } } }, - "@jest/test-result": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz", - "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==", - "dev": true, - "requires": { - "@jest/console": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/istanbul-lib-coverage": "^2.0.0" - } - }, - "@jest/test-sequencer": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz", - "integrity": "sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A==", - "dev": true, - "requires": { - "@jest/test-result": "^24.9.0", - "jest-haste-map": "^24.9.0", - "jest-runner": "^24.9.0", - "jest-runtime": "^24.9.0" - } - }, - "@jest/transform": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.9.0.tgz", - "integrity": "sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ==", + "@babel/helper-simple-access": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.1.tgz", + "integrity": "sha512-VSWpWzRzn9VtgMJBIWTZ+GP107kZdQ4YplJlCmIrjoLVSi/0upixezHCDG8kpPVTBJpKfxTH01wDhh+jS2zKbw==", "dev": true, "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^24.9.0", - "babel-plugin-istanbul": "^5.1.0", - "chalk": "^2.0.1", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.1.15", - "jest-haste-map": "^24.9.0", - "jest-regex-util": "^24.9.0", - "jest-util": "^24.9.0", - "micromatch": "^3.1.10", - "pirates": "^4.0.1", - "realpath-native": "^1.1.0", - "slash": "^2.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "2.4.1" + "@babel/template": "^7.10.1", + "@babel/types": "^7.10.1" }, "dependencies": { + "@babel/code-frame": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.1.tgz", + "integrity": "sha512-IGhtTmpjGbYzcEDOw7DcQtbQSXcG9ftmAXtWTu9V936vDye4xjjekktFAtgZsWpzTj/X01jocB46mTywm/4SZw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.1" + } + }, + "@babel/highlight": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.1.tgz", + "integrity": "sha512-8rMof+gVP8mxYZApLF/JgNDAkdKa+aJt3ZYxF8z6+j/hpeXL7iMsKCPHa2jNMHu/qqBwzQF4OHNoYi8dMA/rYg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.1", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.2.tgz", + "integrity": "sha512-PApSXlNMJyB4JiGVhCOlzKIif+TKFTvu0aQAhnTvfP/z3vVSN6ZypH5bfUNwFXXjRQtUEBNFd2PtmCmG2Py3qQ==", + "dev": true + }, + "@babel/template": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.1.tgz", + "integrity": "sha512-OQDg6SqvFSsc9A0ej6SKINWrpJiNonRIniYondK2ViKhB06i3c0s+76XUft71iqBEe9S1OKsHwPAjfHnuvnCig==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.1", + "@babel/parser": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/types": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", + "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.1", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -704,22 +1408,16 @@ "supports-color": "^5.3.0" } }, - "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 - }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "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 }, "supports-color": { @@ -733,522 +1431,792 @@ } } }, - "@jest/types": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", - "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - } - }, - "@nodelib/fs.scandir": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", - "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.3", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", - "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz", - "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==", + "@babel/helper-split-export-declaration": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", "dev": true, "requires": { - "@nodelib/fs.scandir": "2.1.3", - "fastq": "^1.6.0" + "@babel/types": "^7.8.3" } }, - "@textlint/ast-node-types": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-4.2.1.tgz", - "integrity": "sha512-Pqg1LTJpF929Ovi/lCaPqlyz8yDwBFbQulC0jyQcbRAoTxYS4AZMc48Ug2yk0so5hISQXKrlAxyVBmBVl9EKGA==", + "@babel/helper-validator-identifier": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.1.tgz", + "integrity": "sha512-5vW/JXLALhczRCWP0PnFDMCJAchlBvM7f4uk/jXritBnIa6E1KmqmtrS3yn1LAnxFBypQ3eneLuXjsnfQsgILw==", "dev": true }, - "@textlint/markdown-to-ast": { - "version": "6.0.9", - "resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-6.0.9.tgz", - "integrity": "sha512-hfAWBvTeUGh5t5kTn2U3uP3qOSM1BSrxzl1jF3nn0ywfZXpRBZr5yRjXnl4DzIYawCtZOshmRi/tI3/x4TE1jQ==", - "dev": true, - "requires": { - "@textlint/ast-node-types": "^4.0.3", - "debug": "^2.1.3", - "remark-frontmatter": "^1.2.0", - "remark-parse": "^5.0.0", - "structured-source": "^3.0.2", - "traverse": "^0.6.6", - "unified": "^6.1.6" - } - }, - "@ts-morph/common": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.1.1.tgz", - "integrity": "sha512-8TLlC85CXgKNoTeqoXtrscPmKDbQCBfwZJ4hqli/QI4STa7sD2H6UqI9LSg8uBV5FYaD0QSdj/mtrCDrELvF+Q==", + "@babel/helper-wrap-function": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.10.1.tgz", + "integrity": "sha512-C0MzRGteVDn+H32/ZgbAv5r56f2o1fZSA/rj/TYo8JEJNHg+9BdSmKBUND0shxWRztWhjlT2cvHYuynpPsVJwQ==", "dev": true, "requires": { - "@dsherret/to-absolute-glob": "^2.0.2", - "fs-extra": "^8.1.0", - "glob-parent": "^5.1.0", - "globby": "^10.0.1", - "is-negated-glob": "^1.0.0", - "multimatch": "^4.0.0", - "typescript": "~3.7.2" + "@babel/helper-function-name": "^7.10.1", + "@babel/template": "^7.10.1", + "@babel/traverse": "^7.10.1", + "@babel/types": "^7.10.1" }, "dependencies": { - "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==", + "@babel/code-frame": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.1.tgz", + "integrity": "sha512-IGhtTmpjGbYzcEDOw7DcQtbQSXcG9ftmAXtWTu9V936vDye4xjjekktFAtgZsWpzTj/X01jocB46mTywm/4SZw==", "dev": true, "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "@babel/highlight": "^7.10.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==", + "@babel/generator": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.2.tgz", + "integrity": "sha512-AxfBNHNu99DTMvlUPlt1h2+Hn7knPpH5ayJ8OqDWSeLld+Fi2AYBTC/IejWDM9Edcii4UzZRCsbUt0WlSDsDsA==", + "dev": true, + "requires": { + "@babel/types": "^7.10.2", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.1.tgz", + "integrity": "sha512-fcpumwhs3YyZ/ttd5Rz0xn0TpIwVkN7X0V38B9TWNfVF42KEkhkAAuPCQ3oXmtTRtiPJrmZ0TrfS0GKF0eMaRQ==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.10.1", + "@babel/template": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.1.tgz", + "integrity": "sha512-F5qdXkYGOQUb0hpRaPoetF9AnsXknKjWMZ+wmsIRsp5ge5sFh4c3h1eH2pRTTuy9KKAA2+TTYomGXAtEL2fQEw==", + "dev": true, + "requires": { + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.1.tgz", + "integrity": "sha512-UQ1LVBPrYdbchNhLwj6fetj46BcFwfS4NllJo/1aJsT+1dLTEnXJL0qHqtY7gPzF8S2fXBJamf1biAXV3X077g==", + "dev": true, + "requires": { + "@babel/types": "^7.10.1" + } + }, + "@babel/highlight": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.1.tgz", + "integrity": "sha512-8rMof+gVP8mxYZApLF/JgNDAkdKa+aJt3ZYxF8z6+j/hpeXL7iMsKCPHa2jNMHu/qqBwzQF4OHNoYi8dMA/rYg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.1", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.2.tgz", + "integrity": "sha512-PApSXlNMJyB4JiGVhCOlzKIif+TKFTvu0aQAhnTvfP/z3vVSN6ZypH5bfUNwFXXjRQtUEBNFd2PtmCmG2Py3qQ==", "dev": true }, - "typescript": { - "version": "3.7.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.5.tgz", - "integrity": "sha512-/P5lkRXkWHNAbcJIiHPfRoKqyd7bsyCma1hZNUGfn20qm64T6ZBlrzprymeu918H+mB/0rIg2gGK/BXkhhYgBw==", + "@babel/template": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.1.tgz", + "integrity": "sha512-OQDg6SqvFSsc9A0ej6SKINWrpJiNonRIniYondK2ViKhB06i3c0s+76XUft71iqBEe9S1OKsHwPAjfHnuvnCig==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.1", + "@babel/parser": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/traverse": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.1.tgz", + "integrity": "sha512-C/cTuXeKt85K+p08jN6vMDz8vSV0vZcI0wmQ36o6mjbuo++kPMdpOYw23W2XH04dbRt9/nMEfA4W3eR21CD+TQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.1", + "@babel/generator": "^7.10.1", + "@babel/helper-function-name": "^7.10.1", + "@babel/helper-split-export-declaration": "^7.10.1", + "@babel/parser": "^7.10.1", + "@babel/types": "^7.10.1", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", + "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.1", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "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": { + "color-convert": "^1.9.0" + } + }, + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "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" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "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 + }, + "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.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true + }, + "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" + } } } }, - "@types/babel__core": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.6.tgz", - "integrity": "sha512-tTnhWszAqvXnhW7m5jQU9PomXSiKXk2sFxpahXvI20SZKu9ylPi8WtIxueZ6ehDWikPT0jeFujMj3X4ZHuf3Tg==", + "@babel/helpers": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.8.4.tgz", + "integrity": "sha512-VPbe7wcQ4chu4TDQjimHv/5tj73qz88o12EPkO2ValS2QiQS/1F2SsjyIGNnAD0vF/nZS6Cf9i+vW6HIlnaR8w==", "dev": true, "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.4", + "@babel/types": "^7.8.3" } }, - "@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==", + "@babel/highlight": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", + "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "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": { + "color-convert": "^1.9.0" + } + }, + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "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 + }, + "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" + } + } } }, - "@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==", + "@babel/parser": { + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.8.tgz", + "integrity": "sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA==", + "dev": true + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.1.tgz", + "integrity": "sha512-vzZE12ZTdB336POZjmpblWfNNRpMSua45EYnRigE2XsZxcXcIyly2ixnTJasJE4Zq3U7t2d8rRF7XRUuzHxbOw==", "dev": true, "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-remap-async-to-generator": "^7.10.1", + "@babel/plugin-syntax-async-generators": "^7.8.0" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", + "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", + "dev": true + } } }, - "@types/babel__traverse": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.9.tgz", - "integrity": "sha512-jEFQ8L1tuvPjOI8lnpaf73oCJe+aoxL6ygqSy6c8LcW98zaC+4mzWuQIRCEvKeCOu+lbqdXcg4Uqmm1S8AP1tw==", + "@babel/plugin-proposal-class-properties": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.1.tgz", + "integrity": "sha512-sqdGWgoXlnOdgMXU+9MbhzwFRgxVLeiGBqTrnuS7LC2IBU31wSsESbTUreT2O418obpfPdGUR2GbEufZF1bpqw==", "dev": true, "requires": { - "@babel/types": "^7.3.0" + "@babel/helper-create-class-features-plugin": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", + "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", + "dev": true + } } }, - "@types/benchmark": { - "version": "1.0.31", - "resolved": "https://registry.npmjs.org/@types/benchmark/-/benchmark-1.0.31.tgz", - "integrity": "sha1-LdNRTpM5bzYrpVUafJ/w2kBcHTg=", - "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==", - "dev": true - }, - "@types/glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-VgNIkxK+j7Nz5P7jvUZlRvhuPSmsEfS03b0alKcq5V/STUKAa3Plemsn5mrQUO7am6OErJ4rhGEGJbACclrtRA==", + "@babel/plugin-proposal-dynamic-import": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.1.tgz", + "integrity": "sha512-Cpc2yUVHTEGPlmiQzXj026kqwjEQAD9I4ZC16uzdbgWgitg/UHKHLffKNCQZ5+y8jpIZPJcKcwsr2HwPh+w3XA==", "dev": true, "requires": { - "@types/minimatch": "*", - "@types/node": "*" + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-dynamic-import": "^7.8.0" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", + "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", + "dev": true + } } }, - "@types/istanbul-lib-coverage": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", - "integrity": "sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg==", - "dev": true + "@babel/plugin-proposal-json-strings": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.1.tgz", + "integrity": "sha512-m8r5BmV+ZLpWPtMY2mOKN7wre6HIO4gfIiV+eOmsnZABNenrt/kzYBwrh+KOfgumSWpnlGs5F70J8afYMSJMBg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-json-strings": "^7.8.0" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", + "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", + "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==", + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.1.tgz", + "integrity": "sha512-56cI/uHYgL2C8HVuHOuvVowihhX0sxb3nnfVRzUeVHTWmRHTZrKuAh/OBIMggGU/S1g/1D2CRCXqP+3u7vX7iA==", "dev": true, "requires": { - "@types/istanbul-lib-coverage": "*" + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", + "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", + "dev": true + } } }, - "@types/istanbul-reports": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz", - "integrity": "sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA==", + "@babel/plugin-proposal-numeric-separator": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.1.tgz", + "integrity": "sha512-jjfym4N9HtCiNfyyLAVD8WqPYeHUrw4ihxuAynWj6zzp2gf9Ey2f7ImhFm6ikB3CLf5Z/zmcJDri6B4+9j9RsA==", "dev": true, "requires": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-numeric-separator": "^7.10.1" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", + "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", + "dev": true + } } }, - "@types/jest": { - "version": "22.2.2", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-22.2.2.tgz", - "integrity": "sha1-r+Xay9ANZTJfUtoO0+duJZYprJ0=", - "dev": true - }, - "@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/node": { - "version": "12.6.8", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.6.8.tgz", - "integrity": "sha512-aX+gFgA5GHcDi89KG5keey2zf0WfZk/HAQotEamsK2kbey+8yGKcson0hbK8E+v0NArlCJQCqMP161YhV6ZXLg==", - "dev": true - }, - "@types/prettier": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-1.10.0.tgz", - "integrity": "sha1-Wr8ewKbpBP4kkMwgaPNqOOSmPEI=", - "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": "13.0.8", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.8.tgz", - "integrity": "sha512-XAvHLwG7UQ+8M4caKIH0ZozIOYay5fQkAgyIXegXT9jPtdIGdhga+sUEdAr1CiG46aB+c64xQEYyEzlwWVTNzA==", + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.1.tgz", + "integrity": "sha512-Z+Qri55KiQkHh7Fc4BW6o+QBuTagbOp9txE+4U1i79u9oWlf2npkiDx+Rf3iK3lbcHBuNy9UOkwuR5wOMH3LIQ==", "dev": true, "requires": { - "@types/yargs-parser": "*" + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.10.1" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", + "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", + "dev": true + } } }, - "@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 - }, - "abab": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.3.tgz", - "integrity": "sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg==", - "dev": true - }, - "acorn": { - "version": "5.7.4", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", - "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", - "dev": true - }, - "acorn-globals": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", - "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.1.tgz", + "integrity": "sha512-VqExgeE62YBqI3ogkGoOJp1R6u12DFZjqwJhqtKc2o5m1YTUuUWnos7bZQFBhwkxIFpWYJ7uB75U7VAPPiKETA==", "dev": true, "requires": { - "acorn": "^6.0.1", - "acorn-walk": "^6.0.1" + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" }, "dependencies": { - "acorn": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", - "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", + "@babel/helper-plugin-utils": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", + "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", "dev": true } } }, - "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 - }, - "ajv": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", - "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "@babel/plugin-proposal-optional-chaining": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.10.1.tgz", + "integrity": "sha512-dqQj475q8+/avvok72CF3AOSV/SGEcH29zT5hhohqqvvZ2+boQoOr7iGldBG5YXTO2qgCgc2B3WvVLUdbeMlGA==", "dev": true, "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", + "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", + "dev": true + } } }, - "anchor-markdown-header": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/anchor-markdown-header/-/anchor-markdown-header-0.5.7.tgz", - "integrity": "sha1-BFBj125qH5zTJ6V6ASaqD97Dcac=", + "@babel/plugin-proposal-private-methods": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.1.tgz", + "integrity": "sha512-RZecFFJjDiQ2z6maFprLgrdnm0OzoC23Mx89xf1CcEsxmHuzuXOdniEuI+S3v7vjQG4F5sa6YtUp+19sZuSxHg==", "dev": true, "requires": { - "emoji-regex": "~6.1.0" + "@babel/helper-create-class-features-plugin": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", + "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", + "dev": true + } } }, - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true - }, - "ansi-red": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz", - "integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=", + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.1.tgz", + "integrity": "sha512-JjfngYRvwmPwmnbRZyNiPFI8zxCZb8euzbCG/LxyKdeTb59tVciKo9GK9bi6JYKInk1H11Dq9j/zRqIH4KigfQ==", "dev": true, "requires": { - "ansi-wrap": "0.1.0" + "@babel/helper-create-regexp-features-plugin": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", + "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", + "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.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "@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": { - "color-convert": "^1.9.0" + "@babel/helper-plugin-utils": "^7.8.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 + "@babel/plugin-syntax-class-properties": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.1.tgz", + "integrity": "sha512-Gf2Yx/iRs1JREDtVZ56OrjjgFHCaldpTnuy9BHla10qyVT3YkIIGEtoDWhyop0ksu1GvNjHIoYRBqm3zoR1jyQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", + "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", + "dev": true + } + } }, - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", "dev": true, "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" + "@babel/helper-plugin-utils": "^7.8.0" } }, - "arg": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz", - "integrity": "sha1-WDxRgZlBngA3q7dAYsN/hRnldfA=", - "dev": true + "@babel/plugin-syntax-flow": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.10.1.tgz", + "integrity": "sha512-b3pWVncLBYoPP60UOTc7NMlbtsHQ6ITim78KQejNHK6WJ2mzV5kCcg4mIWpasAfJEgwVTibwo2e+FU7UEIKQUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", + "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", + "dev": true + } + } }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=", + "@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": { - "sprintf-js": "~1.0.2" + "@babel/helper-plugin-utils": "^7.8.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 + "@babel/plugin-syntax-jsx": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.1.tgz", + "integrity": "sha512-+OxyOArpVFXQeXKLO9o+r2I4dIoVoy6+Uu0vKELrlweDM3QJADZj+Z+5ERansZqIZBcLj42vHnDI8Rz9BnRIuQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", + "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", + "dev": true + } + } }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=", - "dev": true + "@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" + } }, - "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 + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.1.tgz", + "integrity": "sha512-uTd0OsHrpe3tH5gRPTxG8Voh99/WCU78vIm5NMRYPAqC8lR4vajt6KkCAknCHrx24vkPdd/05yfdGSB4EIY2mg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", + "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", + "dev": true + } + } }, - "array-differ": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", - "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", - "dev": true + "@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" + } }, - "array-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", - "dev": true + "@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" + } }, - "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 + "@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" + } }, - "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 + "@babel/plugin-syntax-top-level-await": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.1.tgz", + "integrity": "sha512-hgA5RYkmZm8FTFT3yu2N9Bx7yVVOKYT6yEdXXo6j2JTm0wNxgqaGeQVaSHRjhfnQbX91DtjFB6McRFSlcJH3xQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", + "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", + "dev": true + } + } }, - "arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", - "dev": true + "@babel/plugin-transform-arrow-functions": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.1.tgz", + "integrity": "sha512-6AZHgFJKP3DJX0eCNJj01RpytUa3SOGawIxweHkNX2L6PYikOZmoh5B0d7hIHaIgveMjX990IAa/xK7jRTN8OA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", + "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", + "dev": true + } + } }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "@babel/plugin-transform-async-to-generator": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.1.tgz", + "integrity": "sha512-XCgYjJ8TY2slj6SReBUyamJn3k2JLUIiiR5b6t1mNCMSvv7yx+jJpaewakikp0uWFQSF7ChPPoe3dHmXLpISkg==", "dev": true, "requires": { - "safer-buffer": "~2.1.0" + "@babel/helper-module-imports": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-remap-async-to-generator": "^7.10.1" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", + "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", + "dev": true + } } }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - }, - "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 - }, - "astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "dev": true - }, - "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 - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "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 - }, - "autolinker": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/autolinker/-/autolinker-0.28.1.tgz", - "integrity": "sha1-BlK0kYgYefB3XazgzcoyM5QqTkc=", + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.1.tgz", + "integrity": "sha512-B7K15Xp8lv0sOJrdVAoukKlxP9N59HS48V1J3U/JGj+Ad+MHq+am6xJVs85AgXrQn4LV8vaYFOB+pr/yIuzW8Q==", "dev": true, "requires": { - "gulp-header": "^1.7.1" + "@babel/helper-plugin-utils": "^7.10.1" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", + "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", + "dev": true + } } }, - "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 - }, - "aws4": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", - "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==", - "dev": true - }, - "babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "@babel/plugin-transform-block-scoping": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.1.tgz", + "integrity": "sha512-8bpWG6TtF5akdhIm/uWTyjHqENpy13Fx8chg7pFH875aNLwX8JxIxqm08gmAT+Whe6AOmaTeLPe7dpLbXt+xUw==", "dev": true, "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" + "@babel/helper-plugin-utils": "^7.10.1", + "lodash": "^4.17.13" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "@babel/helper-plugin-utils": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", + "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", "dev": true } } }, - "babel-jest": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.9.0.tgz", - "integrity": "sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw==", + "@babel/plugin-transform-classes": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.1.tgz", + "integrity": "sha512-P9V0YIh+ln/B3RStPoXpEQ/CoAxQIhRSUn7aXqQ+FZJ2u8+oCtjIXR3+X0vsSD8zv+mb56K7wZW1XiDTDGiDRQ==", "dev": true, "requires": { - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/babel__core": "^7.1.0", - "babel-plugin-istanbul": "^5.1.0", - "babel-preset-jest": "^24.9.0", - "chalk": "^2.4.2", - "slash": "^2.0.0" + "@babel/helper-annotate-as-pure": "^7.10.1", + "@babel/helper-define-map": "^7.10.1", + "@babel/helper-function-name": "^7.10.1", + "@babel/helper-optimise-call-expression": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-replace-supers": "^7.10.1", + "@babel/helper-split-export-declaration": "^7.10.1", + "globals": "^11.1.0" }, "dependencies": { + "@babel/code-frame": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.1.tgz", + "integrity": "sha512-IGhtTmpjGbYzcEDOw7DcQtbQSXcG9ftmAXtWTu9V936vDye4xjjekktFAtgZsWpzTj/X01jocB46mTywm/4SZw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.1" + } + }, + "@babel/helper-function-name": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.1.tgz", + "integrity": "sha512-fcpumwhs3YyZ/ttd5Rz0xn0TpIwVkN7X0V38B9TWNfVF42KEkhkAAuPCQ3oXmtTRtiPJrmZ0TrfS0GKF0eMaRQ==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.10.1", + "@babel/template": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.1.tgz", + "integrity": "sha512-F5qdXkYGOQUb0hpRaPoetF9AnsXknKjWMZ+wmsIRsp5ge5sFh4c3h1eH2pRTTuy9KKAA2+TTYomGXAtEL2fQEw==", + "dev": true, + "requires": { + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", + "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", + "dev": true + }, + "@babel/helper-split-export-declaration": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.1.tgz", + "integrity": "sha512-UQ1LVBPrYdbchNhLwj6fetj46BcFwfS4NllJo/1aJsT+1dLTEnXJL0qHqtY7gPzF8S2fXBJamf1biAXV3X077g==", + "dev": true, + "requires": { + "@babel/types": "^7.10.1" + } + }, + "@babel/highlight": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.1.tgz", + "integrity": "sha512-8rMof+gVP8mxYZApLF/JgNDAkdKa+aJt3ZYxF8z6+j/hpeXL7iMsKCPHa2jNMHu/qqBwzQF4OHNoYi8dMA/rYg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.1", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.2.tgz", + "integrity": "sha512-PApSXlNMJyB4JiGVhCOlzKIif+TKFTvu0aQAhnTvfP/z3vVSN6ZypH5bfUNwFXXjRQtUEBNFd2PtmCmG2Py3qQ==", + "dev": true + }, + "@babel/template": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.1.tgz", + "integrity": "sha512-OQDg6SqvFSsc9A0ej6SKINWrpJiNonRIniYondK2ViKhB06i3c0s+76XUft71iqBEe9S1OKsHwPAjfHnuvnCig==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.1", + "@babel/parser": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/types": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", + "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.1", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -1275,10 +2243,10 @@ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "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 }, "supports-color": { @@ -1292,577 +2260,722 @@ } } }, - "babel-plugin-istanbul": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz", - "integrity": "sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==", + "@babel/plugin-transform-computed-properties": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.1.tgz", + "integrity": "sha512-mqSrGjp3IefMsXIenBfGcPXxJxweQe2hEIwMQvjtiDQ9b1IBvDUjkAtV/HMXX47/vXf14qDNedXsIiNd1FmkaQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "find-up": "^3.0.0", - "istanbul-lib-instrument": "^3.3.0", - "test-exclude": "^5.2.3" + "@babel/helper-plugin-utils": "^7.10.1" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", + "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", + "dev": true + } } }, - "babel-plugin-jest-hoist": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz", - "integrity": "sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw==", + "@babel/plugin-transform-destructuring": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.1.tgz", + "integrity": "sha512-V/nUc4yGWG71OhaTH705pU8ZSdM6c1KmmLP8ys59oOYbT7RpMYAR3MsVOt6OHL0WzG7BlTU076va9fjJyYzJMA==", "dev": true, "requires": { - "@types/babel__traverse": "^7.0.6" + "@babel/helper-plugin-utils": "^7.10.1" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", + "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", + "dev": true + } } }, - "babel-preset-jest": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz", - "integrity": "sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg==", + "@babel/plugin-transform-dotall-regex": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.1.tgz", + "integrity": "sha512-19VIMsD1dp02RvduFUmfzj8uknaO3uiHHF0s3E1OHnVsNj8oge8EQ5RzHRbJjGSetRnkEuBYO7TG1M5kKjGLOA==", "dev": true, "requires": { - "@babel/plugin-syntax-object-rest-spread": "^7.0.0", - "babel-plugin-jest-hoist": "^24.9.0" + "@babel/helper-create-regexp-features-plugin": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", + "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", + "dev": true + } } }, - "bail": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.3.tgz", - "integrity": "sha512-1X8CnjFVQ+a+KW36uBNMTU5s8+v5FzeqrP7hTG5aTb4aPreSbZJlhwPon9VKMuEVgV++JM+SQrALY3kr7eswdg==", - "dev": true + "@babel/plugin-transform-duplicate-keys": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.1.tgz", + "integrity": "sha512-wIEpkX4QvX8Mo9W6XF3EdGttrIPZWozHfEaDTU0WJD/TDnXMvdDh30mzUl/9qWhnf7naicYartcEfUghTCSNpA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", + "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", + "dev": true + } + } }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.1.tgz", + "integrity": "sha512-lr/przdAbpEA2BUzRvjXdEDLrArGRRPwbaF9rvayuHRvdQ7lUTTkZnhZrJ4LE2jvgMRFF4f0YuPQ20vhiPYxtA==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", + "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", + "dev": true + } + } }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha1-e95c7RRbbVUakNuH+DxVi060io8=", + "@babel/plugin-transform-flow-strip-types": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.10.1.tgz", + "integrity": "sha512-i4o0YwiJBIsIx7/liVCZ3Q2WkWr1/Yu39PksBOnh/khW2SwIFsGa5Ze+MSon5KbDfrEHP9NeyefAgvUSXzaEkw==", "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" + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-flow": "^7.10.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=", + "@babel/helper-plugin-utils": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", + "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", + "dev": true + } + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.1.tgz", + "integrity": "sha512-US8KCuxfQcn0LwSCMWMma8M2R5mAjJGsmoCBVwlMygvmDUMkTCykc84IqN1M7t+agSfOmLYTInLCHJM+RUoz+w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", + "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", + "dev": true + } + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.1.tgz", + "integrity": "sha512-//bsKsKFBJfGd65qSNNh1exBy5Y9gD9ZN+DvrJ8f7HXr4avE5POW6zB7Rj6VnqHV33+0vXWUwJT0wSHubiAQkw==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.1.tgz", + "integrity": "sha512-IGhtTmpjGbYzcEDOw7DcQtbQSXcG9ftmAXtWTu9V936vDye4xjjekktFAtgZsWpzTj/X01jocB46mTywm/4SZw==", "dev": true, "requires": { - "is-descriptor": "^1.0.0" + "@babel/highlight": "^7.10.1" } }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "@babel/helper-function-name": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.1.tgz", + "integrity": "sha512-fcpumwhs3YyZ/ttd5Rz0xn0TpIwVkN7X0V38B9TWNfVF42KEkhkAAuPCQ3oXmtTRtiPJrmZ0TrfS0GKF0eMaRQ==", "dev": true, "requires": { - "kind-of": "^6.0.0" + "@babel/helper-get-function-arity": "^7.10.1", + "@babel/template": "^7.10.1", + "@babel/types": "^7.10.1" } }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "@babel/helper-get-function-arity": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.1.tgz", + "integrity": "sha512-F5qdXkYGOQUb0hpRaPoetF9AnsXknKjWMZ+wmsIRsp5ge5sFh4c3h1eH2pRTTuy9KKAA2+TTYomGXAtEL2fQEw==", "dev": true, "requires": { - "kind-of": "^6.0.0" + "@babel/types": "^7.10.1" } }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "@babel/helper-plugin-utils": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", + "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", + "dev": true + }, + "@babel/highlight": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.1.tgz", + "integrity": "sha512-8rMof+gVP8mxYZApLF/JgNDAkdKa+aJt3ZYxF8z6+j/hpeXL7iMsKCPHa2jNMHu/qqBwzQF4OHNoYi8dMA/rYg==", "dev": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "@babel/helper-validator-identifier": "^7.10.1", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" } }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "@babel/parser": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.2.tgz", + "integrity": "sha512-PApSXlNMJyB4JiGVhCOlzKIif+TKFTvu0aQAhnTvfP/z3vVSN6ZypH5bfUNwFXXjRQtUEBNFd2PtmCmG2Py3qQ==", "dev": true }, - "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==", + "@babel/template": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.1.tgz", + "integrity": "sha512-OQDg6SqvFSsc9A0ej6SKINWrpJiNonRIniYondK2ViKhB06i3c0s+76XUft71iqBEe9S1OKsHwPAjfHnuvnCig==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.1", + "@babel/parser": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/types": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", + "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.1", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "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": { + "color-convert": "^1.9.0" + } + }, + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "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 + }, + "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" + } } } }, - "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": { - "tweetnacl": "^0.14.3" - } - }, - "benchmark": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/benchmark/-/benchmark-2.1.4.tgz", - "integrity": "sha1-CfPeMckWQl1JjMLuVloOvzwqVik=", + "@babel/plugin-transform-literals": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.1.tgz", + "integrity": "sha512-qi0+5qgevz1NHLZroObRm5A+8JJtibb7vdcPQF1KQE12+Y/xxl8coJ+TpPW9iRq+Mhw/NKLjm+5SHtAHCC7lAw==", "dev": true, "requires": { - "lodash": "^4.17.4", - "platform": "^1.3.3" + "@babel/helper-plugin-utils": "^7.10.1" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", + "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", + "dev": true + } } }, - "bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "@babel/plugin-transform-member-expression-literals": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.1.tgz", + "integrity": "sha512-UmaWhDokOFT2GcgU6MkHC11i0NQcL63iqeufXWfRy6pUOGYeCGEKhvfFO6Vz70UfYJYHwveg62GS83Rvpxn+NA==", "dev": true, - "optional": true, "requires": { - "file-uri-to-path": "1.0.0" + "@babel/helper-plugin-utils": "^7.10.1" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", + "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", + "dev": true + } } }, - "boundary": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/boundary/-/boundary-1.0.1.tgz", - "integrity": "sha1-TWfcJgLAzBbdm85+v4fpSCkPWBI=", - "dev": true - }, - "brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "@babel/plugin-transform-modules-amd": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.1.tgz", + "integrity": "sha512-31+hnWSFRI4/ACFr1qkboBbrTxoBIzj7qA69qlq8HY8p7+YCzkCT6/TvQ1a4B0z27VeWtAeJd6pr5G04dc1iHw==", "dev": true, "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "@babel/helper-module-transforms": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", + "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", + "dev": true + } } }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "@babel/plugin-transform-modules-commonjs": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.1.tgz", + "integrity": "sha512-AQG4fc3KOah0vdITwt7Gi6hD9BtQP/8bhem7OjbaMoRNCH5Djx42O2vYMfau7QnAzQCa+RJnhJBmFFMGpQEzrg==", "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" + "@babel/helper-module-transforms": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-simple-access": "^7.10.1", + "babel-plugin-dynamic-import-node": "^2.3.3" }, "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "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" - } - }, - "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" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "@babel/helper-plugin-utils": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", + "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", "dev": true } } }, - "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-resolve": { - "version": "1.11.3", - "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", - "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", + "@babel/plugin-transform-modules-systemjs": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.1.tgz", + "integrity": "sha512-ewNKcj1TQZDL3YnO85qh9zo1YF1CHgmSTlRQgHqe63oTrMI85cthKtZjAiZSsSNjPQ5NCaYo5QkbYqEw1ZBgZA==", "dev": true, "requires": { - "resolve": "1.1.7" + "@babel/helper-hoist-variables": "^7.10.1", + "@babel/helper-module-transforms": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "babel-plugin-dynamic-import-node": "^2.3.3" }, "dependencies": { - "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "@babel/helper-plugin-utils": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", + "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", "dev": true } } }, - "browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha1-uqVZ7hTO1zRSIputcyZGfGH6vWA=", - "dev": true - }, - "bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "@babel/plugin-transform-modules-umd": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.1.tgz", + "integrity": "sha512-EIuiRNMd6GB6ulcYlETnYYfgv4AxqrswghmBRQbWLHZxN4s7mupxzglnHqk9ZiUpDI4eRWewedJJNj67PWOXKA==", "dev": true, "requires": { - "fast-json-stable-stringify": "2.x" + "@babel/helper-module-transforms": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", + "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", + "dev": true + } } }, - "bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz", + "integrity": "sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw==", "dev": true, "requires": { - "node-int64": "^0.4.0" + "@babel/helper-create-regexp-features-plugin": "^7.8.3" } }, - "buffer-from": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz", - "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==", - "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 - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha1-Cn9GQWgxyLZi7jb+TnxZ129marI=", + "@babel/plugin-transform-new-target": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.1.tgz", + "integrity": "sha512-MBlzPc1nJvbmO9rPr1fQwXOM2iGut+JC92ku6PbiJMMK7SnQc1rytgpopveE3Evn47gzvGYeCdgfCDbZo0ecUw==", "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" + "@babel/helper-plugin-utils": "^7.10.1" }, "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "@babel/helper-plugin-utils": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", + "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", "dev": true } } }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, - "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==", + "@babel/plugin-transform-object-super": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.1.tgz", + "integrity": "sha512-WnnStUDN5GL+wGQrJylrnnVlFhFmeArINIR9gjhSeYyvroGhBrSAXYg/RHsnfzmsa+onJrTJrEClPzgNmmQ4Gw==", "dev": true, "requires": { - "rsvp": "^4.8.4" + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-replace-supers": "^7.10.1" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", + "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", + "dev": true + } } }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "@babel/plugin-transform-parameters": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.1.tgz", + "integrity": "sha512-tJ1T0n6g4dXMsL45YsSzzSDZCxiHXAQp/qHrucOq5gEHncTA3xDxnd5+sZcoQp+N1ZbieAaB8r/VUCG0gqseOg==", "dev": true, "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@babel/helper-get-function-arity": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.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==", + "@babel/helper-get-function-arity": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.1.tgz", + "integrity": "sha512-F5qdXkYGOQUb0hpRaPoetF9AnsXknKjWMZ+wmsIRsp5ge5sFh4c3h1eH2pRTTuy9KKAA2+TTYomGXAtEL2fQEw==", "dev": true, "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" + "@babel/types": "^7.10.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==", + "@babel/helper-plugin-utils": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", + "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", + "dev": true + }, + "@babel/types": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", + "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", "dev": true, "requires": { - "color-name": "~1.1.4" + "@babel/helper-validator-identifier": "^7.10.1", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" } - }, - "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 } } }, - "character-entities": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.2.tgz", - "integrity": "sha512-sMoHX6/nBiy3KKfC78dnEalnpn0Az0oSNvqUWYTtYrhRI5iUIYsROU48G+E+kMFQzqXaJ8kHJZ85n7y6/PHgwQ==", - "dev": true + "@babel/plugin-transform-property-literals": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.1.tgz", + "integrity": "sha512-Kr6+mgag8auNrgEpbfIWzdXYOvqDHZOF0+Bx2xh4H2EDNwcbRb9lY6nkZg8oSjsX+DH9Ebxm9hOqtKW+gRDeNA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", + "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", + "dev": true + } + } }, - "character-entities-legacy": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.2.tgz", - "integrity": "sha512-9NB2VbXtXYWdXzqrvAHykE/f0QJxzaKIpZ5QzNZrrgQ7Iyxr2vnfS8fCBNVW9nUEZE0lo57nxKRqnzY/dKrwlA==", - "dev": true - }, - "character-reference-invalid": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.2.tgz", - "integrity": "sha512-7I/xceXfKyUJmSAn/jw8ve/9DyOP7XxufNYLI9Px7CmsKgEUaZLUTax6nZxGQtaoiZCjpu6cHPj20xC/vqRReQ==", - "dev": 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 - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha1-+TNprouafOAv1B+q0MqDAzGQxGM=", + "@babel/plugin-transform-react-jsx": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.10.1.tgz", + "integrity": "sha512-MBVworWiSRBap3Vs39eHt+6pJuLUAaK4oxGc8g+wY+vuSJvLiEQjW1LSTqKb8OUPtDvHCkdPhk7d6sjC19xyFw==", "dev": true, "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" + "@babel/helper-builder-react-jsx": "^7.10.1", + "@babel/helper-builder-react-jsx-experimental": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-jsx": "^7.10.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" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "@babel/helper-plugin-utils": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", + "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", "dev": true } } }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "@babel/plugin-transform-regenerator": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.1.tgz", + "integrity": "sha512-B3+Y2prScgJ2Bh/2l9LJxKbb8C8kRfsG4AdPT+n7ixBHIxJaIG8bi8tgjxUMege1+WqSJ+7gu1YeoMVO3gPWzw==", "dev": true, "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.1.tgz", + "integrity": "sha512-qN1OMoE2nuqSPmpTqEM7OvJ1FkMEV+BjVeZZm9V9mq/x1JLKQ4pcv8riZJMNN3u2AUGl0ouOMjRr2siecvHqUQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" }, "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "@babel/helper-plugin-utils": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", + "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", "dev": true - }, - "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" - } } } }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true - }, - "code-block-writer": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-10.1.0.tgz", - "integrity": "sha512-RG9hpXtWFeUWhuUav1YuP/vGcyncW+t90yJLk9fNZs1De2OuHTHKAKThVCokt29PYq5RoJ0QSZaIZ+rvPO23hA==", - "dev": true - }, - "coffee-script": { - "version": "1.12.7", - "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.12.7.tgz", - "integrity": "sha512-fLeEhqwymYat/MpTPUjSKHVYYl0ec2mOyALEMLmzr5i1isuG+6jfI2j2d5oBO3VIzgUXgBVIcOT9uH1TFxBckw==", - "dev": true - }, - "collapse-white-space": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.4.tgz", - "integrity": "sha512-YfQ1tAUZm561vpYD+5eyWN8+UsceQbSrqqlc/6zDY2gtAE+uZLSdkkovhnGpmCThsvKBFakq4EdY/FF93E8XIw==", - "dev": true - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "@babel/plugin-transform-shorthand-properties": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.1.tgz", + "integrity": "sha512-AR0E/lZMfLstScFwztApGeyTHJ5u3JUKMjneqRItWeEqDdHWZwAOKycvQNCasCK/3r5YXsuNG25funcJDu7Y2g==", "dev": true, "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" + "@babel/helper-plugin-utils": "^7.10.1" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", + "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", + "dev": true + } } }, - "color-convert": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", - "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "@babel/plugin-transform-spread": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.10.1.tgz", + "integrity": "sha512-8wTPym6edIrClW8FI2IoaePB91ETOtg36dOkj3bYcNe7aDMN2FXEoUa+WrmPc4xa1u2PQK46fUX2aCb+zo9rfw==", "dev": true, "requires": { - "color-name": "^1.1.1" + "@babel/helper-plugin-utils": "^7.10.1" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", + "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", + "dev": true + } } }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "@babel/plugin-transform-sticky-regex": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.1.tgz", + "integrity": "sha512-j17ojftKjrL7ufX8ajKvwRilwqTok4q+BjkknmQw9VNHnItTyMP5anPFzxFJdCQs7clLcWpCV3ma+6qZWLnGMA==", "dev": true, "requires": { - "delayed-stream": "~1.0.0" + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-regex": "^7.10.1" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", + "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", + "dev": true + } } }, - "commander": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha1-9hmKqE5bg8RgVLlN3tv+1e6f8So=", - "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==", + "@babel/plugin-transform-template-literals": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.1.tgz", + "integrity": "sha512-t7B/3MQf5M1T9hPCRG28DNGZUuxAuDqLYS03rJrIk2prj/UV7Z6FOneijhQhnv/Xa039vidXeVbvjK2SK5f7Gg==", "dev": true, "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" + "@babel/helper-annotate-as-pure": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", + "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", + "dev": true + } } }, - "concat-with-sourcemaps": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz", - "integrity": "sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==", + "@babel/plugin-transform-typeof-symbol": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.1.tgz", + "integrity": "sha512-qX8KZcmbvA23zDi+lk9s6hC1FM7jgLHYIjuLgULgc8QtYnmB3tAVIYkNoKRQ75qWBeyzcoMoK8ZQmogGtC/w0g==", "dev": true, "requires": { - "source-map": "^0.6.1" + "@babel/helper-plugin-utils": "^7.10.1" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", + "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", + "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==", + "@babel/plugin-transform-unicode-escapes": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.1.tgz", + "integrity": "sha512-zZ0Poh/yy1d4jeDWpx/mNwbKJVwUYJX73q+gyh4bwtG0/iUlzdEu0sLMda8yuDFS6LBQlT/ST1SJAR6zYwXWgw==", "dev": true, "requires": { - "safe-buffer": "~5.1.1" + "@babel/helper-plugin-utils": "^7.10.1" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", + "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", + "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 - }, - "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=", - "dev": true - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "@babel/plugin-transform-unicode-regex": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.1.tgz", + "integrity": "sha512-Y/2a2W299k0VIUdbqYm9X2qS6fE0CUBhhiPpimK6byy7OJ/kORLlIX+J6UrjgNu5awvs62k+6RSslxhcvVw2Tw==", "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" + "@babel/helper-create-regexp-features-plugin": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", + "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", + "dev": true + } + } + }, + "@babel/preset-env": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.10.2.tgz", + "integrity": "sha512-MjqhX0RZaEgK/KueRzh+3yPSk30oqDKJ5HP5tqTSB1e2gzGS3PLy7K0BIpnp78+0anFuSwOeuCf1zZO7RzRvEA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.10.1", + "@babel/helper-compilation-targets": "^7.10.2", + "@babel/helper-module-imports": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-proposal-async-generator-functions": "^7.10.1", + "@babel/plugin-proposal-class-properties": "^7.10.1", + "@babel/plugin-proposal-dynamic-import": "^7.10.1", + "@babel/plugin-proposal-json-strings": "^7.10.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.1", + "@babel/plugin-proposal-numeric-separator": "^7.10.1", + "@babel/plugin-proposal-object-rest-spread": "^7.10.1", + "@babel/plugin-proposal-optional-catch-binding": "^7.10.1", + "@babel/plugin-proposal-optional-chaining": "^7.10.1", + "@babel/plugin-proposal-private-methods": "^7.10.1", + "@babel/plugin-proposal-unicode-property-regex": "^7.10.1", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-class-properties": "^7.10.1", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.1", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/plugin-syntax-top-level-await": "^7.10.1", + "@babel/plugin-transform-arrow-functions": "^7.10.1", + "@babel/plugin-transform-async-to-generator": "^7.10.1", + "@babel/plugin-transform-block-scoped-functions": "^7.10.1", + "@babel/plugin-transform-block-scoping": "^7.10.1", + "@babel/plugin-transform-classes": "^7.10.1", + "@babel/plugin-transform-computed-properties": "^7.10.1", + "@babel/plugin-transform-destructuring": "^7.10.1", + "@babel/plugin-transform-dotall-regex": "^7.10.1", + "@babel/plugin-transform-duplicate-keys": "^7.10.1", + "@babel/plugin-transform-exponentiation-operator": "^7.10.1", + "@babel/plugin-transform-for-of": "^7.10.1", + "@babel/plugin-transform-function-name": "^7.10.1", + "@babel/plugin-transform-literals": "^7.10.1", + "@babel/plugin-transform-member-expression-literals": "^7.10.1", + "@babel/plugin-transform-modules-amd": "^7.10.1", + "@babel/plugin-transform-modules-commonjs": "^7.10.1", + "@babel/plugin-transform-modules-systemjs": "^7.10.1", + "@babel/plugin-transform-modules-umd": "^7.10.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3", + "@babel/plugin-transform-new-target": "^7.10.1", + "@babel/plugin-transform-object-super": "^7.10.1", + "@babel/plugin-transform-parameters": "^7.10.1", + "@babel/plugin-transform-property-literals": "^7.10.1", + "@babel/plugin-transform-regenerator": "^7.10.1", + "@babel/plugin-transform-reserved-words": "^7.10.1", + "@babel/plugin-transform-shorthand-properties": "^7.10.1", + "@babel/plugin-transform-spread": "^7.10.1", + "@babel/plugin-transform-sticky-regex": "^7.10.1", + "@babel/plugin-transform-template-literals": "^7.10.1", + "@babel/plugin-transform-typeof-symbol": "^7.10.1", + "@babel/plugin-transform-unicode-escapes": "^7.10.1", + "@babel/plugin-transform-unicode-regex": "^7.10.1", + "@babel/preset-modules": "^0.1.3", + "@babel/types": "^7.10.2", + "browserslist": "^4.12.0", + "core-js-compat": "^3.6.2", + "invariant": "^2.2.2", + "levenary": "^1.1.1", + "semver": "^5.5.0" }, "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", + "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", + "dev": true + }, + "@babel/types": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", + "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.1", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", @@ -1871,207 +2984,154 @@ } } }, - "cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - }, - "cssstyle": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz", - "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", + "@babel/preset-modules": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz", + "integrity": "sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg==", "dev": true, "requires": { - "cssom": "0.3.x" + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" } }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "@babel/runtime": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.2.tgz", + "integrity": "sha512-6sF3uQw2ivImfVIl62RZ7MXhO2tap69WeWK57vAaimT6AZbE4FbqjdEJIN1UqoD6wI6B+1n9UiagafH1sxjOtg==", "dev": true, "requires": { - "assert-plus": "^1.0.0" + "regenerator-runtime": "^0.13.4" } }, - "data-urls": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", - "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "@babel/template": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", "dev": true, "requires": { - "abab": "^2.0.0", - "whatwg-mimetype": "^2.2.0", - "whatwg-url": "^7.0.0" + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" }, "dependencies": { - "whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", "dev": true, "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - } - } - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", - "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=", - "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-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 - }, - "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": "sha1-1Flono1lS6d+AqgX+HENcCyxbp0=", - "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": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", - "dev": true, - "requires": { - "kind-of": "^6.0.0" + "@babel/highlight": "^7.8.3" } }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "@babel/highlight": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", + "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", "dev": true, "requires": { - "kind-of": "^6.0.0" + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } } }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "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": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "color-convert": "^1.9.0" } }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, - "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 - } - } - }, - "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 - }, - "detect-newline": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", - "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", - "dev": true - }, - "diacritics-map": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/diacritics-map/-/diacritics-map-0.1.0.tgz", - "integrity": "sha1-bfwP+dAQAKLt8oZTccrDFulJd68=", - "dev": true - }, - "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha1-gAwN0eCov7yVg1wgKtIg/jF+WhI=", - "dev": true - }, - "diff-sequences": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz", - "integrity": "sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==", - "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": { + "js-tokens": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true + }, + "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" + } } } }, - "docs-ts": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/docs-ts/-/docs-ts-0.5.1.tgz", - "integrity": "sha512-zdBt4P6X7h577/Vku0YHAw/RR1+zpKklK+DOzed1HJltwAAciQG14qy18TzcMbVUFxrnT9OO4Y1K/lQLdX1i/Q==", + "@babel/traverse": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.6.tgz", + "integrity": "sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A==", "dev": true, "requires": { - "chalk": "^2.4.2", - "doctrine": "^3.0.0", - "fp-ts": "^2.6.2", - "fs-extra": "^7.0.1", - "glob": "^7.1.3", - "markdown-toc": "^1.2.0", - "rimraf": "^2.6.3", - "ts-morph": "^5.0.0", - "ts-node": "^8.0.2" + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.8.6", + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" }, "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/highlight": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", + "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } + } + }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -2081,26 +3141,13 @@ "color-convert": "^1.9.0" } }, - "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": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "ms": "^2.1.1" } }, "has-flag": { @@ -2109,14 +3156,17 @@ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } + "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 + }, + "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": "5.5.0", @@ -2129,18 +3179,25 @@ } } }, - "doctoc": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/doctoc/-/doctoc-1.4.0.tgz", - "integrity": "sha512-8IAq3KdMkxhXCUF+xdZxdJxwuz8N2j25sMgqiu4U4JWluN9tRKMlAalxGASszQjlZaBprdD2YfXpL3VPWUD4eg==", + "@babel/types": { + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", + "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", "dev": true, "requires": { - "@textlint/markdown-to-ast": "~6.0.9", - "anchor-markdown-header": "^0.5.5", - "htmlparser2": "~3.9.2", - "minimist": "~1.2.0", - "underscore": "~1.8.3", - "update-section": "^0.3.0" + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "@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" }, "dependencies": { "minimist": { @@ -2151,69 +3208,126 @@ } } }, - "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" - } - }, - "dom-serializer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", - "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", + "@dsherret/to-absolute-glob": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@dsherret/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", + "integrity": "sha1-H2R13IvZdM6gei2vOGSzF7HdMyw=", "dev": true, "requires": { - "domelementtype": "^1.3.0", - "entities": "^1.1.1" + "is-absolute": "^1.0.0", + "is-negated-glob": "^1.0.0" } }, - "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "@iarna/toml": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", + "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==", "dev": true }, - "domexception": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", - "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "@jest/console": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz", + "integrity": "sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==", "dev": true, "requires": { - "webidl-conversions": "^4.0.2" + "@jest/source-map": "^24.9.0", + "chalk": "^2.0.1", + "slash": "^2.0.0" + }, + "dependencies": { + "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": { + "color-convert": "^1.9.0" + } + }, + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, + "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" + } + } } }, - "domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "@jest/environment": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.9.0.tgz", + "integrity": "sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ==", "dev": true, "requires": { - "domelementtype": "1" + "@jest/fake-timers": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0" } }, - "domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "@jest/fake-timers": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz", + "integrity": "sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==", "dev": true, "requires": { - "dom-serializer": "0", - "domelementtype": "1" + "@jest/types": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-mock": "^24.9.0" } }, - "dtslint": { - "version": "github:gcanti/dtslint#de9181e0f1069b16ea15da87f74d88ed9bc221b7", - "from": "github:gcanti/dtslint", + "@jest/reporters": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.9.0.tgz", + "integrity": "sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw==", "dev": true, "requires": { - "fs-extra": "^6.0.1", - "parsimmon": "^1.12.0", - "strip-json-comments": "^2.0.1", - "tslint": "^5.12.0", - "typescript": "^4.0.0-dev.20200512" + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.2", + "istanbul-lib-coverage": "^2.0.2", + "istanbul-lib-instrument": "^3.0.1", + "istanbul-lib-report": "^2.0.4", + "istanbul-lib-source-maps": "^3.0.1", + "istanbul-reports": "^2.2.6", + "jest-haste-map": "^24.9.0", + "jest-resolve": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.6.0", + "node-notifier": "^5.4.2", + "slash": "^2.0.0", + "source-map": "^0.6.0", + "string-length": "^2.0.0" }, "dependencies": { "ansi-styles": { @@ -2236,18 +3350,18 @@ "supports-color": "^5.3.0" } }, - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true - }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -2256,1784 +3370,5778 @@ "requires": { "has-flag": "^3.0.0" } - }, - "tslint": { - "version": "5.20.1", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.20.1.tgz", - "integrity": "sha512-EcMxhzCFt8k+/UP5r8waCf/lzmeSyVlqxqMEDQE7rWYiQky8KpIBz1JAoYXfROHrPZ1XXd43q8yQnULOLiBRQg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "builtin-modules": "^1.1.1", - "chalk": "^2.3.0", - "commander": "^2.12.1", - "diff": "^4.0.1", - "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" - } - }, - "tsutils": { - "version": "2.29.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", - "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - } - }, - "typescript": { - "version": "4.0.0-dev.20200512", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.0-dev.20200512.tgz", - "integrity": "sha512-ZsVvhdxpQaA6KpjlT8wNNtweORzNsMtwgCo8viKWQmOvaU+BlMsd3MjD2LONQjFSiETCaw4uq0nNdyfKrCjjIw==", - "dev": true } } }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "@jest/source-map": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz", + "integrity": "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==", "dev": true, "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" + "callsites": "^3.0.0", + "graceful-fs": "^4.1.15", + "source-map": "^0.6.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 + } } }, - "emoji-regex": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-6.1.3.tgz", - "integrity": "sha1-7HmjlpsC0uzytyJUJ5v5m8eoOTI=", - "dev": true - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "@jest/test-result": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz", + "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==", "dev": true, "requires": { - "once": "^1.4.0" + "@jest/console": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/istanbul-lib-coverage": "^2.0.0" } }, - "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", - "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==", + "@jest/test-sequencer": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz", + "integrity": "sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A==", "dev": true, "requires": { - "is-arrayish": "^0.2.1" + "@jest/test-result": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-runner": "^24.9.0", + "jest-runtime": "^24.9.0" } }, - "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==", + "@jest/transform": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.9.0.tgz", + "integrity": "sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ==", "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" + "@babel/core": "^7.1.0", + "@jest/types": "^24.9.0", + "babel-plugin-istanbul": "^5.1.0", + "chalk": "^2.0.1", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.1.15", + "jest-haste-map": "^24.9.0", + "jest-regex-util": "^24.9.0", + "jest-util": "^24.9.0", + "micromatch": "^3.1.10", + "pirates": "^4.0.1", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "2.4.1" + }, + "dependencies": { + "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": { + "color-convert": "^1.9.0" + } + }, + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "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 + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, + "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" + } + } } }, - "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==", + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", "dev": true, "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.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=", - "dev": true - }, - "escodegen": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.1.tgz", - "integrity": "sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ==", + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", + "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", "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": { - "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 - } + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" } }, - "esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", - "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.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", - "dev": true + "@nodelib/fs.scandir": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", + "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.3", + "run-parallel": "^1.1.9" + } }, - "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==", + "@nodelib/fs.stat": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", + "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", "dev": true }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "@nodelib/fs.walk": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz", + "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==", "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" + "@nodelib/fs.scandir": "2.1.3", + "fastq": "^1.6.0" } }, - "exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", - "dev": true + "@parcel/fs": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-1.11.0.tgz", + "integrity": "sha512-86RyEqULbbVoeo8OLcv+LQ1Vq2PKBAvWTU9fCgALxuCTbbs5Ppcvll4Vr+Ko1AnmMzja/k++SzNAwJfeQXVlpA==", + "dev": true, + "requires": { + "@parcel/utils": "^1.11.0", + "mkdirp": "^0.5.1", + "rimraf": "^2.6.2" + } }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "@parcel/logger": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-1.11.1.tgz", + "integrity": "sha512-9NF3M6UVeP2udOBDILuoEHd8VrF4vQqoWHEafymO1pfSoOMfxrSJZw1MfyAAIUN/IFp9qjcpDCUbDZB+ioVevA==", "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" + "@parcel/workers": "^1.11.0", + "chalk": "^2.1.0", + "grapheme-breaker": "^0.3.2", + "ora": "^2.1.0", + "strip-ansi": "^4.0.0" }, "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=", + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "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==", "dev": true, "requires": { - "is-descriptor": "^0.1.0" + "color-convert": "^1.9.0" } }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "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": { - "is-extendable": "^0.1.0" - } - } - } - }, - "expand-range": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", - "dev": true, - "requires": { - "fill-range": "^2.1.0" - } - }, - "expect": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-24.9.0.tgz", - "integrity": "sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q==", - "dev": true, - "requires": { - "@jest/types": "^24.9.0", - "ansi-styles": "^3.2.0", - "jest-get-type": "^24.9.0", - "jest-matcher-utils": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-regex-util": "^24.9.0" - } - }, - "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": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=", - "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" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.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" - } + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true }, - "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==", + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "kind-of": "^6.0.0" + "ansi-regex": "^3.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==", + "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": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "has-flag": "^3.0.0" } - }, - "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 } } }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "@parcel/utils": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-1.11.0.tgz", + "integrity": "sha512-cA3p4jTlaMeOtAKR/6AadanOPvKeg8VwgnHhOyfi0yClD0TZS/hi9xu12w4EzA/8NtHu0g6o4RDfcNjqN8l1AQ==", "dev": true }, - "fast-check": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/fast-check/-/fast-check-1.23.0.tgz", - "integrity": "sha512-MRxcYG4YHTzP8wbjPsl6lZeUpY9sBuYsp6/w8lWmSvgS0wBrhMSErVnHmt5zi9sDWROCd+H7bk2jpr6wzToM6w==", + "@parcel/watcher": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-1.12.1.tgz", + "integrity": "sha512-od+uCtCxC/KoNQAIE1vWx1YTyKYY+7CTrxBJPRh3cDWw/C0tCtlBMVlrbplscGoEpt6B27KhJDCv82PBxOERNA==", "dev": true, "requires": { - "pure-rand": "^2.0.0", - "tslib": "^1.10.0" - }, - "dependencies": { - "tslib": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", - "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==", - "dev": true - } + "@parcel/utils": "^1.11.0", + "chokidar": "^2.1.5" } }, - "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "@parcel/workers": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-1.11.0.tgz", + "integrity": "sha512-USSjRAAQYsZFlv43FUPdD+jEGML5/8oLF0rUzPQTtK4q9kvaXr49F5ZplyLz5lox78cLZ0TxN2bIDQ1xhOkulQ==", + "dev": true, + "requires": { + "@parcel/utils": "^1.11.0", + "physical-cpu-count": "^2.0.0" + } + }, + "@textlint/ast-node-types": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-4.2.1.tgz", + "integrity": "sha512-Pqg1LTJpF929Ovi/lCaPqlyz8yDwBFbQulC0jyQcbRAoTxYS4AZMc48Ug2yk0so5hISQXKrlAxyVBmBVl9EKGA==", "dev": true }, - "fast-glob": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.2.tgz", - "integrity": "sha512-UDV82o4uQyljznxwMxyVRJgZZt3O5wENYojjzbaGEGZgeOxkLFf+V4cnUD+krzb2F72E18RhamkMZ7AdeggF7A==", + "@textlint/markdown-to-ast": { + "version": "6.0.9", + "resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-6.0.9.tgz", + "integrity": "sha512-hfAWBvTeUGh5t5kTn2U3uP3qOSM1BSrxzl1jF3nn0ywfZXpRBZr5yRjXnl4DzIYawCtZOshmRi/tI3/x4TE1jQ==", "dev": true, "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", + "@textlint/ast-node-types": "^4.0.3", + "debug": "^2.1.3", + "remark-frontmatter": "^1.2.0", + "remark-parse": "^5.0.0", + "structured-source": "^3.0.2", + "traverse": "^0.6.6", + "unified": "^6.1.6" + } + }, + "@ts-morph/common": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.1.1.tgz", + "integrity": "sha512-8TLlC85CXgKNoTeqoXtrscPmKDbQCBfwZJ4hqli/QI4STa7sD2H6UqI9LSg8uBV5FYaD0QSdj/mtrCDrELvF+Q==", + "dev": true, + "requires": { + "@dsherret/to-absolute-glob": "^2.0.2", + "fs-extra": "^8.1.0", "glob-parent": "^5.1.0", - "merge2": "^1.3.0", - "micromatch": "^4.0.2", - "picomatch": "^2.2.1" + "globby": "^10.0.1", + "is-negated-glob": "^1.0.0", + "multimatch": "^4.0.0", + "typescript": "~3.7.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==", + "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==", "dev": true, "requires": { - "to-regex-range": "^5.0.1" + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" } }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "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 }, - "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" - } + "typescript": { + "version": "3.7.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.5.tgz", + "integrity": "sha512-/P5lkRXkWHNAbcJIiHPfRoKqyd7bsyCma1hZNUGfn20qm64T6ZBlrzprymeu918H+mB/0rIg2gGK/BXkhhYgBw==", + "dev": true } } }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", - "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 + "@types/babel__core": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.6.tgz", + "integrity": "sha512-tTnhWszAqvXnhW7m5jQU9PomXSiKXk2sFxpahXvI20SZKu9ylPi8WtIxueZ6ehDWikPT0jeFujMj3X4ZHuf3Tg==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } }, - "fastq": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.8.0.tgz", - "integrity": "sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q==", + "@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": { - "reusify": "^1.0.4" + "@babel/types": "^7.0.0" } }, - "fault": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.2.tgz", - "integrity": "sha512-o2eo/X2syzzERAtN5LcGbiVQ0WwZSlN3qLtadwAz3X8Bu+XWD16dja/KMsjZLiQr+BLGPDnHGkc4yUJf1Xpkpw==", + "@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": { - "format": "^0.2.2" + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" } }, - "fb-watchman": { + "@types/babel__traverse": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.9.tgz", + "integrity": "sha512-jEFQ8L1tuvPjOI8lnpaf73oCJe+aoxL6ygqSy6c8LcW98zaC+4mzWuQIRCEvKeCOu+lbqdXcg4Uqmm1S8AP1tw==", + "dev": true, + "requires": { + "@babel/types": "^7.3.0" + } + }, + "@types/benchmark": { + "version": "1.0.31", + "resolved": "https://registry.npmjs.org/@types/benchmark/-/benchmark-1.0.31.tgz", + "integrity": "sha1-LdNRTpM5bzYrpVUafJ/w2kBcHTg=", + "dev": true + }, + "@types/glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-VgNIkxK+j7Nz5P7jvUZlRvhuPSmsEfS03b0alKcq5V/STUKAa3Plemsn5mrQUO7am6OErJ4rhGEGJbACclrtRA==", + "dev": true, + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/istanbul-lib-coverage": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", - "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", + "integrity": "sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg==", + "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": { - "bser": "2.1.1" + "@types/istanbul-lib-coverage": "*" } }, - "file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "@types/istanbul-reports": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz", + "integrity": "sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA==", "dev": true, - "optional": true + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } }, - "fill-range": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", - "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", + "@types/jest": { + "version": "22.2.2", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-22.2.2.tgz", + "integrity": "sha1-r+Xay9ANZTJfUtoO0+duJZYprJ0=", + "dev": true + }, + "@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/node": { + "version": "12.6.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.6.8.tgz", + "integrity": "sha512-aX+gFgA5GHcDi89KG5keey2zf0WfZk/HAQotEamsK2kbey+8yGKcson0hbK8E+v0NArlCJQCqMP161YhV6ZXLg==", + "dev": true + }, + "@types/prettier": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-1.10.0.tgz", + "integrity": "sha1-Wr8ewKbpBP4kkMwgaPNqOOSmPEI=", + "dev": true + }, + "@types/q": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", + "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==", + "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": "13.0.8", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.8.tgz", + "integrity": "sha512-XAvHLwG7UQ+8M4caKIH0ZozIOYay5fQkAgyIXegXT9jPtdIGdhga+sUEdAr1CiG46aB+c64xQEYyEzlwWVTNzA==", "dev": true, "requires": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^3.0.0", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" + "@types/yargs-parser": "*" } }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "@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 + }, + "abab": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.3.tgz", + "integrity": "sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg==", + "dev": true + }, + "acorn": { + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", + "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", + "dev": true + }, + "acorn-globals": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", + "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", "dev": true, "requires": { - "locate-path": "^3.0.0" + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + }, + "dependencies": { + "acorn": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", + "dev": true + } } }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "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 }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "ajv": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", "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==", + "anchor-markdown-header": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/anchor-markdown-header/-/anchor-markdown-header-0.5.7.tgz", + "integrity": "sha1-BFBj125qH5zTJ6V6ASaqD97Dcac=", "dev": true, "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" + "emoji-regex": "~6.1.0" } }, - "format": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", - "integrity": "sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs=", + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", "dev": true }, - "fp-ts": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-2.6.2.tgz", - "integrity": "sha512-RUm0iNcD7eMFZo6W1K10kqi0DyYX06lbbjyNgKwEWg1kPZw91ZXlkEx/9cII1x/jY4fHzh14+Hquk5sJnXBzQA==", + "ansi-red": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz", + "integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=", + "dev": true, + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", "dev": true, "requires": { - "map-cache": "^0.2.2" + "color-convert": "^1.9.0" } }, - "fs-extra": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz", - "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==", + "ansi-to-html": { + "version": "0.6.14", + "resolved": "https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.6.14.tgz", + "integrity": "sha512-7ZslfB1+EnFSDO5Ju+ue5Y6It19DRnZXWv8jrGHgIlPna5Mh4jz7BV5jCbQneXNFurQcKoolaaAjHtgSBfOIuA==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "entities": "^1.1.2" } }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "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 }, - "fsevents": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.12.tgz", - "integrity": "sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q==", + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", "dev": true, - "optional": true, "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1", - "node-pre-gyp": "*" - }, - "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 + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "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": "sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "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 + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=", + "dev": true + }, + "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-differ": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", + "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", + "dev": true + }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", + "dev": true + }, + "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 + }, + "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 + }, + "arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^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 + } + } + }, + "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": { + "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 }, - "are-we-there-yet": { - "version": "1.1.5", - "bundled": true, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", "dev": true, - "optional": true, "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" + "inherits": "2.0.1" } + } + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "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 + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "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==", + "dev": true + }, + "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 + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "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 + }, + "autolinker": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/autolinker/-/autolinker-0.28.1.tgz", + "integrity": "sha1-BlK0kYgYefB3XazgzcoyM5QqTkc=", + "dev": true, + "requires": { + "gulp-header": "^1.7.1" + } + }, + "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 + }, + "aws4": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", + "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==", + "dev": true + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, + "chalk": { + "version": "1.1.3", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, - "optional": true + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "babel-jest": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.9.0.tgz", + "integrity": "sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw==", + "dev": true, + "requires": { + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/babel__core": "^7.1.0", + "babel-plugin-istanbul": "^5.1.0", + "babel-preset-jest": "^24.9.0", + "chalk": "^2.4.2", + "slash": "^2.0.0" + }, + "dependencies": { + "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, - "optional": true, "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "color-convert": "^1.9.0" } }, - "chownr": { - "version": "1.1.4", - "bundled": 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==", "dev": true, - "optional": true + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": 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": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true }, - "debug": { - "version": "3.2.6", - "bundled": true, + "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, - "optional": true, "requires": { - "ms": "^2.1.1" + "has-flag": "^3.0.0" } - }, - "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": { + } + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-istanbul": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz", + "integrity": "sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "find-up": "^3.0.0", + "istanbul-lib-instrument": "^3.3.0", + "test-exclude": "^5.2.3" + } + }, + "babel-plugin-jest-hoist": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz", + "integrity": "sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw==", + "dev": true, + "requires": { + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-preset-jest": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz", + "integrity": "sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg==", + "dev": true, + "requires": { + "@babel/plugin-syntax-object-rest-spread": "^7.0.0", + "babel-plugin-jest-hoist": "^24.9.0" + } + }, + "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": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + } + } + }, + "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": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + }, + "dependencies": { + "to-fast-properties": { "version": "1.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "fs-minipass": { - "version": "1.2.7", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.6.0" - } - }, - "fs.realpath": { + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + } + } + }, + "babylon-walk": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/babylon-walk/-/babylon-walk-1.0.2.tgz", + "integrity": "sha1-OxWl3btIKni0zpwByLoYFwLZ1s4=", + "dev": true, + "requires": { + "babel-runtime": "^6.11.6", + "babel-types": "^6.15.0", + "lodash.clone": "^4.5.0" + } + }, + "bail": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.3.tgz", + "integrity": "sha512-1X8CnjFVQ+a+KW36uBNMTU5s8+v5FzeqrP7hTG5aTb4aPreSbZJlhwPon9VKMuEVgV++JM+SQrALY3kr7eswdg==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha1-e95c7RRbbVUakNuH+DxVi060io8=", + "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" + }, + "dependencies": { + "define-property": { "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" - } - }, - "glob": { - "version": "7.1.6", - "bundled": true, - "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" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "iconv-lite": { - "version": "0.4.24", - "bundled": true, + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, - "optional": true, "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "is-descriptor": "^1.0.0" } }, - "ignore-walk": { - "version": "3.0.3", - "bundled": true, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", "dev": true, - "optional": true, "requires": { - "minimatch": "^3.0.4" + "kind-of": "^6.0.0" } }, - "inflight": { - "version": "1.0.6", - "bundled": true, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", "dev": true, - "optional": true, "requires": { - "once": "^1.3.0", - "wrappy": "1" + "kind-of": "^6.0.0" } }, - "inherits": { - "version": "2.0.4", - "bundled": true, - "dev": true, - "optional": true - }, - "ini": { - "version": "1.3.5", - "bundled": true, - "dev": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", "dev": true, - "optional": true, "requires": { - "number-is-nan": "^1.0.0" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.5", - "bundled": true, - "dev": true, - "optional": true - }, - "minipass": { - "version": "2.9.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.3.3", - "bundled": true, + "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 + } + } + }, + "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 + }, + "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": { + "tweetnacl": "^0.14.3" + } + }, + "benchmark": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/benchmark/-/benchmark-2.1.4.tgz", + "integrity": "sha1-CfPeMckWQl1JjMLuVloOvzwqVik=", + "dev": true, + "requires": { + "lodash": "^4.17.4", + "platform": "^1.3.3" + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bn.js": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.2.tgz", + "integrity": "sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA==", + "dev": true + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "boundary": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/boundary/-/boundary-1.0.1.tgz", + "integrity": "sha1-TWfcJgLAzBbdm85+v4fpSCkPWBI=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "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" + }, + "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, - "optional": true, "requires": { - "minipass": "^2.9.0" + "is-extendable": "^0.1.0" } }, - "mkdirp": { - "version": "0.5.3", - "bundled": true, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, - "optional": true, "requires": { - "minimist": "^1.2.5" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" } }, - "ms": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "needle": { - "version": "2.3.3", - "bundled": 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, - "optional": true, "requires": { - "debug": "^3.2.6", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" + "kind-of": "^3.0.2" } }, - "node-pre-gyp": { - "version": "0.14.0", - "bundled": true, - "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.4.2" - } + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "brfs": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/brfs/-/brfs-1.6.1.tgz", + "integrity": "sha512-OfZpABRQQf+Xsmju8XE9bDjs+uU4vLREGolP7bDgcpsI17QREyZ4Bl+2KLxxx1kCgA0fAIhKQBaBYh+PEcCqYQ==", + "dev": true, + "requires": { + "quote-stream": "^1.0.1", + "resolve": "^1.1.5", + "static-module": "^2.2.0", + "through2": "^2.0.0" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "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-resolve": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", + "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", + "dev": true, + "requires": { + "resolve": "1.1.7" + }, + "dependencies": { + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + } + } + }, + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha1-uqVZ7hTO1zRSIputcyZGfGH6vWA=", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "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" + } + }, + "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": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "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": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.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 + } + } + }, + "browserify-sign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.0.tgz", + "integrity": "sha512-hEZC1KEeYuoHRqhGhTy6gWrpJA3ZDjFWv0DE61643ZnOXAKJb3u7yWcrU0mMc9SwAqK1n7myPGndkp0dFG7NFA==", + "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.2", + "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 }, - "nopt": { - "version": "4.0.3", - "bundled": 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, - "optional": true, "requires": { - "abbrev": "1", - "osenv": "^0.1.4" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" } }, - "npm-bundled": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npm-normalize-package-bin": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "npm-packlist": { - "version": "1.4.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, + "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": { + "pako": "~1.0.5" + }, + "dependencies": { + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + } + } + }, + "browserslist": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.12.0.tgz", + "integrity": "sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001043", + "electron-to-chromium": "^1.3.413", + "node-releases": "^1.1.53", + "pkg-up": "^2.0.0" + } + }, + "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": { + "fast-json-stable-stringify": "2.x" + } + }, + "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": { + "node-int64": "^0.4.0" + } + }, + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-equal": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", + "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=", + "dev": true + }, + "buffer-from": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz", + "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==", + "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=", + "dev": true + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha1-Cn9GQWgxyLZi7jb+TnxZ129marI=", + "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" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", + "dev": true + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "dev": true, + "requires": { + "callsites": "^2.0.0" + }, + "dependencies": { + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + } + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "dev": true, + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001083", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001083.tgz", + "integrity": "sha512-CnYJ27awX4h7yj5glfK7r1TOI13LBytpLzEgfj0s4mY75/F8pnQcYjL+oVpmS38FB59+vU0gscQ9D8tc+lIXvA==", + "dev": true + }, + "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": { + "rsvp": "^4.8.4" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "character-entities": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.2.tgz", + "integrity": "sha512-sMoHX6/nBiy3KKfC78dnEalnpn0Az0oSNvqUWYTtYrhRI5iUIYsROU48G+E+kMFQzqXaJ8kHJZ85n7y6/PHgwQ==", + "dev": true + }, + "character-entities-legacy": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.2.tgz", + "integrity": "sha512-9NB2VbXtXYWdXzqrvAHykE/f0QJxzaKIpZ5QzNZrrgQ7Iyxr2vnfS8fCBNVW9nUEZE0lo57nxKRqnzY/dKrwlA==", + "dev": true + }, + "character-reference-invalid": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.2.tgz", + "integrity": "sha512-7I/xceXfKyUJmSAn/jw8ve/9DyOP7XxufNYLI9Px7CmsKgEUaZLUTax6nZxGQtaoiZCjpu6cHPj20xC/vqRReQ==", + "dev": true + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.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": { + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", "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" + "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" + } + } } }, - "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, + "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 + } + } + }, + "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": { + "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": "sha1-+TNprouafOAv1B+q0MqDAzGQxGM=", + "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": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, - "optional": true, "requires": { - "wrappy": "1" + "is-descriptor": "^0.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, - "dev": true, - "optional": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "rc": { - "version": "1.2.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - } - }, - "readable-stream": { - "version": "2.3.7", - "bundled": true, - "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" - } - }, - "rimraf": { - "version": "2.7.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "bundled": true, - "dev": true, - "optional": true - }, - "semver": { - "version": "5.7.1", - "bundled": true, - "dev": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-spinners": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz", + "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==", + "dev": true + }, + "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" + }, + "dependencies": { + "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 }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, + "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, - "optional": true, "requires": { - "safe-buffer": "~5.1.0" + "ansi-regex": "^4.1.0" } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, + } + } + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "dev": true + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "coa": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "dev": true, + "requires": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + }, + "dependencies": { + "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, - "optional": true, "requires": { - "ansi-regex": "^2.0.0" + "color-convert": "^1.9.0" } }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "tar": { - "version": "4.4.13", - "bundled": 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==", "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" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true }, - "wide-align": { - "version": "1.1.3", - "bundled": true, + "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, - "optional": true, "requires": { - "string-width": "^1.0.2 || 2" + "has-flag": "^3.0.0" } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "yallist": { - "version": "3.1.1", - "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==", + "code-block-writer": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-10.1.0.tgz", + "integrity": "sha512-RG9hpXtWFeUWhuUav1YuP/vGcyncW+t90yJLk9fNZs1De2OuHTHKAKThVCokt29PYq5RoJ0QSZaIZ+rvPO23hA==", "dev": true }, - "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==", + "coffee-script": { + "version": "1.12.7", + "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.12.7.tgz", + "integrity": "sha512-fLeEhqwymYat/MpTPUjSKHVYYl0ec2mOyALEMLmzr5i1isuG+6jfI2j2d5oBO3VIzgUXgBVIcOT9uH1TFxBckw==", + "dev": true + }, + "collapse-white-space": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.4.tgz", + "integrity": "sha512-YfQ1tAUZm561vpYD+5eyWN8+UsceQbSrqqlc/6zDY2gtAE+uZLSdkkovhnGpmCThsvKBFakq4EdY/FF93E8XIw==", "dev": 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==", + "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": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/color/-/color-3.1.2.tgz", + "integrity": "sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==", + "dev": true, + "requires": { + "color-convert": "^1.9.1", + "color-string": "^1.5.2" + } + }, + "color-convert": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "dev": true, + "requires": { + "color-name": "^1.1.1" + } + }, + "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-string": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", + "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", + "dev": true, + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "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": { + "delayed-stream": "~1.0.0" + } + }, + "command-exists": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", + "dev": true + }, + "commander": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", + "integrity": "sha1-9hmKqE5bg8RgVLlN3tv+1e6f8So=", + "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==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "concat-with-sourcemaps": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz", + "integrity": "sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==", + "dev": true, + "requires": { + "source-map": "^0.6.1" + } + }, + "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 + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "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" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "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 + }, + "core-js-compat": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.5.tgz", + "integrity": "sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng==", + "dev": true, + "requires": { + "browserslist": "^4.8.5", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true + } + } + }, + "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=", + "dev": true + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^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==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.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 + } + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://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": "https://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": "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" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "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" + } + }, + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", + "dev": true + }, + "css-declaration-sorter": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", + "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", + "dev": true, + "requires": { + "postcss": "^7.0.1", + "timsort": "^0.3.0" + } + }, + "css-modules-loader-core": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/css-modules-loader-core/-/css-modules-loader-core-1.1.0.tgz", + "integrity": "sha1-WQhmgpShvs0mGuCkziGwtVHyHRY=", + "dev": true, + "requires": { + "icss-replace-symbols": "1.1.0", + "postcss": "6.0.1", + "postcss-modules-extract-imports": "1.1.0", + "postcss-modules-local-by-default": "1.2.0", + "postcss-modules-scope": "1.1.0", + "postcss-modules-values": "1.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.1.tgz", + "integrity": "sha1-AA29H47vIXqjaLmiEsX8QLKo8/I=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", + "dev": true + }, + "css-selector-tokenizer": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.2.tgz", + "integrity": "sha512-yj856NGuAymN6r8bn8/Jl46pR+OC3eEvAhfGYDUe7YPtTPAYrSSw4oAniZ9Y8T5B92hjhwTBLUen0/vKPxf6pw==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "fastparse": "^1.1.2", + "regexpu-core": "^4.6.0" + } + }, + "css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "dev": true, + "requires": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + } + }, + "css-what": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.3.0.tgz", + "integrity": "sha512-pv9JPyatiPaQ6pf4OvD/dbfm0o5LviWmwxNWzblYf/1u9QZd0ihV+PMwy5jdQWQ3349kZmKEx9WXuSka2dM4cg==", + "dev": true + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "cssnano": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", + "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.7", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "cssnano-preset-default": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz", + "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==", + "dev": true, + "requires": { + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.1", + "postcss-colormin": "^4.0.3", + "postcss-convert-values": "^4.0.1", + "postcss-discard-comments": "^4.0.2", + "postcss-discard-duplicates": "^4.0.2", + "postcss-discard-empty": "^4.0.1", + "postcss-discard-overridden": "^4.0.1", + "postcss-merge-longhand": "^4.0.11", + "postcss-merge-rules": "^4.0.3", + "postcss-minify-font-values": "^4.0.2", + "postcss-minify-gradients": "^4.0.2", + "postcss-minify-params": "^4.0.2", + "postcss-minify-selectors": "^4.0.2", + "postcss-normalize-charset": "^4.0.1", + "postcss-normalize-display-values": "^4.0.2", + "postcss-normalize-positions": "^4.0.2", + "postcss-normalize-repeat-style": "^4.0.2", + "postcss-normalize-string": "^4.0.2", + "postcss-normalize-timing-functions": "^4.0.2", + "postcss-normalize-unicode": "^4.0.1", + "postcss-normalize-url": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.2", + "postcss-ordered-values": "^4.1.2", + "postcss-reduce-initial": "^4.0.3", + "postcss-reduce-transforms": "^4.0.2", + "postcss-svgo": "^4.0.2", + "postcss-unique-selectors": "^4.0.1" + } + }, + "cssnano-util-get-arguments": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", + "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", + "dev": true + }, + "cssnano-util-get-match": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", + "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", + "dev": true + }, + "cssnano-util-raw-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", + "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "cssnano-util-same-parent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", + "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", + "dev": true + }, + "csso": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.3.tgz", + "integrity": "sha512-NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ==", + "dev": true, + "requires": { + "css-tree": "1.0.0-alpha.39" + }, + "dependencies": { + "css-tree": { + "version": "1.0.0-alpha.39", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.39.tgz", + "integrity": "sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA==", + "dev": true, + "requires": { + "mdn-data": "2.0.6", + "source-map": "^0.6.1" + } + }, + "mdn-data": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.6.tgz", + "integrity": "sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA==", + "dev": true + } + } + }, + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, + "cssstyle": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz", + "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", + "dev": true, + "requires": { + "cssom": "0.3.x" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + }, + "dependencies": { + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + } + } + }, + "deasync": { + "version": "0.1.20", + "resolved": "https://registry.npmjs.org/deasync/-/deasync-0.1.20.tgz", + "integrity": "sha512-E1GI7jMI57hL30OX6Ht/hfQU8DO4AuB9m72WFm4c38GNbUD4Q03//XZaOIHZiY+H1xUaomcot5yk2q/qIZQkGQ==", + "dev": true, + "requires": { + "bindings": "^1.5.0", + "node-addon-api": "^1.7.1" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "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=", + "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-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 + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "requires": { + "clone": "^1.0.2" + }, + "dependencies": { + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "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": "sha1-1Flono1lS6d+AqgX+HENcCyxbp0=", + "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": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "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": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "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": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "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 + } + } + }, + "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 + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "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" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-newline": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", + "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", + "dev": true + }, + "diacritics-map": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/diacritics-map/-/diacritics-map-0.1.0.tgz", + "integrity": "sha1-bfwP+dAQAKLt8oZTccrDFulJd68=", + "dev": true + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha1-gAwN0eCov7yVg1wgKtIg/jF+WhI=", + "dev": true + }, + "diff-sequences": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz", + "integrity": "sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://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 + } + } + }, + "docs-ts": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/docs-ts/-/docs-ts-0.5.1.tgz", + "integrity": "sha512-zdBt4P6X7h577/Vku0YHAw/RR1+zpKklK+DOzed1HJltwAAciQG14qy18TzcMbVUFxrnT9OO4Y1K/lQLdX1i/Q==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "doctrine": "^3.0.0", + "fp-ts": "^2.6.2", + "fs-extra": "^7.0.1", + "glob": "^7.1.3", + "markdown-toc": "^1.2.0", + "rimraf": "^2.6.3", + "ts-morph": "^5.0.0", + "ts-node": "^8.0.2" + }, + "dependencies": { + "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": { + "color-convert": "^1.9.0" + } + }, + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "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" + } + } + } + }, + "doctoc": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/doctoc/-/doctoc-1.4.0.tgz", + "integrity": "sha512-8IAq3KdMkxhXCUF+xdZxdJxwuz8N2j25sMgqiu4U4JWluN9tRKMlAalxGASszQjlZaBprdD2YfXpL3VPWUD4eg==", + "dev": true, + "requires": { + "@textlint/markdown-to-ast": "~6.0.9", + "anchor-markdown-header": "^0.5.5", + "htmlparser2": "~3.9.2", + "minimist": "~1.2.0", + "underscore": "~1.8.3", + "update-section": "^0.3.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 + } + } + }, + "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" + } + }, + "dom-serializer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", + "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", + "dev": true, + "requires": { + "domelementtype": "^1.3.0", + "entities": "^1.1.1" + } + }, + "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 + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "dev": true, + "requires": { + "webidl-conversions": "^4.0.2" + } + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "dot-prop": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz", + "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==", + "dev": true, + "requires": { + "is-obj": "^2.0.0" + } + }, + "dotenv": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-5.0.1.tgz", + "integrity": "sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow==", + "dev": true + }, + "dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "dev": true + }, + "dtslint": { + "version": "github:gcanti/dtslint#de9181e0f1069b16ea15da87f74d88ed9bc221b7", + "from": "github:gcanti/dtslint", + "dev": true, + "requires": { + "fs-extra": "^6.0.1", + "parsimmon": "^1.12.0", + "strip-json-comments": "^2.0.1", + "tslint": "^5.12.0", + "typescript": "^4.0.0-dev.20200512" + }, + "dependencies": { + "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": { + "color-convert": "^1.9.0" + } + }, + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "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" + } + }, + "tslint": { + "version": "5.20.1", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.20.1.tgz", + "integrity": "sha512-EcMxhzCFt8k+/UP5r8waCf/lzmeSyVlqxqMEDQE7rWYiQky8KpIBz1JAoYXfROHrPZ1XXd43q8yQnULOLiBRQg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^4.0.1", + "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" + } + }, + "tsutils": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", + "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "typescript": { + "version": "4.0.0-dev.20200512", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.0-dev.20200512.tgz", + "integrity": "sha512-ZsVvhdxpQaA6KpjlT8wNNtweORzNsMtwgCo8viKWQmOvaU+BlMsd3MjD2LONQjFSiETCaw4uq0nNdyfKrCjjIw==", + "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" + } + }, + "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" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.473", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.473.tgz", + "integrity": "sha512-smevlzzMNz3vMz6OLeeCq5HRWEj2AcgccNPYnAx4Usx0IOciq9DU36RJcICcS09hXoY7t7deRfVYKD14IrGb9A==", + "dev": true + }, + "elliptic": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz", + "integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==", + "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 + } + } + }, + "emoji-regex": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-6.1.3.tgz", + "integrity": "sha1-7HmjlpsC0uzytyJUJ5v5m8eoOTI=", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "envinfo": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.5.1.tgz", + "integrity": "sha512-hQBkDf2iO4Nv0CNHpCuSBeaSrveU6nThVxFGTrq/eDlV716UQk09zChaJae4mZRsos1x4YLY2TaH3LHUae3ZmQ==", + "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.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", + "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", + "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" + } + }, + "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" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "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.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.1.tgz", + "integrity": "sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ==", + "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": { + "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 + } + } + }, + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "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.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "events": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.1.0.tgz", + "integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==", + "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" + } + }, + "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-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "^2.1.0" + } + }, + "expect": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-24.9.0.tgz", + "integrity": "sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "ansi-styles": "^3.2.0", + "jest-get-type": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-regex-util": "^24.9.0" + } + }, + "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": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=", + "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" + } + }, + "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 + } + } + }, + "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.2.4", + "resolved": "https://registry.npmjs.org/falafel/-/falafel-2.2.4.tgz", + "integrity": "sha512-0HXjo8XASWRmsS0X1EkhwEMZaD3Qvp7FfURwjLKjG1ghfRm/MGZl2r4cWUTv41KdNghTw4OUMmVtdGQp3+H+uQ==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "foreach": "^2.0.5", + "isarray": "^2.0.1", + "object-keys": "^1.0.6" + }, + "dependencies": { + "acorn": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.3.1.tgz", + "integrity": "sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA==", + "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 + } + } + }, + "fast-check": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/fast-check/-/fast-check-1.23.0.tgz", + "integrity": "sha512-MRxcYG4YHTzP8wbjPsl6lZeUpY9sBuYsp6/w8lWmSvgS0wBrhMSErVnHmt5zi9sDWROCd+H7bk2jpr6wzToM6w==", + "dev": true, + "requires": { + "pure-rand": "^2.0.0", + "tslib": "^1.10.0" + }, + "dependencies": { + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==", + "dev": true + } + } + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "dev": true + }, + "fast-glob": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.2.tgz", + "integrity": "sha512-UDV82o4uQyljznxwMxyVRJgZZt3O5wENYojjzbaGEGZgeOxkLFf+V4cnUD+krzb2F72E18RhamkMZ7AdeggF7A==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2", + "picomatch": "^2.2.1" + }, + "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" + } + }, + "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.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "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 + }, + "fastparse": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", + "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", + "dev": true + }, + "fastq": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.8.0.tgz", + "integrity": "sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "fault": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.2.tgz", + "integrity": "sha512-o2eo/X2syzzERAtN5LcGbiVQ0WwZSlN3qLtadwAz3X8Bu+XWD16dja/KMsjZLiQr+BLGPDnHGkc4yUJf1Xpkpw==", + "dev": true, + "requires": { + "format": "^0.2.2" + } + }, + "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" + } + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true + }, + "filesize": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", + "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==", + "dev": true + }, + "fill-range": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", + "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", + "dev": true, + "requires": { + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^3.0.0", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" + } + }, + "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" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "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" + } + }, + "format": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", + "integrity": "sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs=", + "dev": true + }, + "fp-ts": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-2.6.2.tgz", + "integrity": "sha512-RUm0iNcD7eMFZo6W1K10kqi0DyYX06lbbjyNgKwEWg1kPZw91ZXlkEx/9cII1x/jY4fHzh14+Hquk5sJnXBzQA==", + "dev": true + }, + "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" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "fs-extra": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz", + "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "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.12", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.12.tgz", + "integrity": "sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1", + "node-pre-gyp": "*" + }, + "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, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.4", + "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": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "3.2.6", + "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.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "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" + } + }, + "glob": { + "version": "7.1.6", + "bundled": true, + "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" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "bundled": true, + "dev": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true + }, + "minipass": { + "version": "2.9.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "mkdirp": { + "version": "0.5.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "ms": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.3.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.14.0", + "bundled": true, + "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.4.2" + } + }, + "nopt": { + "version": "4.0.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "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", + "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, + "dev": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "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, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "readable-stream": { + "version": "2.3.7", + "bundled": true, + "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" + } + }, + "rimraf": { + "version": "2.7.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.1", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.13", + "bundled": true, + "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" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "yallist": { + "version": "3.1.1", + "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 + }, + "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-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 + }, + "get-port": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=", + "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" + } + }, + "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.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" + } + }, + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", + "dev": true + }, + "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.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", + "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", + "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" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "grapheme-breaker": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/grapheme-breaker/-/grapheme-breaker-0.3.2.tgz", + "integrity": "sha1-W55reMODJFLSuiuxy4MPlidkEKw=", + "dev": true, + "requires": { + "brfs": "^1.2.0", + "unicode-trie": "^0.3.1" + } + }, + "gray-matter": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-2.1.1.tgz", + "integrity": "sha1-MELZrewqHe1qdwep7SOA+KF6Qw4=", + "dev": true, + "requires": { + "ansi-red": "^0.1.1", + "coffee-script": "^1.12.4", + "extend-shallow": "^2.0.1", + "js-yaml": "^3.8.1", + "toml": "^2.3.2" + }, + "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" + } + } + } + }, + "growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha1-8nNdwig2dPpnR4sQGBBZNVw2nl4=", + "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 + }, + "gulp-header": { + "version": "1.8.12", + "resolved": "https://registry.npmjs.org/gulp-header/-/gulp-header-1.8.12.tgz", + "integrity": "sha512-lh9HLdb53sC7XIZOYzTXM4lFuXElv3EVkSDhsd7DoJBj7hm+Ni7D3qYbb+Rr8DuM8nRanBvkVO9d7askreXGnQ==", + "dev": true, + "requires": { + "concat-with-sourcemaps": "*", + "lodash.template": "^4.4.0", + "through2": "^2.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.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, + "requires": { + "ajv": "^6.5.5", + "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-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "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 + }, + "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" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "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": { + "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" + } + } + } + }, + "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.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.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true + }, + "hex-color-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", + "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", + "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" + } + }, + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "dev": true + }, + "hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", + "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", + "dev": true + }, + "hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", + "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", + "dev": true + }, + "html-comment-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", + "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==", + "dev": true + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "dev": true, + "requires": { + "whatwg-encoding": "^1.0.1" + } + }, + "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 + }, + "html-tags": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-1.2.0.tgz", + "integrity": "sha1-x43mW1Zjqll5id0rerSSANfk25g=", + "dev": true + }, + "htmlnano": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/htmlnano/-/htmlnano-0.2.5.tgz", + "integrity": "sha512-X1iPSwXG/iF9bVs+/obt2n6F64uH0ETkA8zp7qFDmLW9/+A6ueHGeb/+qD67T21qUY22owZPMdawljN50ajkqA==", + "dev": true, + "requires": { + "cssnano": "^4.1.10", + "normalize-html-whitespace": "^1.0.0", + "posthtml": "^0.12.0", + "posthtml-render": "^1.1.5", + "purgecss": "^1.4.0", + "svgo": "^1.3.2", + "terser": "^4.3.9", + "uncss": "^0.17.2" + }, + "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 + }, + "posthtml": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.12.3.tgz", + "integrity": "sha512-Fbpi95+JJyR0tqU7pUy1zTSQFjAsluuwB9pJ1h0jtnGk7n/O2TBtP5nDl9rV0JVACjQ1Lm5wSp4ppChr8u3MhA==", + "dev": true, + "requires": { + "posthtml-parser": "^0.4.2", + "posthtml-render": "^1.2.2" + } + }, + "terser": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.7.0.tgz", + "integrity": "sha512-Lfb0RiZcjRDXCC3OSHJpEkxJ9Qeqs6mp2v4jf2MHfy8vGERmVDuvjXdd/EnP5Deme5F2yBRBymKmKHCBg2echw==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + } + } + } + }, + "htmlparser2": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", + "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", + "dev": true, + "requires": { + "domelementtype": "^1.3.0", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^2.0.2" + } + }, + "http-errors": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", + "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + } + } + }, + "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 + }, + "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" + } + }, + "icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", + "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.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "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 + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "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-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", + "dev": true + }, + "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" + } + }, + "is-alphabetical": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.2.tgz", + "integrity": "sha512-V0xN4BYezDHcBSKb1QHUFMlR4as/XEuCZBzMJUU4n7+Cbt33SmUnSol+pnXFvLxSHNq2CemUXNdaXV6Flg7+xg==", + "dev": true + }, + "is-alphanumerical": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.2.tgz", + "integrity": "sha512-pyfU/0kHdISIgslFfZN9nfY1Gk3MquQgUm1mJTjdkEPpkAKNWuBTSqFwewOpR7N351VkErCiyV71zX7mlQQqsg==", + "dev": true, + "requires": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + } + }, + "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": "sha1-76ouqdqg16suoTqXsritUf776L4=", + "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-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-color-stop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", + "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", + "dev": true, + "requires": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.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" + } + }, + "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-decimal": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.2.tgz", + "integrity": "sha512-TRzl7mOCchnhchN+f3ICUCzYvL9ul7R+TYOsZ8xia++knyZAJfv/uA1FvQXsAnYIl1T3B2X5E/J7Wb1QXiIBXg==", + "dev": true + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=", + "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": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0=", + "dev": true + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "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": "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-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-hexadecimal": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.2.tgz", + "integrity": "sha512-but/G3sapV3MNyqiDBLrOi4x8uCIw0RY3o/Vb5GT0sMFHrVV7731wFSVy41T5FO1og7G0gXLJh0MkgPRouko/A==", + "dev": true + }, + "is-html": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-html/-/is-html-1.1.0.tgz", + "integrity": "sha1-4E8cGNOUhRETlvmgJz6rUa8hhGQ=", + "dev": true, + "requires": { + "html-tags": "^1.0.0" + } + }, + "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 }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", "dev": true, "requires": { - "pump": "^3.0.0" + "kind-of": "^3.0.2" } }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", "dev": true }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "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": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=", "dev": true, "requires": { - "assert-plus": "^1.0.0" + "isobject": "^3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } } }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "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": { - "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": "^1.0.3" } }, - "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==", + "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-glob": "^4.0.1" + "is-unc-path": "^1.0.0" } }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", "dev": true }, - "globby": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", - "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-svg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", + "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", "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" + "html-comment-regex": "^1.1.0" } }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "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" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, - "gray-matter": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-2.1.1.tgz", - "integrity": "sha1-MELZrewqHe1qdwep7SOA+KF6Qw4=", + "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": { - "ansi-red": "^0.1.1", - "coffee-script": "^1.12.4", - "extend-shallow": "^2.0.1", - "js-yaml": "^3.8.1", - "toml": "^2.3.2" - }, - "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" - } - } + "unc-path-regex": "^0.1.2" } }, - "growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha1-8nNdwig2dPpnR4sQGBBZNVw2nl4=", + "is-url": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", + "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", "dev": true }, - "growly": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", - "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", + "is-whitespace-character": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.2.tgz", + "integrity": "sha512-SzM+T5GKUCtLhlHFKt2SDAX2RFzfS6joT91F2/WSi9LxgFdsnhfPK/UIA+JhRR2xuyLdrCys2PiFDrtn1fU5hQ==", "dev": true }, - "gulp-header": { - "version": "1.8.12", - "resolved": "https://registry.npmjs.org/gulp-header/-/gulp-header-1.8.12.tgz", - "integrity": "sha512-lh9HLdb53sC7XIZOYzTXM4lFuXElv3EVkSDhsd7DoJBj7hm+Ni7D3qYbb+Rr8DuM8nRanBvkVO9d7askreXGnQ==", - "dev": true, - "requires": { - "concat-with-sourcemaps": "*", - "lodash.template": "^4.4.0", - "through2": "^2.0.0" - } + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha1-0YUOuXkezRjmGCzhKjDzlmNLsZ0=", + "dev": true }, - "har-schema": { + "is-word-character": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.2.tgz", + "integrity": "sha512-T3FlsX8rCHAH8e7RE7PfOPZVFQlcV3XRF9eOOBQ1uf70OxO7CjjSOjeImMPCADBdYWcStAbVbYvJ1m2D3tb+EA==", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "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/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, - "har-validator": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", "dev": true, "requires": { - "ajv": "^6.5.5", - "har-schema": "^2.0.0" + "isarray": "1.0.0" } }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "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": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", + "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", "dev": true, "requires": { - "function-bind": "^1.1.1" + "@babel/generator": "^7.4.0", + "@babel/parser": "^7.4.3", + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.3", + "@babel/types": "^7.4.0", + "istanbul-lib-coverage": "^2.0.5", + "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 + } } }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "istanbul-lib-report": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", + "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "supports-color": "^6.1.0" + }, + "dependencies": { + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, - "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 - }, - "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 - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "istanbul-lib-source-maps": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", + "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", "dev": true, "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "rimraf": "^2.6.3", + "source-map": "^0.6.1" }, "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "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 + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } } } }, - "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=", + "istanbul-reports": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.7.tgz", + "integrity": "sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==", "dev": true, "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" + "html-escaper": "^2.0.0" + } + }, + "jest": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-24.8.0.tgz", + "integrity": "sha512-o0HM90RKFRNWmAWvlyV8i5jGZ97pFwkeVoGvPW1EtLTgJc2+jcuqcbbqcSZLE/3f2S5pt0y2ZBETuhpWNl1Reg==", + "dev": true, + "requires": { + "import-local": "^2.0.0", + "jest-cli": "^24.8.0" }, "dependencies": { - "is-number": { + "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 + }, + "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": { + "color-convert": "^1.9.0" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "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 + }, + "has-flag": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "jest-cli": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.9.0.tgz", + "integrity": "sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg==", "dev": true, "requires": { - "kind-of": "^3.0.2" + "@jest/core": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "import-local": "^2.0.0", + "is-ci": "^2.0.0", + "jest-config": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "prompts": "^2.0.1", + "realpath-native": "^1.1.0", + "yargs": "^13.3.0" }, "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "@jest/core": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.9.0.tgz", + "integrity": "sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/reporters": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "graceful-fs": "^4.1.15", + "jest-changed-files": "^24.9.0", + "jest-config": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-resolve-dependencies": "^24.9.0", + "jest-runner": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "jest-watcher": "^24.9.0", + "micromatch": "^3.1.10", + "p-each-series": "^1.0.0", + "realpath-native": "^1.1.0", + "rimraf": "^2.5.4", + "slash": "^2.0.0", + "strip-ansi": "^5.0.0" + } + }, + "@jest/test-result": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz", + "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==", + "dev": true, + "requires": { + "@jest/console": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/istanbul-lib-coverage": "^2.0.0" + } + }, + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + } + }, + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "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" + } + }, + "jest-config": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.9.0.tgz", + "integrity": "sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^24.9.0", + "@jest/types": "^24.9.0", + "babel-jest": "^24.9.0", + "chalk": "^2.0.1", + "glob": "^7.1.1", + "jest-environment-jsdom": "^24.9.0", + "jest-environment-node": "^24.9.0", + "jest-get-type": "^24.9.0", + "jest-jasmine2": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "micromatch": "^3.1.10", + "pretty-format": "^24.9.0", + "realpath-native": "^1.1.0" + } + }, + "jest-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz", + "integrity": "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==", + "dev": true, + "requires": { + "@jest/console": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/source-map": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "callsites": "^3.0.0", + "chalk": "^2.0.1", + "graceful-fs": "^4.1.15", + "is-ci": "^2.0.0", + "mkdirp": "^0.5.1", + "slash": "^2.0.0", + "source-map": "^0.6.0" + } + }, + "jest-validate": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.9.0.tgz", + "integrity": "sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "@jest/types": "^24.9.0", + "camelcase": "^5.3.1", + "chalk": "^2.0.1", + "jest-get-type": "^24.9.0", + "leven": "^3.1.0", + "pretty-format": "^24.9.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" + } + }, + "realpath-native": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz", + "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==", + "dev": true, + "requires": { + "util.promisify": "^1.0.0" + } + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "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.2" } } } }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, + "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": { - "is-buffer": "^1.1.5" + "ansi-regex": "^4.1.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" } } } }, - "he": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", - "dev": true - }, - "hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", - "dev": true - }, - "html-encoding-sniffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", - "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", - "dev": true, - "requires": { - "whatwg-encoding": "^1.0.1" - } - }, - "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 - }, - "htmlparser2": { - "version": "3.9.2", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", - "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", - "dev": true, - "requires": { - "domelementtype": "^1.3.0", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^2.0.2" - } - }, - "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" - } - }, - "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" - } - }, - "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true - }, - "import-local": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", - "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", - "dev": true, - "requires": { - "pkg-dir": "^3.0.0", - "resolve-cwd": "^2.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "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 - }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, - "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=", + "jest-changed-files": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.9.0.tgz", + "integrity": "sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg==", "dev": true, "requires": { - "kind-of": "^3.0.2" + "@jest/types": "^24.9.0", + "execa": "^1.0.0", + "throat": "^4.0.0" } }, - "is-alphabetical": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.2.tgz", - "integrity": "sha512-V0xN4BYezDHcBSKb1QHUFMlR4as/XEuCZBzMJUU4n7+Cbt33SmUnSol+pnXFvLxSHNq2CemUXNdaXV6Flg7+xg==", - "dev": true - }, - "is-alphanumerical": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.2.tgz", - "integrity": "sha512-pyfU/0kHdISIgslFfZN9nfY1Gk3MquQgUm1mJTjdkEPpkAKNWuBTSqFwewOpR7N351VkErCiyV71zX7mlQQqsg==", + "jest-config": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.9.0.tgz", + "integrity": "sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ==", "dev": true, "requires": { - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0" + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^24.9.0", + "@jest/types": "^24.9.0", + "babel-jest": "^24.9.0", + "chalk": "^2.0.1", + "glob": "^7.1.1", + "jest-environment-jsdom": "^24.9.0", + "jest-environment-node": "^24.9.0", + "jest-get-type": "^24.9.0", + "jest-jasmine2": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "micromatch": "^3.1.10", + "pretty-format": "^24.9.0", + "realpath-native": "^1.1.0" + }, + "dependencies": { + "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": { + "color-convert": "^1.9.0" + } + }, + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "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-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=", - "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-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "jest-diff": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz", + "integrity": "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==", "dev": true, "requires": { - "ci-info": "^2.0.0" + "chalk": "^2.0.1", + "diff-sequences": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + }, + "dependencies": { + "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": { + "color-convert": "^1.9.0" + } + }, + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "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-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "jest-docblock": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-24.9.0.tgz", + "integrity": "sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA==", "dev": true, "requires": { - "kind-of": "^3.0.2" + "detect-newline": "^2.1.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-decimal": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.2.tgz", - "integrity": "sha512-TRzl7mOCchnhchN+f3ICUCzYvL9ul7R+TYOsZ8xia++knyZAJfv/uA1FvQXsAnYIl1T3B2X5E/J7Wb1QXiIBXg==", - "dev": true - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=", + "jest-each": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.9.0.tgz", + "integrity": "sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog==", "dev": true, "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "jest-get-type": "^24.9.0", + "jest-util": "^24.9.0", + "pretty-format": "^24.9.0" }, "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0=", + "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": { + "color-convert": "^1.9.0" + } + }, + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true + }, + "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-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": "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-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==", + "jest-environment-jsdom": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz", + "integrity": "sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA==", "dev": true, "requires": { - "is-extglob": "^2.1.1" + "@jest/environment": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-util": "^24.9.0", + "jsdom": "^11.5.1" } }, - "is-hexadecimal": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.2.tgz", - "integrity": "sha512-but/G3sapV3MNyqiDBLrOi4x8uCIw0RY3o/Vb5GT0sMFHrVV7731wFSVy41T5FO1og7G0gXLJh0MkgPRouko/A==", - "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": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "jest-environment-node": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.9.0.tgz", + "integrity": "sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA==", "dev": true, "requires": { - "kind-of": "^3.0.2" + "@jest/environment": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-util": "^24.9.0" } }, - "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=", + "jest-get-type": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", + "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==", "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": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=", + "jest-haste-map": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz", + "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==", "dev": true, "requires": { - "isobject": "^3.0.1" + "@jest/types": "^24.9.0", + "anymatch": "^2.0.0", + "fb-watchman": "^2.0.0", + "fsevents": "^1.2.7", + "graceful-fs": "^4.1.15", + "invariant": "^2.2.4", + "jest-serializer": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.9.0", + "micromatch": "^3.1.10", + "sane": "^4.0.3", + "walker": "^1.0.7" }, "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "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 } } }, - "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "jest-jasmine2": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz", + "integrity": "sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw==", "dev": true, "requires": { - "has": "^1.0.3" + "@babel/traverse": "^7.1.0", + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "co": "^4.6.0", + "expect": "^24.9.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "pretty-format": "^24.9.0", + "throat": "^4.0.0" + }, + "dependencies": { + "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": { + "color-convert": "^1.9.0" + } + }, + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "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-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==", + "jest-leak-detector": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz", + "integrity": "sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA==", "dev": true, "requires": { - "is-unc-path": "^1.0.0" + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" } }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "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==", + "jest-matcher-utils": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz", + "integrity": "sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA==", "dev": true, "requires": { - "has-symbols": "^1.0.1" + "chalk": "^2.0.1", + "jest-diff": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + }, + "dependencies": { + "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": { + "color-convert": "^1.9.0" + } + }, + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "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-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==", + "jest-message-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz", + "integrity": "sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==", "dev": true, "requires": { - "unc-path-regex": "^0.1.2" + "@babel/code-frame": "^7.0.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/stack-utils": "^1.0.1", + "chalk": "^2.0.1", + "micromatch": "^3.1.10", + "slash": "^2.0.0", + "stack-utils": "^1.0.1" + }, + "dependencies": { + "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": { + "color-convert": "^1.9.0" + } + }, + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, + "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-whitespace-character": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.2.tgz", - "integrity": "sha512-SzM+T5GKUCtLhlHFKt2SDAX2RFzfS6joT91F2/WSi9LxgFdsnhfPK/UIA+JhRR2xuyLdrCys2PiFDrtn1fU5hQ==", - "dev": true - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha1-0YUOuXkezRjmGCzhKjDzlmNLsZ0=", - "dev": true - }, - "is-word-character": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.2.tgz", - "integrity": "sha512-T3FlsX8rCHAH8e7RE7PfOPZVFQlcV3XRF9eOOBQ1uf70OxO7CjjSOjeImMPCADBdYWcStAbVbYvJ1m2D3tb+EA==", - "dev": true - }, - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "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": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "jest-mock": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz", + "integrity": "sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==", "dev": true, "requires": { - "isarray": "1.0.0" + "@jest/types": "^24.9.0" } }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "jest-pnp-resolver": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz", + "integrity": "sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ==", "dev": true }, - "istanbul-lib-coverage": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", - "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "jest-regex-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.9.0.tgz", + "integrity": "sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA==", "dev": true }, - "istanbul-lib-instrument": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", - "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", + "jest-resolve": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.9.0.tgz", + "integrity": "sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ==", "dev": true, "requires": { - "@babel/generator": "^7.4.0", - "@babel/parser": "^7.4.3", - "@babel/template": "^7.4.0", - "@babel/traverse": "^7.4.3", - "@babel/types": "^7.4.0", - "istanbul-lib-coverage": "^2.0.5", - "semver": "^6.0.0" + "@jest/types": "^24.9.0", + "browser-resolve": "^1.11.3", + "chalk": "^2.0.1", + "jest-pnp-resolver": "^1.2.1", + "realpath-native": "^1.1.0" }, "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "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": { + "color-convert": "^1.9.0" + } + }, + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true + }, + "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" + } } } }, - "istanbul-lib-report": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", - "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", + "jest-resolve-dependencies": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz", + "integrity": "sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g==", "dev": true, "requires": { - "istanbul-lib-coverage": "^2.0.5", - "make-dir": "^2.1.0", - "supports-color": "^6.1.0" + "@jest/types": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-snapshot": "^24.9.0" + } + }, + "jest-runner": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.9.0.tgz", + "integrity": "sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.4.2", + "exit": "^0.1.2", + "graceful-fs": "^4.1.15", + "jest-config": "^24.9.0", + "jest-docblock": "^24.3.0", + "jest-haste-map": "^24.9.0", + "jest-jasmine2": "^24.9.0", + "jest-leak-detector": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-resolve": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.6.0", + "source-map-support": "^0.5.6", + "throat": "^4.0.0" }, "dependencies": { + "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": { + "color-convert": "^1.9.0" + } + }, + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "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 + }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -4041,9 +9149,9 @@ "dev": true }, "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "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" @@ -4051,70 +9159,113 @@ } } }, - "istanbul-lib-source-maps": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", - "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", + "jest-runtime": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.9.0.tgz", + "integrity": "sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw==", "dev": true, "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^2.0.5", - "make-dir": "^2.1.0", - "rimraf": "^2.6.3", - "source-map": "^0.6.1" + "@jest/console": "^24.7.1", + "@jest/environment": "^24.9.0", + "@jest/source-map": "^24.3.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/yargs": "^13.0.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.1.15", + "jest-config": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "strip-bom": "^3.0.0", + "yargs": "^13.3.0" }, "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "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": { - "ms": "^2.1.1" + "color-convert": "^1.9.0" } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "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 }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, + "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": { - "glob": "^7.1.3" + "has-flag": "^3.0.0" } } } }, - "istanbul-reports": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.7.tgz", - "integrity": "sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==", - "dev": true, - "requires": { - "html-escaper": "^2.0.0" - } + "jest-serializer": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz", + "integrity": "sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==", + "dev": true }, - "jest": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-24.8.0.tgz", - "integrity": "sha512-o0HM90RKFRNWmAWvlyV8i5jGZ97pFwkeVoGvPW1EtLTgJc2+jcuqcbbqcSZLE/3f2S5pt0y2ZBETuhpWNl1Reg==", + "jest-snapshot": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.9.0.tgz", + "integrity": "sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew==", "dev": true, "requires": { - "import-local": "^2.0.0", - "jest-cli": "^24.8.0" + "@babel/types": "^7.0.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "expect": "^24.9.0", + "jest-diff": "^24.9.0", + "jest-get-type": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-resolve": "^24.9.0", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^24.9.0", + "semver": "^6.2.0" }, "dependencies": { - "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 - }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -4124,17 +9275,16 @@ "color-convert": "^1.9.0" } }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "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 + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } }, "has-flag": { "version": "3.0.0", @@ -4142,224 +9292,12 @@ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, - "jest-cli": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.9.0.tgz", - "integrity": "sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg==", - "dev": true, - "requires": { - "@jest/core": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "import-local": "^2.0.0", - "is-ci": "^2.0.0", - "jest-config": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "prompts": "^2.0.1", - "realpath-native": "^1.1.0", - "yargs": "^13.3.0" - }, - "dependencies": { - "@jest/core": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.9.0.tgz", - "integrity": "sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A==", - "dev": true, - "requires": { - "@jest/console": "^24.7.1", - "@jest/reporters": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "graceful-fs": "^4.1.15", - "jest-changed-files": "^24.9.0", - "jest-config": "^24.9.0", - "jest-haste-map": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-resolve": "^24.9.0", - "jest-resolve-dependencies": "^24.9.0", - "jest-runner": "^24.9.0", - "jest-runtime": "^24.9.0", - "jest-snapshot": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "jest-watcher": "^24.9.0", - "micromatch": "^3.1.10", - "p-each-series": "^1.0.0", - "realpath-native": "^1.1.0", - "rimraf": "^2.5.4", - "slash": "^2.0.0", - "strip-ansi": "^5.0.0" - } - }, - "@jest/test-result": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz", - "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==", - "dev": true, - "requires": { - "@jest/console": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/istanbul-lib-coverage": "^2.0.0" - } - }, - "@jest/types": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", - "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - } - }, - "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": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", - "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" - } - }, - "jest-config": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.9.0.tgz", - "integrity": "sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ==", - "dev": true, - "requires": { - "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^24.9.0", - "@jest/types": "^24.9.0", - "babel-jest": "^24.9.0", - "chalk": "^2.0.1", - "glob": "^7.1.1", - "jest-environment-jsdom": "^24.9.0", - "jest-environment-node": "^24.9.0", - "jest-get-type": "^24.9.0", - "jest-jasmine2": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-resolve": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "micromatch": "^3.1.10", - "pretty-format": "^24.9.0", - "realpath-native": "^1.1.0" - } - }, - "jest-util": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz", - "integrity": "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==", - "dev": true, - "requires": { - "@jest/console": "^24.9.0", - "@jest/fake-timers": "^24.9.0", - "@jest/source-map": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "callsites": "^3.0.0", - "chalk": "^2.0.1", - "graceful-fs": "^4.1.15", - "is-ci": "^2.0.0", - "mkdirp": "^0.5.1", - "slash": "^2.0.0", - "source-map": "^0.6.0" - } - }, - "jest-validate": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.9.0.tgz", - "integrity": "sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==", - "dev": true, - "requires": { - "@jest/types": "^24.9.0", - "camelcase": "^5.3.1", - "chalk": "^2.0.1", - "jest-get-type": "^24.9.0", - "leven": "^3.1.0", - "pretty-format": "^24.9.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" - } - }, - "realpath-native": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz", - "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==", - "dev": true, - "requires": { - "util.promisify": "^1.0.0" - } - }, - "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "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.2" - } - } - } - }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true }, - "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" - } - }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -4371,40 +9309,24 @@ } } }, - "jest-changed-files": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.9.0.tgz", - "integrity": "sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg==", - "dev": true, - "requires": { - "@jest/types": "^24.9.0", - "execa": "^1.0.0", - "throat": "^4.0.0" - } - }, - "jest-config": { + "jest-util": { "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.9.0.tgz", - "integrity": "sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ==", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz", + "integrity": "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==", "dev": true, "requires": { - "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^24.9.0", + "@jest/console": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/source-map": "^24.9.0", + "@jest/test-result": "^24.9.0", "@jest/types": "^24.9.0", - "babel-jest": "^24.9.0", + "callsites": "^3.0.0", "chalk": "^2.0.1", - "glob": "^7.1.1", - "jest-environment-jsdom": "^24.9.0", - "jest-environment-node": "^24.9.0", - "jest-get-type": "^24.9.0", - "jest-jasmine2": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-resolve": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "micromatch": "^3.1.10", - "pretty-format": "^24.9.0", - "realpath-native": "^1.1.0" + "graceful-fs": "^4.1.15", + "is-ci": "^2.0.0", + "mkdirp": "^0.5.1", + "slash": "^2.0.0", + "source-map": "^0.6.0" }, "dependencies": { "ansi-styles": { @@ -4427,12 +9349,24 @@ "supports-color": "^5.3.0" } }, + "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 + }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -4444,15 +9378,17 @@ } } }, - "jest-diff": { + "jest-validate": { "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz", - "integrity": "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.9.0.tgz", + "integrity": "sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==", "dev": true, "requires": { + "@jest/types": "^24.9.0", + "camelcase": "^5.3.1", "chalk": "^2.0.1", - "diff-sequences": "^24.9.0", "jest-get-type": "^24.9.0", + "leven": "^3.1.0", "pretty-format": "^24.9.0" }, "dependencies": { @@ -4465,6 +9401,12 @@ "color-convert": "^1.9.0" } }, + "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": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -4493,26 +9435,19 @@ } } }, - "jest-docblock": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-24.9.0.tgz", - "integrity": "sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA==", - "dev": true, - "requires": { - "detect-newline": "^2.1.0" - } - }, - "jest-each": { + "jest-watcher": { "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.9.0.tgz", - "integrity": "sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog==", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.9.0.tgz", + "integrity": "sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw==", "dev": true, "requires": { + "@jest/test-result": "^24.9.0", "@jest/types": "^24.9.0", + "@types/yargs": "^13.0.0", + "ansi-escapes": "^3.0.0", "chalk": "^2.0.1", - "jest-get-type": "^24.9.0", "jest-util": "^24.9.0", - "pretty-format": "^24.9.0" + "string-length": "^2.0.0" }, "dependencies": { "ansi-styles": { @@ -4552,201 +9487,319 @@ } } }, - "jest-environment-jsdom": { + "jest-worker": { "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz", - "integrity": "sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA==", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", + "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "dev": true, + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^6.1.0" + }, + "dependencies": { + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "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" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "jsdom": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", + "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "acorn": "^5.5.3", + "acorn-globals": "^4.1.0", + "array-equal": "^1.0.0", + "cssom": ">= 0.3.2 < 0.4.0", + "cssstyle": "^1.0.0", + "data-urls": "^1.0.0", + "domexception": "^1.0.1", + "escodegen": "^1.9.1", + "html-encoding-sniffer": "^1.0.2", + "left-pad": "^1.3.0", + "nwsapi": "^2.0.7", + "parse5": "4.0.0", + "pn": "^1.1.0", + "request": "^2.87.0", + "request-promise-native": "^1.0.5", + "sax": "^1.2.4", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.3.4", + "w3c-hr-time": "^1.0.1", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.3", + "whatwg-mimetype": "^2.1.0", + "whatwg-url": "^6.4.1", + "ws": "^5.2.0", + "xml-name-validator": "^3.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-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "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 + }, + "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.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", + "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", + "dev": true, + "requires": { + "minimist": "^1.2.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 + } + } + }, + "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" + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "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": { - "@jest/environment": "^24.9.0", - "@jest/fake-timers": "^24.9.0", - "@jest/types": "^24.9.0", - "jest-mock": "^24.9.0", - "jest-util": "^24.9.0", - "jsdom": "^11.5.1" + "is-buffer": "^1.1.5" } }, - "jest-environment-node": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.9.0.tgz", - "integrity": "sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA==", + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true + }, + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", "dev": true, "requires": { - "@jest/environment": "^24.9.0", - "@jest/fake-timers": "^24.9.0", - "@jest/types": "^24.9.0", - "jest-mock": "^24.9.0", - "jest-util": "^24.9.0" + "set-getter": "^0.1.0" } }, - "jest-get-type": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", - "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==", + "left-pad": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", + "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==", "dev": true }, - "jest-haste-map": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz", - "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==", + "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 + }, + "levenary": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", + "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", "dev": true, "requires": { - "@jest/types": "^24.9.0", - "anymatch": "^2.0.0", - "fb-watchman": "^2.0.0", - "fsevents": "^1.2.7", - "graceful-fs": "^4.1.15", - "invariant": "^2.2.4", - "jest-serializer": "^24.9.0", - "jest-util": "^24.9.0", - "jest-worker": "^24.9.0", - "micromatch": "^3.1.10", - "sane": "^4.0.3", - "walker": "^1.0.7" - }, - "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 - } + "leven": "^3.1.0" } }, - "jest-jasmine2": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz", - "integrity": "sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw==", + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", "dev": true, "requires": { - "@babel/traverse": "^7.1.0", - "@jest/environment": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "co": "^4.6.0", - "expect": "^24.9.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^24.9.0", - "jest-matcher-utils": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-runtime": "^24.9.0", - "jest-snapshot": "^24.9.0", - "jest-util": "^24.9.0", - "pretty-format": "^24.9.0", - "throat": "^4.0.0" + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "list-item": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/list-item/-/list-item-1.1.1.tgz", + "integrity": "sha1-DGXQDih8tmPMs8s4Sad+iewmilY=", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "extend-shallow": "^2.0.1", + "is-number": "^2.1.0", + "repeat-string": "^1.5.2" }, "dependencies": { - "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": { - "color-convert": "^1.9.0" - } - }, - "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": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "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": { - "has-flag": "^3.0.0" + "is-extendable": "^0.1.0" } } } }, - "jest-leak-detector": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz", - "integrity": "sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA==", + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", "dev": true, "requires": { - "jest-get-type": "^24.9.0", - "pretty-format": "^24.9.0" + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" } }, - "jest-matcher-utils": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz", - "integrity": "sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA==", + "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": { - "chalk": "^2.0.1", - "jest-diff": "^24.9.0", - "jest-get-type": "^24.9.0", - "pretty-format": "^24.9.0" - }, - "dependencies": { - "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": { - "color-convert": "^1.9.0" - } - }, - "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": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "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" - } - } + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" } }, - "jest-message-util": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz", - "integrity": "sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==", + "lodash": { + "version": "4.17.14", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.14.tgz", + "integrity": "sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw==", + "dev": true + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", + "dev": true + }, + "lodash.clone": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz", + "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y=", + "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 + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, + "lodash.template": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", + "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", + "dev": true, + "requires": { + "lodash._reinterpolate": "^3.0.0", + "lodash.templatesettings": "^4.0.0" + } + }, + "lodash.templatesettings": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", + "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", + "dev": true, + "requires": { + "lodash._reinterpolate": "^3.0.0" + } + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "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==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/stack-utils": "^1.0.1", - "chalk": "^2.0.1", - "micromatch": "^3.1.10", - "slash": "^2.0.0", - "stack-utils": "^1.0.1" + "chalk": "^2.0.1" }, "dependencies": { "ansi-styles": { @@ -4775,12 +9828,6 @@ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true - }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -4792,370 +9839,376 @@ } } }, - "jest-mock": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz", - "integrity": "sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==", + "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": { - "@jest/types": "^24.9.0" + "js-tokens": "^3.0.0 || ^4.0.0" } }, - "jest-pnp-resolver": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz", - "integrity": "sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ==", + "magic-string": { + "version": "0.22.5", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz", + "integrity": "sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w==", + "dev": true, + "requires": { + "vlq": "^0.2.2" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "make-error": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz", + "integrity": "sha1-7+ToH22yjK3WBccPKcgxtY73dsg=", "dev": true }, - "jest-regex-util": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.9.0.tgz", - "integrity": "sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA==", + "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 }, - "jest-resolve": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.9.0.tgz", - "integrity": "sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ==", + "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": { - "@jest/types": "^24.9.0", - "browser-resolve": "^1.11.3", - "chalk": "^2.0.1", - "jest-pnp-resolver": "^1.2.1", - "realpath-native": "^1.1.0" + "object-visit": "^1.0.0" + } + }, + "markdown-escapes": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.2.tgz", + "integrity": "sha512-lbRZ2mE3Q9RtLjxZBZ9+IMl68DKIXaVAhwvwn9pmjnPLS0h/6kyBMgNhqi1xFJ/2yv6cSyv0jbiZavZv93JkkA==", + "dev": true + }, + "markdown-link": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/markdown-link/-/markdown-link-0.1.1.tgz", + "integrity": "sha1-MsXGUZmmRXMWMi0eQinRNAfIx88=", + "dev": true + }, + "markdown-toc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/markdown-toc/-/markdown-toc-1.2.0.tgz", + "integrity": "sha512-eOsq7EGd3asV0oBfmyqngeEIhrbkc7XVP63OwcJBIhH2EpG2PzFcbZdhy1jutXSlRBBVMNXHvMtSr5LAxSUvUg==", + "dev": true, + "requires": { + "concat-stream": "^1.5.2", + "diacritics-map": "^0.1.0", + "gray-matter": "^2.1.0", + "lazy-cache": "^2.0.2", + "list-item": "^1.1.1", + "markdown-link": "^0.1.1", + "minimist": "^1.2.0", + "mixin-deep": "^1.1.3", + "object.pick": "^1.2.0", + "remarkable": "^1.7.1", + "repeat-string": "^1.6.1", + "strip-color": "^0.1.0" }, "dependencies": { - "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": { - "color-convert": "^1.9.0" - } - }, - "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": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true - }, - "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" - } } } }, - "jest-resolve-dependencies": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz", - "integrity": "sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g==", + "math-random": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz", + "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==", + "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": { - "@jest/types": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-snapshot": "^24.9.0" + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" } }, - "jest-runner": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.9.0.tgz", - "integrity": "sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg==", + "mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", + "dev": true + }, + "merge-source-map": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz", + "integrity": "sha1-pd5GU42uhNQRTMXqArR3KmNGcB8=", "dev": true, "requires": { - "@jest/console": "^24.7.1", - "@jest/environment": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "chalk": "^2.4.2", - "exit": "^0.1.2", - "graceful-fs": "^4.1.15", - "jest-config": "^24.9.0", - "jest-docblock": "^24.3.0", - "jest-haste-map": "^24.9.0", - "jest-jasmine2": "^24.9.0", - "jest-leak-detector": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-resolve": "^24.9.0", - "jest-runtime": "^24.9.0", - "jest-util": "^24.9.0", - "jest-worker": "^24.6.0", - "source-map-support": "^0.5.6", - "throat": "^4.0.0" + "source-map": "^0.5.6" }, "dependencies": { - "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": { - "color-convert": "^1.9.0" - } - }, - "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": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "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==", + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + } + } + }, + "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.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "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" + }, + "dependencies": { + "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 - }, - "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" - } } } }, - "jest-runtime": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.9.0.tgz", - "integrity": "sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw==", + "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": { - "@jest/console": "^24.7.1", - "@jest/environment": "^24.9.0", - "@jest/source-map": "^24.3.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/yargs": "^13.0.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.1.15", - "jest-config": "^24.9.0", - "jest-haste-map": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-mock": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-resolve": "^24.9.0", - "jest-snapshot": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "realpath-native": "^1.1.0", - "slash": "^2.0.0", - "strip-bom": "^3.0.0", - "yargs": "^13.3.0" + "bn.js": "^4.0.0", + "brorand": "^1.0.1" }, "dependencies": { - "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": { - "color-convert": "^1.9.0" - } - }, - "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": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "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==", + "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 - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true - }, - "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" - } } } }, - "jest-serializer": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz", - "integrity": "sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==", + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true }, - "jest-snapshot": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.9.0.tgz", - "integrity": "sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew==", + "mime-db": { + "version": "1.43.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz", + "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==", + "dev": true + }, + "mime-types": { + "version": "2.1.26", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz", + "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==", "dev": true, "requires": { - "@babel/types": "^7.0.0", - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "expect": "^24.9.0", - "jest-diff": "^24.9.0", - "jest-get-type": "^24.9.0", - "jest-matcher-utils": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-resolve": "^24.9.0", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "pretty-format": "^24.9.0", - "semver": "^6.2.0" + "mime-db": "1.43.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "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": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "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==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" }, "dependencies": { - "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": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "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": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "is-plain-object": "^2.0.4" } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + } + } + }, + "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" + }, + "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 - }, - "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" - } } } }, - "jest-util": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz", - "integrity": "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==", + "mocha": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", + "integrity": "sha1-bYrlCPWRZ/lA8rWzxKYSrlDJCuY=", "dev": true, "requires": { - "@jest/console": "^24.9.0", - "@jest/fake-timers": "^24.9.0", - "@jest/source-map": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "callsites": "^3.0.0", - "chalk": "^2.0.1", - "graceful-fs": "^4.1.15", - "is-ci": "^2.0.0", - "mkdirp": "^0.5.1", - "slash": "^2.0.0", - "source-map": "^0.6.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", + "mkdirp": "0.5.1", + "supports-color": "5.4.0" }, "dependencies": { - "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==", + "commander": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha1-30boZ9D8Kuxmo0ZitAapzK//Ww8=", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=", "dev": true, "requires": { - "color-convert": "^1.9.0" + "ms": "2.0.0" } }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", "dev": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "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" } }, - "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 - }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } }, "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha1-HGszdALCE3YF7+GfEP7DkPb6q1Q=", "dev": true, "requires": { "has-flag": "^3.0.0" @@ -5163,658 +10216,956 @@ } } }, - "jest-validate": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.9.0.tgz", - "integrity": "sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==", + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "multimatch": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-4.0.0.tgz", + "integrity": "sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ==", "dev": true, "requires": { - "@jest/types": "^24.9.0", - "camelcase": "^5.3.1", - "chalk": "^2.0.1", - "jest-get-type": "^24.9.0", - "leven": "^3.1.0", - "pretty-format": "^24.9.0" + "@types/minimatch": "^3.0.3", + "array-differ": "^3.0.0", + "array-union": "^2.1.0", + "arrify": "^2.0.1", + "minimatch": "^3.0.4" + } + }, + "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" }, "dependencies": { - "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": { - "color-convert": "^1.9.0" - } - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "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 - }, - "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": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + } + } + }, + "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 + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node-addon-api": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", + "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==", + "dev": true + }, + "node-forge": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.6.tgz", + "integrity": "sha512-sol30LUpz1jQFBjOKwbjxijiE3b6pjd74YwfD0fJOKPjF+fONKb2Yg8rYgS6+bK6VDl+/wfr4IYpC7jDzLUIfw==", + "dev": true + }, + "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-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", "dev": true - }, - "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" - } } } }, - "jest-watcher": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.9.0.tgz", - "integrity": "sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw==", + "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": "5.4.3", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.3.tgz", + "integrity": "sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q==", "dev": true, "requires": { - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/yargs": "^13.0.0", - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.1", - "jest-util": "^24.9.0", - "string-length": "^2.0.0" + "growly": "^1.3.0", + "is-wsl": "^1.1.0", + "semver": "^5.5.0", + "shellwords": "^0.1.1", + "which": "^1.3.0" }, "dependencies": { - "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": { - "color-convert": "^1.9.0" - } - }, - "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": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true - }, - "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" - } } } }, - "jest-worker": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", - "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "node-releases": { + "version": "1.1.58", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.58.tgz", + "integrity": "sha512-NxBudgVKiRh/2aPWMgPR7bPTX0VPmGx5QBwCtdHitnqFE5/O8DeBXuIMH1nwNnw/aMo6AjOrpsHzfY3UbUJ7yg==", + "dev": true + }, + "normalize-html-whitespace": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/normalize-html-whitespace/-/normalize-html-whitespace-1.0.0.tgz", + "integrity": "sha512-9ui7CGtOOlehQu0t/OhhlmDyc71mKVlv+4vF+me4iZLPrNtRL2xoquEdfZxasC/bdQi/Hr3iTrpyRKIG+ocabA==", + "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": { - "merge-stream": "^2.0.0", - "supports-color": "^6.1.0" + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" }, "dependencies": { - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", "dev": true }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "resolve": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", + "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "path-parse": "^1.0.6" } } } }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true - }, - "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "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": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "remove-trailing-separator": "^1.0.1" } }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", "dev": true }, - "jsdom": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", - "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", + "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": { - "abab": "^2.0.0", - "acorn": "^5.5.3", - "acorn-globals": "^4.1.0", - "array-equal": "^1.0.0", - "cssom": ">= 0.3.2 < 0.4.0", - "cssstyle": "^1.0.0", - "data-urls": "^1.0.0", - "domexception": "^1.0.1", - "escodegen": "^1.9.1", - "html-encoding-sniffer": "^1.0.2", - "left-pad": "^1.3.0", - "nwsapi": "^2.0.7", - "parse5": "4.0.0", - "pn": "^1.1.0", - "request": "^2.87.0", - "request-promise-native": "^1.0.5", - "sax": "^1.2.4", - "symbol-tree": "^3.2.2", - "tough-cookie": "^2.3.4", - "w3c-hr-time": "^1.0.1", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.3", - "whatwg-mimetype": "^2.1.0", - "whatwg-url": "^6.4.1", - "ws": "^5.2.0", - "xml-name-validator": "^3.0.0" + "path-key": "^2.0.0" } }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dev": true, + "requires": { + "boolbase": "~1.0.0" + } + }, + "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 }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "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 }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "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 }, - "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==", + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "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" + } + } + } + }, + "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==", "dev": true }, - "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=", + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true }, - "json5": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", - "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", "dev": true, "requires": { - "minimist": "^1.2.0" + "isobject": "^3.0.0" }, "dependencies": { - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true } } }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", "dev": true, "requires": { - "graceful-fs": "^4.1.6" + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" } }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "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": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" } }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "isobject": "^3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } } }, - "kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true + "object.values": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", + "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } }, - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", "dev": true, "requires": { - "set-getter": "^0.1.0" + "ee-first": "1.1.1" } }, - "left-pad": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", - "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==", - "dev": true + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } }, - "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 + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "opn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "dev": true, + "requires": { + "is-wsl": "^1.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" + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" } }, - "list-item": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/list-item/-/list-item-1.1.1.tgz", - "integrity": "sha1-DGXQDih8tmPMs8s4Sad+iewmilY=", + "ora": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-2.1.0.tgz", + "integrity": "sha512-hNNlAd3gfv/iPmsNxYoAPLvxg7HuPozww7fFonMZvL84tP6Ox5igfk5j/+a9rtJJwqMgKK+JgWsAQik5o0HTLA==", "dev": true, "requires": { - "expand-range": "^1.8.1", - "extend-shallow": "^2.0.1", - "is-number": "^2.1.0", - "repeat-string": "^1.5.2" + "chalk": "^2.3.1", + "cli-cursor": "^2.1.0", + "cli-spinners": "^1.1.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^4.0.0", + "wcwidth": "^1.0.1" }, "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "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==", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "color-convert": "^1.9.0" + } + }, + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^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" } } } }, - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "p-each-series": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz", + "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" + "p-reduce": "^1.0.0" } }, - "locate-path": { + "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==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "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-locate": "^3.0.0", - "path-exists": "^3.0.0" + "p-limit": "^2.0.0" } }, - "lodash": { - "version": "4.17.14", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.14.tgz", - "integrity": "sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw==", + "p-reduce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", + "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=", "dev": true }, - "lodash._reinterpolate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, - "lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", "dev": true }, - "lodash.template": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", - "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", + "parcel": { + "version": "1.12.4", + "resolved": "https://registry.npmjs.org/parcel/-/parcel-1.12.4.tgz", + "integrity": "sha512-qfc74e2/R4pCoU6L/ZZnK9k3iDS6ir4uHea0e9th9w52eehcAGf2ido/iABq9PBXdsIOe4NSY3oUm7Khe7+S3w==", "dev": true, "requires": { - "lodash._reinterpolate": "^3.0.0", - "lodash.templatesettings": "^4.0.0" + "@babel/code-frame": "^7.0.0", + "@babel/core": "^7.4.4", + "@babel/generator": "^7.4.4", + "@babel/parser": "^7.4.4", + "@babel/plugin-transform-flow-strip-types": "^7.4.4", + "@babel/plugin-transform-modules-commonjs": "^7.4.4", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/preset-env": "^7.4.4", + "@babel/runtime": "^7.4.4", + "@babel/template": "^7.4.4", + "@babel/traverse": "^7.4.4", + "@babel/types": "^7.4.4", + "@iarna/toml": "^2.2.0", + "@parcel/fs": "^1.11.0", + "@parcel/logger": "^1.11.1", + "@parcel/utils": "^1.11.0", + "@parcel/watcher": "^1.12.1", + "@parcel/workers": "^1.11.0", + "ansi-to-html": "^0.6.4", + "babylon-walk": "^1.0.2", + "browserslist": "^4.1.0", + "chalk": "^2.1.0", + "clone": "^2.1.1", + "command-exists": "^1.2.6", + "commander": "^2.11.0", + "core-js": "^2.6.5", + "cross-spawn": "^6.0.4", + "css-modules-loader-core": "^1.1.0", + "cssnano": "^4.0.0", + "deasync": "^0.1.14", + "dotenv": "^5.0.0", + "dotenv-expand": "^5.1.0", + "envinfo": "^7.3.1", + "fast-glob": "^2.2.2", + "filesize": "^3.6.0", + "get-port": "^3.2.0", + "htmlnano": "^0.2.2", + "is-glob": "^4.0.0", + "is-url": "^1.2.2", + "js-yaml": "^3.10.0", + "json5": "^1.0.1", + "micromatch": "^3.0.4", + "mkdirp": "^0.5.1", + "node-forge": "^0.7.1", + "node-libs-browser": "^2.0.0", + "opn": "^5.1.0", + "postcss": "^7.0.11", + "postcss-value-parser": "^3.3.1", + "posthtml": "^0.11.2", + "posthtml-parser": "^0.4.0", + "posthtml-render": "^1.1.3", + "resolve": "^1.4.0", + "semver": "^5.4.1", + "serialize-to-js": "^3.0.0", + "serve-static": "^1.12.4", + "source-map": "0.6.1", + "terser": "^3.7.3", + "v8-compile-cache": "^2.0.0", + "ws": "^5.1.1" + }, + "dependencies": { + "@nodelib/fs.stat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", + "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", + "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==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "fast-glob": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", + "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", + "dev": true, + "requires": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" + } + }, + "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" + } + } + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "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" + } + } } }, - "lodash.templatesettings": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", - "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", + "parse-asn1": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", + "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", "dev": true, "requires": { - "lodash._reinterpolate": "^3.0.0" + "asn1.js": "^4.0.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" } }, - "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==", + "parse-entities": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.2.1.tgz", + "integrity": "sha512-NBWYLQm1KSoDKk7GAHyioLTvCZ5QjdH/ASBBQTD3iLiAWJXS5bg1jEWI8nIJ+vgVvsceBVBcDGRWSo0KVQBvvg==", "dev": true, "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" } }, - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", "dev": true, "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "dependencies": { - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" } }, - "make-error": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz", - "integrity": "sha1-7+ToH22yjK3WBccPKcgxtY73dsg=", + "parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", "dev": true }, - "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" - } + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "parsimmon": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/parsimmon/-/parsimmon-1.13.0.tgz", + "integrity": "sha512-5UIrOCW+gjbILkjKPgTgmq8LKf8TT3Iy7kN2VD7OtQ81facKn8B4gG1X94jWqXYZsxG2KbJhrv/Yq/5H6BQn7A==", "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" - } + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true }, - "markdown-escapes": { + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "dev": true + }, + "path-dirname": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.2.tgz", - "integrity": "sha512-lbRZ2mE3Q9RtLjxZBZ9+IMl68DKIXaVAhwvwn9pmjnPLS0h/6kyBMgNhqi1xFJ/2yv6cSyv0jbiZavZv93JkkA==", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", "dev": true }, - "markdown-link": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/markdown-link/-/markdown-link-0.1.1.tgz", - "integrity": "sha1-MsXGUZmmRXMWMi0eQinRNAfIx88=", + "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 }, - "markdown-toc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/markdown-toc/-/markdown-toc-1.2.0.tgz", - "integrity": "sha512-eOsq7EGd3asV0oBfmyqngeEIhrbkc7XVP63OwcJBIhH2EpG2PzFcbZdhy1jutXSlRBBVMNXHvMtSr5LAxSUvUg==", + "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=", + "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 + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "dev": true, "requires": { - "concat-stream": "^1.5.2", - "diacritics-map": "^0.1.0", - "gray-matter": "^2.1.0", - "lazy-cache": "^2.0.2", - "list-item": "^1.1.1", - "markdown-link": "^0.1.1", - "minimist": "^1.2.0", - "mixin-deep": "^1.1.3", - "object.pick": "^1.2.0", - "remarkable": "^1.7.1", - "repeat-string": "^1.6.1", - "strip-color": "^0.1.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 - } + "pify": "^3.0.0" } }, - "math-random": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz", - "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==", + "pbkdf2": { + "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", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", "dev": true }, - "merge-stream": { + "physical-cpu-count": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "resolved": "https://registry.npmjs.org/physical-cpu-count/-/physical-cpu-count-2.0.0.tgz", + "integrity": "sha1-GN4vl+S/epVRrXURlCtUlverpmA=", "dev": true }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", "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" - }, - "dependencies": { - "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 - } - } - }, - "mime-db": { - "version": "1.43.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz", - "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==", + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "dev": true }, - "mime-types": { - "version": "2.1.26", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz", - "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==", + "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": { - "mime-db": "1.43.0" + "node-modules-regexp": "^1.0.0" } }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", "dev": true, "requires": { - "brace-expansion": "^1.1.7" + "find-up": "^3.0.0" } }, - "minimist": { - "version": "0.0.8", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "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==", + "pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", + "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", "dev": true, "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" + "find-up": "^2.1.0" }, "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==", + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "requires": { - "is-plain-object": "^2.0.4" + "locate-path": "^2.0.0" } - } - } - }, - "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" - }, - "dependencies": { - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true } } }, - "mocha": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", - "integrity": "sha1-bYrlCPWRZ/lA8rWzxKYSrlDJCuY=", + "platform": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.4.tgz", + "integrity": "sha1-bw+xftqqSPIUQrOpdcBjEw8cPr0=", + "dev": true + }, + "pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", + "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 + }, + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", "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" + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" }, "dependencies": { - "commander": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", - "integrity": "sha1-30boZ9D8Kuxmo0ZitAapzK//Ww8=", - "dev": true - }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=", + "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": { - "ms": "2.0.0" + "color-convert": "^1.9.0" } }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", + "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": { - "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.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.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" + } + } } }, "has-flag": { @@ -5823,19 +11174,10 @@ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha1-HGszdALCE3YF7+GfEP7DkPb6q1Q=", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, "requires": { "has-flag": "^3.0.0" @@ -5843,448 +11185,612 @@ } } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "multimatch": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-4.0.0.tgz", - "integrity": "sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ==", + "postcss-calc": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.2.tgz", + "integrity": "sha512-rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ==", "dev": true, "requires": { - "@types/minimatch": "^3.0.3", - "array-differ": "^3.0.0", - "array-union": "^2.1.0", - "arrify": "^2.0.1", - "minimatch": "^3.0.4" + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + }, + "dependencies": { + "postcss-value-parser": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", + "dev": true + } } }, - "nan": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", - "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "postcss-colormin": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", + "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", "dev": true, - "optional": true + "requires": { + "browserslist": "^4.0.0", + "color": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "postcss-convert-values": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", + "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", "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" - }, - "dependencies": { - "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 - } + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" } }, - "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 + "postcss-discard-comments": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", + "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true + "postcss-discard-duplicates": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", + "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } }, - "node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", - "dev": true + "postcss-discard-empty": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", + "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } }, - "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 + "postcss-discard-overridden": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", + "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } }, - "node-notifier": { - "version": "5.4.3", - "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.3.tgz", - "integrity": "sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q==", + "postcss-merge-longhand": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", + "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", "dev": true, "requires": { - "growly": "^1.3.0", - "is-wsl": "^1.1.0", - "semver": "^5.5.0", - "shellwords": "^0.1.1", - "which": "^1.3.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } + "css-color-names": "0.0.4", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" } }, - "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==", + "postcss-merge-rules": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", + "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", "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" + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "cssnano-util-same-parent": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0", + "vendors": "^1.0.0" }, "dependencies": { - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", - "dev": true - }, - "resolve": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", - "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", "dev": true, "requires": { - "path-parse": "^1.0.6" + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" } } } }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "postcss-minify-font-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", + "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", "dev": true, "requires": { - "remove-trailing-separator": "^1.0.1" + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" } }, - "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=", + "postcss-minify-gradients": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", + "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", "dev": true, "requires": { - "path-key": "^2.0.0" + "cssnano-util-get-arguments": "^4.0.0", + "is-color-stop": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-minify-params": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", + "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "browserslist": "^4.0.0", + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "uniqs": "^2.0.0" + } + }, + "postcss-minify-selectors": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", + "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-modules-extract-imports": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz", + "integrity": "sha1-thTJcgvmgW6u41+zpfqh26agXds=", + "dev": true, + "requires": { + "postcss": "^6.0.1" + }, + "dependencies": { + "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": { + "color-convert": "^1.9.0" + } + }, + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.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" + } + } } }, - "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-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "postcss-modules-local-by-default": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", + "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", "dev": true, "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.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=", + "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": { - "is-descriptor": "^0.1.0" + "color-convert": "^1.9.0" + } + }, + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.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" } } } }, - "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==", - "dev": true - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "postcss-modules-scope": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", + "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", "dev": true, "requires": { - "isobject": "^3.0.0" + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" }, "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "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": { + "color-convert": "^1.9.0" + } + }, + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.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" + } } } }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - } - }, - "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.pick": { + "postcss-modules-values": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", + "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", "dev": true, "requires": { - "isobject": "^3.0.1" + "icss-replace-symbols": "^1.1.0", + "postcss": "^6.0.1" }, "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "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": { + "color-convert": "^1.9.0" + } + }, + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.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" + } } } }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "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" - } - }, - "p-each-series": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz", - "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=", + "postcss-normalize-charset": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", + "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", "dev": true, "requires": { - "p-reduce": "^1.0.0" + "postcss": "^7.0.0" } }, - "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==", + "postcss-normalize-display-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", + "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", "dev": true, "requires": { - "p-try": "^2.0.0" + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.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==", + "postcss-normalize-positions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", + "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", "dev": true, "requires": { - "p-limit": "^2.0.0" + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" } }, - "p-reduce": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", - "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=", - "dev": true - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "parse-entities": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.2.1.tgz", - "integrity": "sha512-NBWYLQm1KSoDKk7GAHyioLTvCZ5QjdH/ASBBQTD3iLiAWJXS5bg1jEWI8nIJ+vgVvsceBVBcDGRWSo0KVQBvvg==", + "postcss-normalize-repeat-style": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", + "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", "dev": true, "requires": { - "character-entities": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "character-reference-invalid": "^1.0.0", - "is-alphanumerical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-hexadecimal": "^1.0.0" + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" } }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "postcss-normalize-string": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", + "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", "dev": true, "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" } }, - "parse5": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", - "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", - "dev": true + "postcss-normalize-timing-functions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", + "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } }, - "parsimmon": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/parsimmon/-/parsimmon-1.13.0.tgz", - "integrity": "sha512-5UIrOCW+gjbILkjKPgTgmq8LKf8TT3Iy7kN2VD7OtQ81facKn8B4gG1X94jWqXYZsxG2KbJhrv/Yq/5H6BQn7A==", - "dev": true + "postcss-normalize-unicode": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", + "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true + "postcss-normalize-url": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", + "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", + "dev": true, + "requires": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^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 + "postcss-normalize-whitespace": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", + "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } }, - "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=", - "dev": true + "postcss-ordered-values": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", + "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true + "postcss-reduce-initial": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", + "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" + } }, - "path-parse": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", - "dev": true + "postcss-reduce-transforms": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", + "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } }, - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "postcss-selector-parser": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", + "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", "dev": true, "requires": { - "pify": "^3.0.0" + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" } }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true + "postcss-svgo": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz", + "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", + "dev": true, + "requires": { + "is-svg": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + } }, - "picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", - "dev": true + "postcss-unique-selectors": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", + "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.0" + } }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true }, - "pirates": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", - "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "posthtml": { + "version": "0.11.6", + "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.11.6.tgz", + "integrity": "sha512-C2hrAPzmRdpuL3iH0TDdQ6XCc9M7Dcc3zEW5BLerY65G4tWWszwv6nG/ksi6ul5i2mx22ubdljgktXCtNkydkw==", "dev": true, "requires": { - "node-modules-regexp": "^1.0.0" + "posthtml-parser": "^0.4.1", + "posthtml-render": "^1.1.5" } }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "posthtml-parser": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.4.2.tgz", + "integrity": "sha512-BUIorsYJTvS9UhXxPTzupIztOMVNPa/HtAm9KHni9z6qEfiJ1bpOBL5DfUOL9XAc3XkLIEzBzpph+Zbm4AdRAg==", "dev": true, "requires": { - "find-up": "^3.0.0" + "htmlparser2": "^3.9.2" } }, - "platform": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.4.tgz", - "integrity": "sha1-bw+xftqqSPIUQrOpdcBjEw8cPr0=", - "dev": true - }, - "pn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", - "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", - "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=", + "posthtml-render": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-1.2.2.tgz", + "integrity": "sha512-MbIXTWwAfJ9qET6Zl29UNwJcDJEEz9Zkr5oDhiujitJa7YBJwEpbkX2cmuklCDxubTMoRWpid3q8DrSyGnUUzQ==", "dev": true }, "prelude-ls": { @@ -6319,6 +11825,18 @@ } } }, + "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", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, "process-nextick-args": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", @@ -6331,6 +11849,28 @@ "integrity": "sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ==", "dev": true }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "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 + } + } + }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -6353,12 +11893,98 @@ "integrity": "sha512-mk98aayyd00xbfHgE3uEmAUGzz3jCdm8Mkf5DUXUhc7egmOaGG2D7qhVlynGenNe9VaNJZvzO9hkc8myuTkDgw==", "dev": true }, + "purgecss": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-1.4.2.tgz", + "integrity": "sha512-hkOreFTgiyMHMmC2BxzdIw5DuC6kxAbP/gGOGd3MEsF3+5m69rIvUEPaxrnoUtfODTFKe9hcXjGwC6jcjoyhOw==", + "dev": true, + "requires": { + "glob": "^7.1.3", + "postcss": "^7.0.14", + "postcss-selector-parser": "^6.0.0", + "yargs": "^14.0.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "yargs": { + "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", + "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": "^15.0.1" + } + }, + "yargs-parser": { + "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", + "decamelize": "^1.2.0" + } + } + } + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true + }, "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", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "quote-stream": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/quote-stream/-/quote-stream-1.0.2.tgz", + "integrity": "sha1-hJY/jJwmuULhU/7rU6rnRlK34LI=", + "dev": true, + "requires": { + "buffer-equal": "0.0.1", + "minimist": "^1.1.3", + "through2": "^2.0.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 + } + } + }, "randomatic": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", @@ -6384,6 +12010,31 @@ } } }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, "react-is": { "version": "16.13.0", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.0.tgz", @@ -6426,6 +12077,17 @@ "util-deprecate": "~1.0.1" } }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, "realpath-native": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz", @@ -6435,6 +12097,37 @@ "util.promisify": "^1.0.0" } }, + "regenerate": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.1.tgz", + "integrity": "sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "dev": true, + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-runtime": { + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", + "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", + "dev": true + }, + "regenerator-transform": { + "version": "0.14.4", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz", + "integrity": "sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4", + "private": "^0.1.8" + } + }, "regex-not": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", @@ -6445,6 +12138,43 @@ "safe-regex": "^1.1.0" } }, + "regexpu-core": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", + "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", + "dev": true, + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.2.0" + } + }, + "regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "dev": true + }, + "regjsparser": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", + "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, "remark-frontmatter": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-1.3.1.tgz", @@ -6610,6 +12340,16 @@ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", "dev": true }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, "ret": { "version": "0.1.15", "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", @@ -6622,6 +12362,18 @@ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true }, + "rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", + "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", + "dev": true + }, + "rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", + "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", + "dev": true + }, "rimraf": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", @@ -6631,6 +12383,16 @@ "glob": "^7.0.5" } }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, "rsvp": { "version": "4.8.5", "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", @@ -6695,12 +12457,68 @@ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", "dev": true }, + "saxes": { + "version": "3.1.11", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", + "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", + "dev": true, + "requires": { + "xmlchars": "^2.1.1" + } + }, "semver": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", "dev": true }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "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 + } + } + }, + "serialize-to-js": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/serialize-to-js/-/serialize-to-js-3.1.1.tgz", + "integrity": "sha512-F+NGU0UHMBO4Q965tjw7rvieNVjlH6Lqi2emq/Lc9LUURYJbiCzmpi4Cy1OOjjVPtxu0c+NE85LU6968Wko5ZA==", + "dev": true + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", @@ -6739,6 +12557,34 @@ } } }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shallow-copy": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz", + "integrity": "sha1-QV9CcC1z2BAzApLMXuhurhoRoXA=", + "dev": true + }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", @@ -6766,6 +12612,23 @@ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "dev": true, + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "dev": true + } + } + }, "sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", @@ -6991,6 +12854,12 @@ "tweetnacl": "~0.14.0" } }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, "stack-utils": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz", @@ -7003,6 +12872,15 @@ "integrity": "sha512-Qe8QntFrrpWTnHwvwj2FZTgv+PKIsp0B9VxLzLLbSpPXWOgRgc5LVj/aTiSfK1RqIeF9jeC1UeOH8Q8y60A7og==", "dev": true }, + "static-eval": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.0.5.tgz", + "integrity": "sha512-nNbV6LbGtMBgv7e9LFkt5JV8RVlRsyJrphfAt9tOtBBW/SfnzZDf2KnS72an8e434A+9e/BmJuTxeGPvrAK7KA==", + "dev": true, + "requires": { + "escodegen": "^1.11.1" + } + }, "static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", @@ -7024,12 +12902,90 @@ } } }, + "static-module": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/static-module/-/static-module-2.2.5.tgz", + "integrity": "sha512-D8vv82E/Kpmz3TXHKG8PPsCPg+RAX6cbCOyvjM6x04qZtQ47EtJFVwRsdov3n5d6/6ynrOY9XB4JkaZwB2xoRQ==", + "dev": true, + "requires": { + "concat-stream": "~1.6.0", + "convert-source-map": "^1.5.1", + "duplexer2": "~0.1.4", + "escodegen": "~1.9.0", + "falafel": "^2.1.0", + "has": "^1.0.1", + "magic-string": "^0.22.4", + "merge-source-map": "1.0.4", + "object-inspect": "~1.4.0", + "quote-stream": "~1.0.2", + "readable-stream": "~2.3.3", + "shallow-copy": "~0.0.1", + "static-eval": "^2.0.0", + "through2": "~2.0.3" + }, + "dependencies": { + "escodegen": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.1.tgz", + "integrity": "sha512-6hTjO1NAWkHnDk3OqQ4YrCuwwmGHL9S3nPlzBOUG/R44rda3wLNrfvQ5fkSGjyhHFKM7ALPKcKGrwvCLe0lC7Q==", + "dev": true, + "requires": { + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + }, + "object-inspect": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.4.1.tgz", + "integrity": "sha512-wqdhLpfCUbEsoEwl3FXwGyv8ief1k/1aUdIPCqVnupM6e8l63BEJdiF/0swtn04/8p05tG/T0FrpTlfwvljOdw==", + "dev": true + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + }, "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", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "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==", + "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" + } + }, "string-length": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", @@ -7162,13 +13118,86 @@ "boundary": "^1.0.1" } }, - "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "stylehacks": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", + "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", "dev": true, "requires": { - "has-flag": "^4.0.0" + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + }, + "dependencies": { + "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": { + "color-convert": "^1.9.0" + } + }, + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "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" + } + } } }, "symbol-tree": { @@ -7177,6 +13206,17 @@ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", "dev": true }, + "terser": { + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-3.17.0.tgz", + "integrity": "sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ==", + "dev": true, + "requires": { + "commander": "^2.19.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.10" + } + }, "test-exclude": { "version": "5.2.3", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz", @@ -7205,12 +13245,39 @@ "xtend": "~4.0.1" } }, + "timers-browserify": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", + "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", + "dev": true + }, + "tiny-inflate": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==", + "dev": true + }, "tmpl": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", "dev": true }, + "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", @@ -7259,6 +13326,12 @@ } } }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true + }, "toml": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/toml/-/toml-2.3.6.tgz", @@ -7354,28 +13427,28 @@ } }, "ts-node": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.0.2.tgz", - "integrity": "sha1-ns3414KgykyA0dZBy7I2r0rBt1Y=", + "version": "8.10.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.10.2.tgz", + "integrity": "sha512-ISJJGgkIpDdBhWVu3jufsWpK3Rzo7bdiIXJjQc0ynKxVOVcg2oIrf2H2cejminGrptVc6q6/uynAHNCuWGbpVA==", "dev": true, "requires": { "arg": "^4.1.0", - "diff": "^3.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": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true }, "source-map-support": { - "version": "0.5.10", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.10.tgz", - "integrity": "sha1-IhQIC8nVGDJRHuK6uW48L5NTEgw=", + "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", @@ -7532,6 +13605,12 @@ "tslib": "^1.8.1" } }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -7574,6 +13653,109 @@ "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", "dev": true }, + "uncss": { + "version": "0.17.3", + "resolved": "https://registry.npmjs.org/uncss/-/uncss-0.17.3.tgz", + "integrity": "sha512-ksdDWl81YWvF/X14fOSw4iu8tESDHFIeyKIeDrK6GEVTQvqJc1WlOEXqostNwOCi3qAj++4EaLsdAgPmUbEyog==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "glob": "^7.1.4", + "is-absolute-url": "^3.0.1", + "is-html": "^1.1.0", + "jsdom": "^14.1.0", + "lodash": "^4.17.15", + "postcss": "^7.0.17", + "postcss-selector-parser": "6.0.2", + "request": "^2.88.0" + }, + "dependencies": { + "acorn": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", + "dev": true + }, + "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 + }, + "is-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", + "dev": true + }, + "jsdom": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-14.1.0.tgz", + "integrity": "sha512-O901mfJSuTdwU2w3Sn+74T+RnDVP+FuV5fH8tcPWyqrseRAb0s5xOtPgCFiPOtLcyK7CLIJwPyD83ZqQWvA5ng==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "acorn": "^6.0.4", + "acorn-globals": "^4.3.0", + "array-equal": "^1.0.0", + "cssom": "^0.3.4", + "cssstyle": "^1.1.1", + "data-urls": "^1.1.0", + "domexception": "^1.0.1", + "escodegen": "^1.11.0", + "html-encoding-sniffer": "^1.0.2", + "nwsapi": "^2.1.3", + "parse5": "5.1.0", + "pn": "^1.1.0", + "request": "^2.88.0", + "request-promise-native": "^1.0.5", + "saxes": "^3.1.9", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.5.0", + "w3c-hr-time": "^1.0.1", + "w3c-xmlserializer": "^1.1.2", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^7.0.0", + "ws": "^6.1.2", + "xml-name-validator": "^3.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 + }, + "parse5": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", + "dev": true + }, + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + } + } + }, "underscore": { "version": "1.8.3", "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", @@ -7590,6 +13772,44 @@ "xtend": "^4.0.1" } }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "dev": true + }, + "unicode-trie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-0.3.1.tgz", + "integrity": "sha1-1nHd3YkQGgi6w3tqUWEBBgIFIIU=", + "dev": true, + "requires": { + "pako": "^0.2.5", + "tiny-inflate": "^1.0.0" + } + }, "unified": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/unified/-/unified-6.2.0.tgz", @@ -7616,6 +13836,18 @@ "set-value": "^2.0.1" } }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", + "dev": true + }, "unist-util-is": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-2.1.2.tgz", @@ -7661,6 +13893,12 @@ "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=", "dev": true }, + "unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", + "dev": true + }, "unset-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", @@ -7707,6 +13945,12 @@ } } }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true + }, "update-section": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/update-section/-/update-section-0.3.3.tgz", @@ -7728,12 +13972,39 @@ "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", "dev": true }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, "use": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", "dev": true }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -7758,6 +14029,12 @@ "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", "dev": true }, + "v8-compile-cache": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", + "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==", + "dev": true + }, "validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -7768,6 +14045,12 @@ "spdx-expression-parse": "^3.0.0" } }, + "vendors": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", + "dev": true + }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", @@ -7806,6 +14089,18 @@ "unist-util-stringify-position": "^1.1.1" } }, + "vlq": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", + "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==", + "dev": true + }, + "vm-browserify": { + "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 + }, "w3c-hr-time": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", @@ -7815,6 +14110,17 @@ "browser-process-hrtime": "^1.0.0" } }, + "w3c-xmlserializer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", + "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", + "dev": true, + "requires": { + "domexception": "^1.0.1", + "webidl-conversions": "^4.0.2", + "xml-name-validator": "^3.0.0" + } + }, "walker": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", @@ -7824,6 +14130,15 @@ "makeerror": "1.0.x" } }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, "webidl-conversions": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", @@ -7943,6 +14258,12 @@ "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 + }, "xtend": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", @@ -7992,9 +14313,9 @@ } }, "yn": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.0.0.tgz", - "integrity": "sha1-AHPGtW6SrtZS+9/WJDHy1rmnoJE=", + "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 5b2f00686..dfc4f6433 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,6 @@ "@types/node": "^12.6.8", "@types/prettier": "1.10.0", "benchmark": "2.1.4", - "chalk": "^4.1.0", "docs-ts": "^0.5.1", "doctoc": "^1.4.0", "dtslint": "github:gcanti/dtslint", @@ -54,10 +53,11 @@ "glob": "^7.1.6", "jest": "^24.8.0", "mocha": "^5.2.0", + "parcel": "^1.12.4", "prettier": "^2.0.2", "rimraf": "2.6.2", "ts-jest": "^24.0.2", - "ts-node": "^8.0.2", + "ts-node": "^8.10.2", "tslint": "5.11.0", "tslint-config-standard": "8.0.1", "tslint-immutable": "^6.0.1", diff --git a/scripts/helpers/check.ts b/scripts/helpers/check.ts new file mode 100644 index 000000000..4dff77efb --- /dev/null +++ b/scripts/helpers/check.ts @@ -0,0 +1,29 @@ +// This operation runs a kind of smoke test to check that everything is fine in `dist` folder + +import { Program } from '../libs/program' +import { ChildProcess } from '../libs/child_process' +import { Logger } from '../libs/logger' +import { pipe } from '../../src/function' +import { chain } from '../../src/TaskEither' +import { SMOKE_TESTS_DIR } from './constants' + +interface Capabilities extends ChildProcess, Logger {} + +interface AppEff extends Program {} + +const SMOKE_CJS = `npx ts-node ${SMOKE_TESTS_DIR}/cjs.ts` + +const BUILD_ES6 = `npx parcel build ${SMOKE_TESTS_DIR}/es6.ts -d ${SMOKE_TESTS_DIR} --no-source-maps --no-minify --target node --no-cache` + +const SMOKE_ES6 = `node ${SMOKE_TESTS_DIR}/es6.js` + +export const check: AppEff = (C) => + pipe( + C.log('Running smoke tests...'), + // Run smoke test for commonjs format + chain(() => C.exec(SMOKE_CJS)), + // Build es6 script in commonjs format + chain(() => C.exec(BUILD_ES6)), + // and run the smoke test + chain(() => C.exec(SMOKE_ES6)) + ) diff --git a/scripts/helpers/constants.ts b/scripts/helpers/constants.ts index c9b9328e5..383ee9162 100644 --- a/scripts/helpers/constants.ts +++ b/scripts/helpers/constants.ts @@ -7,3 +7,8 @@ export const DIST = 'dist' * List of NPM specific files to be published. */ export const FILES: ReadonlyArray = ['CHANGELOG.md', 'LICENSE', 'README.md'] + +/** + * Path of the folder containing smoke tests + */ +export const SMOKE_TESTS_DIR = 'scripts/smoke-tests' diff --git a/scripts/helpers/prepare-dist.ts b/scripts/helpers/prepare-dist.ts index 407dad44b..8500307cd 100644 --- a/scripts/helpers/prepare-dist.ts +++ b/scripts/helpers/prepare-dist.ts @@ -1,9 +1,9 @@ import * as path from 'path' import { FileSystem } from '../libs/fs' import { Logger } from '../libs/logger' -import { Program, toErrMsg, Eff } from '../libs/program' +import { Program, Eff } from '../libs/program' import { sequenceT } from '../../src/Apply' -import { stringifyJSON } from '../../src/Either' +import { stringifyJSON, toError } from '../../src/Either' import * as RTE from '../../src/ReaderTaskEither' import { readonlyArray } from '../../src/ReadonlyArray' import { chain, map, fromEither, taskEither } from '../../src/TaskEither' @@ -20,18 +20,18 @@ const traverseTE = readonlyArray.traverse(taskEither) const copyPkgFiles: AppEff> = (C) => traverseTE(FILES, (file) => pipe( - C.info(`Copy "${file}" to ${DIST}`), + C.log(`Copy "${file}" to ${DIST}`), chain(() => C.copyFile(file, path.resolve(DIST, file))) ) ) const makeModules: AppEff = (C) => pipe( - C.info('Creating modules directories...'), + C.log('Creating modules directories...'), chain(() => C.glob(`${DIST}/lib/*.js`)), map(getModules), chain((modules) => traverseTE(modules, makeSingleModule(C))), - chain(() => C.info('modules prepared')) + chain(() => C.log('modules prepared')) ) export const prepareDist: AppEff = pipe( @@ -47,7 +47,7 @@ function getModules(paths: ReadonlyArray): ReadonlyArray { function makeSingleModule(C: Capabilities): (module: string) => Eff { return (m) => pipe( - C.info(`prepare ${m}`), + C.log(`prepare ${m}`), chain(() => C.mkdir(path.join(DIST, m))), chain(() => makePkgJson(m)), chain((data) => C.writeFile(path.join(DIST, m, 'package.json'), data)) @@ -64,7 +64,7 @@ function makePkgJson(module: string): Eff { typings: `../lib/${module}.d.ts`, sideEffects: false }, - toErrMsg + toError ), fromEither ) diff --git a/scripts/helpers/prepare-pkg-json.ts b/scripts/helpers/prepare-pkg-json.ts index 206ef4f6f..aa57fb727 100644 --- a/scripts/helpers/prepare-pkg-json.ts +++ b/scripts/helpers/prepare-pkg-json.ts @@ -1,8 +1,8 @@ -import { Program, toErrMsg } from '../libs/program' +import { Program } from '../libs/program' import { FileSystem } from '../libs/fs' import { Logger } from '../libs/logger' +import { stringifyJSON, parseJSON, toError } from '../../src/Either' import { chain, map, fromEither } from '../../src/TaskEither' -import { stringifyJSON, parseJSON } from '../../src/Either' import * as path from 'path' import { pipe } from '../../src/pipeable' import { DIST } from './constants' @@ -15,9 +15,9 @@ const PKG = 'package.json' export const preparePkgJson: AppEff = (C) => pipe( - C.info(`Copying project\'s "${PKG}" in "${DIST}" folder...`), + C.log(`Copying project\'s "${PKG}" in "${DIST}" folder...`), chain(() => C.readFile(PKG)), - chain((s) => fromEither(parseJSON(s, toErrMsg))), + chain((s) => fromEither(parseJSON(s, toError))), map((v) => { // This is the only way to completly remove fields in object const clone = Object.assign({}, v as any) @@ -27,7 +27,7 @@ export const preparePkgJson: AppEff = (C) => return clone }), - chain((data) => fromEither(stringifyJSON(data, toErrMsg))), + chain((data) => fromEither(stringifyJSON(data, toError))), chain((data) => C.writeFile(path.join(DIST, PKG), data)), - chain(() => C.info(`"${PKG}" copied`)) + chain(() => C.log(`"${PKG}" copied`)) ) diff --git a/scripts/helpers/publish-dist.ts b/scripts/helpers/publish-dist.ts index d259fb5ae..23c6e4b13 100644 --- a/scripts/helpers/publish-dist.ts +++ b/scripts/helpers/publish-dist.ts @@ -1,21 +1,19 @@ import { ChildProcess } from '../libs/child_process' -import { FileSystem } from '../libs/fs' import { Logger } from '../libs/logger' import { Program } from '../libs/program' import { chain } from '../../src/TaskEither' import { pipe } from '../../src/pipeable' import { DIST } from './constants' -interface Capabilities extends ChildProcess, Logger, FileSystem {} +interface Capabilities extends ChildProcess, Logger {} interface AppEff extends Program {} export const publish: AppEff = (C) => pipe( - C.info(`Running publish in "${DIST}" folder...`), + C.log(`Running publish in "${DIST}" folder...`), chain(() => - // C.exec('npm publish', { - C.exec('npm pack', { + C.exec('npm publish', { cwd: DIST }) ) diff --git a/scripts/libs/child_process.ts b/scripts/libs/child_process.ts index 0bc8be46d..f1a116457 100644 --- a/scripts/libs/child_process.ts +++ b/scripts/libs/child_process.ts @@ -8,10 +8,10 @@ export interface ChildProcess { export const childProcessNode: ChildProcess = { exec: (cmd, args) => () => - new Promise(resolve => { - child_process.exec(cmd, args, err => { + new Promise((resolve) => { + child_process.exec(cmd, args, (err) => { if (err !== null) { - return resolve(left(err.message)) + return resolve(left(err)) } return resolve(right(undefined)) diff --git a/scripts/libs/fs.ts b/scripts/libs/fs.ts index 36dea2004..af986ff8f 100644 --- a/scripts/libs/fs.ts +++ b/scripts/libs/fs.ts @@ -1,6 +1,5 @@ -import { mapLeft, taskify, bimap } from '../../src/TaskEither' +import { taskify, map } from '../../src/TaskEither' import { flow } from '../../src/function' -import { pipe } from '../../src/pipeable' import * as fs from 'fs' import Glob from 'glob' import { Eff } from './program' @@ -18,19 +17,18 @@ const writeFileTE = taskify(fs const copyFileTE = taskify(fs.copyFile) const globTE = taskify>(Glob) const mkdirTE = taskify(fs.mkdir) -const toError = (e: Error): string => e.message export const fsNode: FileSystem = { - readFile: (path) => pipe(readFileTE(path, 'utf8'), mapLeft(toError)), + readFile: (path) => readFileTE(path, 'utf8'), - writeFile: flow(writeFileTE, mapLeft(toError)), + writeFile: writeFileTE, - copyFile: flow(copyFileTE, mapLeft(toError)), + copyFile: copyFileTE, - glob: flow(globTE, mapLeft(toError)), + glob: globTE, mkdir: flow( mkdirTE, - bimap(toError, () => undefined) + map(() => undefined) ) } diff --git a/scripts/libs/logger.ts b/scripts/libs/logger.ts index c9d4d7036..2c64e0dea 100644 --- a/scripts/libs/logger.ts +++ b/scripts/libs/logger.ts @@ -1,16 +1,12 @@ -import chalk from 'chalk' -import { info, log } from '../../src/Console' +import { log } from '../../src/Console' import { rightIO } from '../../src/TaskEither' +import { flow } from '../../src/function' import { Eff } from './program' export interface Logger { - readonly debug: (s: string) => Eff - readonly info: (s: string) => Eff readonly log: (s: string) => Eff } export const loggerConsole: Logger = { - debug: s => rightIO(log(chalk.gray(s))), - info: s => rightIO(info(chalk.bold.magenta(s))), - log: s => rightIO(log(chalk.bold.green(s))) + log: flow(log, rightIO) } diff --git a/scripts/libs/program.ts b/scripts/libs/program.ts index b7e32d68e..bbac33d30 100644 --- a/scripts/libs/program.ts +++ b/scripts/libs/program.ts @@ -1,28 +1,25 @@ -import chalk from 'chalk' import { fold } from '../../src/Either' -import * as RTE from '../../src/ReaderTaskEither' -import * as TE from '../../src/TaskEither' +import { ReaderTaskEither } from '../../src/ReaderTaskEither' +import { TaskEither } from '../../src/TaskEither' -export interface Eff extends TE.TaskEither {} +export interface Eff extends TaskEither {} -export interface Program extends RTE.ReaderTaskEither {} - -export const toErrMsg = (e: unknown): string => (e instanceof Error ? e.message : String(e)) +export interface Program extends ReaderTaskEither {} export function run(eff: Eff): void { eff() .then( fold( - e => { + (e) => { throw e }, - _ => { + (_) => { process.exitCode = 0 } ) ) - .catch(e => { - console.error(chalk.red('[ERROR]', e)) // tslint:disable-line no-console + .catch((e) => { + console.error(e) // tslint:disable-line no-console process.exitCode = 1 }) diff --git a/scripts/pre-publish.ts b/scripts/pre-publish.ts index 9bd6cf0a4..46cd65ac4 100644 --- a/scripts/pre-publish.ts +++ b/scripts/pre-publish.ts @@ -1,6 +1,6 @@ import { left } from '../src/ReaderTaskEither' import { Program, run } from './libs/program' -const main: Program<{}, void> = left('"npm publish" can not be directly run; please use "npm run release"\n') +const main: Program<{}, void> = left(new Error('"npm publish" can not be directly run; please use "npm run release"\n')) run(main({})) diff --git a/scripts/release.ts b/scripts/release.ts index 5879e9803..f989972f6 100644 --- a/scripts/release.ts +++ b/scripts/release.ts @@ -4,6 +4,9 @@ // - in each directory put a package.json file with "name", "module" and "typings" // - finally run npm publish in dist folder +import { chain, chainW } from '../src/ReaderTaskEither' +import { pipe } from '../src/function' +import { check } from './helpers/check' import { preparePkgJson } from './helpers/prepare-pkg-json' import { prepareDist } from './helpers/prepare-dist' import { publish } from './helpers/publish-dist' @@ -11,8 +14,6 @@ import { Program, run } from './libs/program' import { ChildProcess, childProcessNode } from './libs/child_process' import { Logger, loggerConsole } from './libs/logger' import { FileSystem, fsNode } from './libs/fs' -import { chain } from '../src/ReaderTaskEither' -import { pipe } from '../src/function' interface Capabilities extends ChildProcess, Logger, FileSystem {} @@ -21,8 +22,8 @@ interface AppEff extends Program {} const main: AppEff = pipe( preparePkgJson, chain(() => prepareDist), - // add check here? - chain(() => publish) + chainW(() => check), + chainW(() => publish) ) run( diff --git a/scripts/smoke-tests/.gitignore b/scripts/smoke-tests/.gitignore new file mode 100644 index 000000000..4c43fe68f --- /dev/null +++ b/scripts/smoke-tests/.gitignore @@ -0,0 +1 @@ +*.js \ No newline at end of file diff --git a/scripts/smoke-tests/cjs.ts b/scripts/smoke-tests/cjs.ts new file mode 100644 index 000000000..22c08e631 --- /dev/null +++ b/scripts/smoke-tests/cjs.ts @@ -0,0 +1,4 @@ +import * as O from '../../dist/lib/Option' +import * as E from '../../dist/lib/Either' + +console.log(E.fromOption(() => new Error('error'))(O.some('value'))) // tslint:disable-line no-console diff --git a/scripts/smoke-tests/es6.ts b/scripts/smoke-tests/es6.ts new file mode 100644 index 000000000..1db730c80 --- /dev/null +++ b/scripts/smoke-tests/es6.ts @@ -0,0 +1,4 @@ +import * as O from '../../dist/es6/Option' +import * as E from '../../dist/lib/Either' + +console.log(E.fromOption(() => new Error('error'))(O.some('value'))) // tslint:disable-line no-console From fa2658c876c162584d663520914b41968fa2043a Mon Sep 17 00:00:00 2001 From: StefanoMagrassi <1291271+StefanoMagrassi@users.noreply.github.com> Date: Mon, 15 Jun 2020 12:39:33 +0200 Subject: [PATCH 003/106] exclude scripts/smoke-tests folder from jest --- jest.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jest.config.js b/jest.config.js index 02076e514..0b5ab1684 100644 --- a/jest.config.js +++ b/jest.config.js @@ -24,5 +24,5 @@ module.exports = { statements: 100 } }, - modulePathIgnorePatterns: ['property-test'] + modulePathIgnorePatterns: ['property-test', 'smoke-tests'] } From 277bee612e6a902a01850d1fb3e81f0ce1569333 Mon Sep 17 00:00:00 2001 From: gcanti Date: Thu, 11 Jun 2020 13:12:19 +0200 Subject: [PATCH 004/106] export unfold from Array / ReadonlyArray --- CHANGELOG.md | 8 ++++++++ docs/modules/Array.ts.md | 11 +++++++++++ docs/modules/ReadonlyArray.ts.md | 11 +++++++++++ package.json | 2 +- src/Array.ts | 6 ++++-- src/ReadonlyArray.ts | 6 ++++-- test/Array.ts | 2 +- test/ReadonlyArray.ts | 2 +- 8 files changed, 41 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2fc878315..07f57c5b2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,14 @@ high state of flux, you're at risk of it changing without notice. # 2.6.5 +- **Polish** + - `Array` + - export `unfold` (@gcanti) + - `ReadonlyArray` + - export `unfold` (@gcanti) + +# 2.6.5 + - **Polish** - export a pipeable `wither` function from all modules which admit a `Witherable` instance (@gcanti) - export a pipeable `wilt` function from all modules which admit a `Witherable` instance (@gcanti) diff --git a/docs/modules/Array.ts.md b/docs/modules/Array.ts.md index 23ec17c9d..08a877d80 100644 --- a/docs/modules/Array.ts.md +++ b/docs/modules/Array.ts.md @@ -125,6 +125,7 @@ Added in v2.0.0 - [splitAt](#splitat) - [traverse](#traverse) - [traverseWithIndex](#traversewithindex) + - [unfold](#unfold) - [unzip](#unzip) - [updateAt](#updateat) @@ -1863,6 +1864,16 @@ export declare const traverseWithIndex: PipeableTraverseWithIndex1<'Array', numb Added in v2.6.3 +## unfold + +**Signature** + +```ts +export declare const unfold: (b: B, f: (b: B) => Option) => A[] +``` + +Added in v2.6.6 + ## unzip The function is reverse of `zip`. Takes an array of pairs and return two corresponding arrays diff --git a/docs/modules/ReadonlyArray.ts.md b/docs/modules/ReadonlyArray.ts.md index 97253a636..a74b5cd21 100644 --- a/docs/modules/ReadonlyArray.ts.md +++ b/docs/modules/ReadonlyArray.ts.md @@ -126,6 +126,7 @@ Added in v2.5.0 - [takeRight](#takeright) - [traverse](#traverse) - [traverseWithIndex](#traversewithindex) + - [unfold](#unfold) - [unsafeInsertAt](#unsafeinsertat) - [unzip](#unzip) - [updateAt](#updateat) @@ -1901,6 +1902,16 @@ export declare const traverseWithIndex: PipeableTraverseWithIndex1<'ReadonlyArra Added in v2.6.3 +## unfold + +**Signature** + +```ts +export declare const unfold: (b: B, f: (b: B) => Option) => readonly A[] +``` + +Added in v2.6.6 + ## unsafeInsertAt **Signature** diff --git a/package.json b/package.json index dfc4f6433..c518c67ac 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fp-ts", - "version": "2.6.5", + "version": "2.6.6", "description": "Functional programming in TypeScript", "files": [ "lib", diff --git a/src/Array.ts b/src/Array.ts index 8fffec770..e98ebcec7 100644 --- a/src/Array.ts +++ b/src/Array.ts @@ -1202,8 +1202,10 @@ export const wither: PipeableWither1 = RA.wither as any */ export const wilt: PipeableWilt1 = RA.wilt as any -// TODO: export -// export const unfold: (b: B, f: (b: B) => Option) => Array = RA.unfold as any +/** + * @since 2.6.6 + */ +export const unfold: (b: B, f: (b: B) => Option) => Array = RA.unfold as any /** * @category instances diff --git a/src/ReadonlyArray.ts b/src/ReadonlyArray.ts index 7e0988b99..da6c8196c 100644 --- a/src/ReadonlyArray.ts +++ b/src/ReadonlyArray.ts @@ -1887,8 +1887,10 @@ export const wilt: PipeableWilt1 = ( return (f) => (ta) => wiltF(ta, f) } -// TODO: export -const unfold = (b: B, f: (b: B) => Option): ReadonlyArray => { +/** + * @since 2.6.6 + */ +export const unfold = (b: B, f: (b: B) => Option): ReadonlyArray => { // tslint:disable-next-line: readonly-array const ret: Array = [] let bb: B = b diff --git a/test/Array.ts b/test/Array.ts index bd8d42cb9..662782cd6 100644 --- a/test/Array.ts +++ b/test/Array.ts @@ -47,7 +47,7 @@ describe('Array', () => { }) it('unfold', () => { - const as = _.array.unfold(5, (n) => (n > 0 ? O.some([n, n - 1]) : O.none)) + const as = _.unfold(5, (n) => (n > 0 ? O.some([n, n - 1]) : O.none)) assert.deepStrictEqual(as, [5, 4, 3, 2, 1]) }) diff --git a/test/ReadonlyArray.ts b/test/ReadonlyArray.ts index ea948e70b..2c81f7877 100644 --- a/test/ReadonlyArray.ts +++ b/test/ReadonlyArray.ts @@ -45,7 +45,7 @@ describe('ReadonlyArray', () => { }) it('unfold', () => { - const as = _.readonlyArray.unfold(5, (n) => (n > 0 ? O.some([n, n - 1]) : O.none)) + const as = _.unfold(5, (n) => (n > 0 ? O.some([n, n - 1]) : O.none)) assert.deepStrictEqual(as, [5, 4, 3, 2, 1]) }) From 5f688c7e3f7be806a196253ef5c2dbbddb0fc52b Mon Sep 17 00:00:00 2001 From: gcanti Date: Thu, 11 Jun 2020 13:31:08 +0200 Subject: [PATCH 005/106] make Semigroup#fold data-last --- CHANGELOG.md | 2 ++ docs/modules/Semigroup.ts.md | 17 +++++++++++++++- dtslint/ts3.5/Semigroup.ts | 7 +++++++ src/Semigroup.ts | 23 +++++++++++++++++++-- test/Semigroup.ts | 39 ++++++++++++------------------------ 5 files changed, 59 insertions(+), 29 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 07f57c5b2..dea0ac3cc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,8 @@ high state of flux, you're at risk of it changing without notice. - export `unfold` (@gcanti) - `ReadonlyArray` - export `unfold` (@gcanti) + - `Semigroup` + - make `fold` data-last (@gcanti) # 2.6.5 diff --git a/docs/modules/Semigroup.ts.md b/docs/modules/Semigroup.ts.md index 41dee2042..e2f79f26b 100644 --- a/docs/modules/Semigroup.ts.md +++ b/docs/modules/Semigroup.ts.md @@ -286,7 +286,22 @@ Added in v2.0.0 **Signature** ```ts -export declare function fold(S: Semigroup): (a: A, as: ReadonlyArray) => A +export declare function fold( + S: Semigroup +): { + (a: A): (as: ReadonlyArray) => A + (a: A, as: ReadonlyArray): A +} +``` + +**Example** + +```ts +import * as S from 'fp-ts/lib/Semigroup' + +const sum = S.fold(S.semigroupSum)(0) + +assert.deepStrictEqual(sum([1, 2, 3]), 6) ``` Added in v2.0.0 diff --git a/dtslint/ts3.5/Semigroup.ts b/dtslint/ts3.5/Semigroup.ts index 185ede0ab..6a33d9f43 100644 --- a/dtslint/ts3.5/Semigroup.ts +++ b/dtslint/ts3.5/Semigroup.ts @@ -5,3 +5,10 @@ import * as _ from '../../src/Semigroup' // _.getTupleSemigroup(_.semigroupString, _.semigroupSum, _.semigroupAll) // $ExpectType Semigroup<[string, number, boolean]> + +// +// fold +// + +_.fold(_.semigroupString)('', ['a']) // $ExpectType string +_.fold(_.semigroupString)('') // $ExpectType (as: readonly string[]) => string diff --git a/src/Semigroup.ts b/src/Semigroup.ts index 7321c5bd0..a46c58abb 100644 --- a/src/Semigroup.ts +++ b/src/Semigroup.ts @@ -17,10 +17,29 @@ import { ReadonlyRecord } from './ReadonlyRecord' export interface Semigroup extends Magma {} /** + * @example + * import * as S from 'fp-ts/lib/Semigroup' + * + * const sum = S.fold(S.semigroupSum)(0) + * + * assert.deepStrictEqual(sum([1, 2, 3]), 6) + * * @since 2.0.0 */ -export function fold(S: Semigroup): (a: A, as: ReadonlyArray) => A { - return (a, as) => as.reduce(S.concat, a) +export function fold( + S: Semigroup +): { + (a: A): (as: ReadonlyArray) => A + (a: A, as: ReadonlyArray): A +} +export function fold(S: Semigroup): (a: A, as?: ReadonlyArray) => A | ((as: ReadonlyArray) => A) { + return (a, as) => { + if (as === undefined) { + return (as) => as.reduce(S.concat, a) + } else { + return as.reduce(S.concat, a) + } + } } /** diff --git a/test/Semigroup.ts b/test/Semigroup.ts index 2064e8434..848d2e075 100644 --- a/test/Semigroup.ts +++ b/test/Semigroup.ts @@ -1,40 +1,27 @@ import * as assert from 'assert' import { monoidString } from '../src/Monoid' import { ordNumber } from '../src/Ord' -import { - fold, - getFirstSemigroup, - getJoinSemigroup, - getMeetSemigroup, - getObjectSemigroup, - getTupleSemigroup, - semigroupAll, - semigroupProduct, - semigroupString, - semigroupSum, - semigroupVoid, - getDualSemigroup, - getIntercalateSemigroup -} from '../src/Semigroup' +import * as _ from '../src/Semigroup' describe('Semigroup', () => { it('getTupleSemigroup', () => { - const S1 = getTupleSemigroup(semigroupString, semigroupSum) + const S1 = _.getTupleSemigroup(_.semigroupString, _.semigroupSum) assert.deepStrictEqual(S1.concat(['a', 1], ['b', 2]), ['ab', 3]) - const S2 = getTupleSemigroup(semigroupString, semigroupSum, semigroupAll) + const S2 = _.getTupleSemigroup(_.semigroupString, _.semigroupSum, _.semigroupAll) assert.deepStrictEqual(S2.concat(['a', 1, true], ['b', 2, false]), ['ab', 3, false]) }) it('fold', () => { - assert.deepStrictEqual(fold(monoidString)('', ['a', 'b', 'c']), 'abc') + assert.deepStrictEqual(_.fold(monoidString)('', ['a', 'b', 'c']), 'abc') + assert.deepStrictEqual(_.fold(monoidString)('')(['a', 'b', 'c']), 'abc') }) it('getMeetSemigroup', () => { - assert.deepStrictEqual(getMeetSemigroup(ordNumber).concat(1, 2), 1) + assert.deepStrictEqual(_.getMeetSemigroup(ordNumber).concat(1, 2), 1) }) it('getJoinSemigroup', () => { - assert.deepStrictEqual(getJoinSemigroup(ordNumber).concat(1, 2), 2) + assert.deepStrictEqual(_.getJoinSemigroup(ordNumber).concat(1, 2), 2) }) it('getObjectSemigroup', () => { @@ -49,7 +36,7 @@ describe('Semigroup', () => { const bar: T = { bar: '123' } - const S = getObjectSemigroup() + const S = _.getObjectSemigroup() const result = S.concat(foo, bar) const expected = Object.assign({}, foo, bar) assert.deepStrictEqual(result.foo, expected.foo) @@ -57,24 +44,24 @@ describe('Semigroup', () => { }) it('semigroupProduct', () => { - assert.deepStrictEqual(semigroupProduct.concat(2, 3), 6) + assert.deepStrictEqual(_.semigroupProduct.concat(2, 3), 6) }) it('getFirstSemigroup', () => { - assert.deepStrictEqual(getFirstSemigroup().concat(1, 2), 1) + assert.deepStrictEqual(_.getFirstSemigroup().concat(1, 2), 1) }) it('semigroupVoid', () => { - assert.deepStrictEqual(semigroupVoid.concat(undefined, undefined), undefined) + assert.deepStrictEqual(_.semigroupVoid.concat(undefined, undefined), undefined) }) it('getDualSemigroup', () => { - const S = getDualSemigroup(semigroupString) + const S = _.getDualSemigroup(_.semigroupString) assert.deepStrictEqual(S.concat('a', 'b'), 'ba') }) it('getIntercalateSemigroup', () => { - const S = getIntercalateSemigroup(' ')(semigroupString) + const S = _.getIntercalateSemigroup(' ')(_.semigroupString) assert.strictEqual(S.concat('a', 'b'), 'a b') assert.strictEqual(S.concat(S.concat('a', 'b'), 'c'), S.concat('a', S.concat('b', 'c'))) }) From f617acdecfc4e6240c624bb7137a4be3d1153216 Mon Sep 17 00:00:00 2001 From: gcanti Date: Thu, 11 Jun 2020 13:40:55 +0200 Subject: [PATCH 006/106] make Array#lookup / ReadonlyArray#lookup data-last --- CHANGELOG.md | 2 ++ docs/modules/Array.ts.md | 7 ++++--- docs/modules/ReadonlyArray.ts.md | 6 ++++-- dtslint/ts3.5/Array.ts | 7 +++++++ dtslint/ts3.5/ReadonlyArray.ts | 7 +++++++ src/Array.ts | 10 +++++++--- src/ReadonlyArray.ts | 11 +++++++---- test/Array.ts | 7 +++++++ test/ReadonlyArray.ts | 7 +++++++ 9 files changed, 52 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dea0ac3cc..5120bebc2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,8 +19,10 @@ high state of flux, you're at risk of it changing without notice. - **Polish** - `Array` - export `unfold` (@gcanti) + - make `lookup` data-last (@gcanti) - `ReadonlyArray` - export `unfold` (@gcanti) + - make `lookup` data-last (@gcanti) - `Semigroup` - make `fold` data-last (@gcanti) diff --git a/docs/modules/Array.ts.md b/docs/modules/Array.ts.md index 08a877d80..5db3f24e1 100644 --- a/docs/modules/Array.ts.md +++ b/docs/modules/Array.ts.md @@ -1772,7 +1772,7 @@ This function provides a safe way to read a value at a particular index from an **Signature** ```ts -export declare const lookup: (i: number, as: A[]) => Option +export declare const lookup: { (i: number): (as: A[]) => Option; (i: number, as: A[]): Option } ``` **Example** @@ -1780,9 +1780,10 @@ export declare const lookup: (i: number, as: A[]) => Option ```ts import { lookup } from 'fp-ts/lib/Array' import { some, none } from 'fp-ts/lib/Option' +import { pipe } from 'fp-ts/lib/function' -assert.deepStrictEqual(lookup(1, [1, 2, 3]), some(2)) -assert.deepStrictEqual(lookup(3, [1, 2, 3]), none) +assert.deepStrictEqual(pipe([1, 2, 3], lookup(1)), some(2)) +assert.deepStrictEqual(pipe([1, 2, 3], lookup(3)), none) ``` Added in v2.0.0 diff --git a/docs/modules/ReadonlyArray.ts.md b/docs/modules/ReadonlyArray.ts.md index a74b5cd21..277e0ddfc 100644 --- a/docs/modules/ReadonlyArray.ts.md +++ b/docs/modules/ReadonlyArray.ts.md @@ -1733,6 +1733,7 @@ This function provides a safe way to read a value at a particular index from an **Signature** ```ts +export declare function lookup(i: number): (as: ReadonlyArray) => Option export declare function lookup(i: number, as: ReadonlyArray): Option ``` @@ -1741,9 +1742,10 @@ export declare function lookup(i: number, as: ReadonlyArray): Option ```ts import { lookup } from 'fp-ts/lib/ReadonlyArray' import { some, none } from 'fp-ts/lib/Option' +import { pipe } from 'fp-ts/lib/function' -assert.deepStrictEqual(lookup(1, [1, 2, 3]), some(2)) -assert.deepStrictEqual(lookup(3, [1, 2, 3]), none) +assert.deepStrictEqual(pipe([1, 2, 3], lookup(1)), some(2)) +assert.deepStrictEqual(pipe([1, 2, 3], lookup(3)), none) ``` Added in v2.5.0 diff --git a/dtslint/ts3.5/Array.ts b/dtslint/ts3.5/Array.ts index f0767f5fe..66f0d8586 100644 --- a/dtslint/ts3.5/Array.ts +++ b/dtslint/ts3.5/Array.ts @@ -83,3 +83,10 @@ pipe( us, _.spanLeft((u: unknown): u is number => typeof u === 'number') ) + +// +// lookup +// + +_.lookup(0, [1, 2, 3]) // $ExpectType Option +_.lookup(0) // $ExpectType (as: A[]) => Option diff --git a/dtslint/ts3.5/ReadonlyArray.ts b/dtslint/ts3.5/ReadonlyArray.ts index 1af40c9a8..bf1e2918c 100644 --- a/dtslint/ts3.5/ReadonlyArray.ts +++ b/dtslint/ts3.5/ReadonlyArray.ts @@ -74,3 +74,10 @@ pipe( rus, _.spanLeft((u: unknown): u is number => typeof u === 'number') ) + +// +// lookup +// + +_.lookup(0, [1, 2, 3]) // $ExpectType Option +_.lookup(0) // $ExpectType (as: readonly A[]) => Option diff --git a/src/Array.ts b/src/Array.ts index e98ebcec7..25c305d23 100644 --- a/src/Array.ts +++ b/src/Array.ts @@ -242,13 +242,17 @@ export const isOutOfBound: (i: number, as: Array) => boolean = RA.isOutOfB * @example * import { lookup } from 'fp-ts/lib/Array' * import { some, none } from 'fp-ts/lib/Option' + * import { pipe } from 'fp-ts/lib/function' * - * assert.deepStrictEqual(lookup(1, [1, 2, 3]), some(2)) - * assert.deepStrictEqual(lookup(3, [1, 2, 3]), none) + * assert.deepStrictEqual(pipe([1, 2, 3], lookup(1)), some(2)) + * assert.deepStrictEqual(pipe([1, 2, 3], lookup(3)), none) * * @since 2.0.0 */ -export const lookup: (i: number, as: Array) => Option = RA.lookup +export const lookup: { + (i: number): (as: Array) => Option + (i: number, as: Array): Option +} = RA.lookup /** * Attaches an element to the front of an array, creating a new non empty array diff --git a/src/ReadonlyArray.ts b/src/ReadonlyArray.ts index da6c8196c..198dc5b64 100644 --- a/src/ReadonlyArray.ts +++ b/src/ReadonlyArray.ts @@ -376,14 +376,17 @@ export function isOutOfBound(i: number, as: ReadonlyArray): boolean { * @example * import { lookup } from 'fp-ts/lib/ReadonlyArray' * import { some, none } from 'fp-ts/lib/Option' + * import { pipe } from 'fp-ts/lib/function' * - * assert.deepStrictEqual(lookup(1, [1, 2, 3]), some(2)) - * assert.deepStrictEqual(lookup(3, [1, 2, 3]), none) + * assert.deepStrictEqual(pipe([1, 2, 3], lookup(1)), some(2)) + * assert.deepStrictEqual(pipe([1, 2, 3], lookup(3)), none) * * @since 2.5.0 */ -export function lookup(i: number, as: ReadonlyArray): Option { - return isOutOfBound(i, as) ? none : some(as[i]) +export function lookup(i: number): (as: ReadonlyArray) => Option +export function lookup(i: number, as: ReadonlyArray): Option +export function lookup(i: number, as?: ReadonlyArray): Option | ((as: ReadonlyArray) => Option) { + return as === undefined ? (as) => lookup(i, as) : isOutOfBound(i, as) ? none : some(as[i]) } /** diff --git a/test/Array.ts b/test/Array.ts index 662782cd6..72f0874d1 100644 --- a/test/Array.ts +++ b/test/Array.ts @@ -46,6 +46,13 @@ describe('Array', () => { ) }) + it('lookup', () => { + assert.deepStrictEqual(_.lookup(0, [1, 2, 3]), O.some(1)) + assert.deepStrictEqual(_.lookup(3, [1, 2, 3]), O.none) + assert.deepStrictEqual(pipe([1, 2, 3], _.lookup(0)), O.some(1)) + assert.deepStrictEqual(pipe([1, 2, 3], _.lookup(3)), O.none) + }) + it('unfold', () => { const as = _.unfold(5, (n) => (n > 0 ? O.some([n, n - 1]) : O.none)) assert.deepStrictEqual(as, [5, 4, 3, 2, 1]) diff --git a/test/ReadonlyArray.ts b/test/ReadonlyArray.ts index 2c81f7877..319706d10 100644 --- a/test/ReadonlyArray.ts +++ b/test/ReadonlyArray.ts @@ -44,6 +44,13 @@ describe('ReadonlyArray', () => { ) }) + it('lookup', () => { + assert.deepStrictEqual(_.lookup(0, [1, 2, 3]), O.some(1)) + assert.deepStrictEqual(_.lookup(3, [1, 2, 3]), O.none) + assert.deepStrictEqual(pipe([1, 2, 3], _.lookup(0)), O.some(1)) + assert.deepStrictEqual(pipe([1, 2, 3], _.lookup(3)), O.none) + }) + it('unfold', () => { const as = _.unfold(5, (n) => (n > 0 ? O.some([n, n - 1]) : O.none)) assert.deepStrictEqual(as, [5, 4, 3, 2, 1]) From f9b27132685139de02864977f9134fd19e867bb7 Mon Sep 17 00:00:00 2001 From: gcanti Date: Thu, 11 Jun 2020 14:51:16 +0200 Subject: [PATCH 007/106] make Array#elem / ReadonlyArray#elem data-last --- CHANGELOG.md | 2 ++ docs/modules/Array.ts.md | 7 ++++--- docs/modules/ReadonlyArray.ts.md | 12 ++++++++--- dtslint/ts3.5/Array.ts | 8 ++++++++ dtslint/ts3.5/ReadonlyArray.ts | 8 ++++++++ src/Array.ts | 12 ++++++++--- src/ReadonlyArray.ts | 34 +++++++++++++++++++++----------- test/Array.ts | 7 +++++++ test/ReadonlyArray.ts | 7 +++++++ 9 files changed, 76 insertions(+), 21 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5120bebc2..fe1c150b2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,9 +20,11 @@ high state of flux, you're at risk of it changing without notice. - `Array` - export `unfold` (@gcanti) - make `lookup` data-last (@gcanti) + - make `elem` data-last (@gcanti) - `ReadonlyArray` - export `unfold` (@gcanti) - make `lookup` data-last (@gcanti) + - make `elem` data-last (@gcanti) - `Semigroup` - make `fold` data-last (@gcanti) diff --git a/docs/modules/Array.ts.md b/docs/modules/Array.ts.md index 5db3f24e1..6e0658a6a 100644 --- a/docs/modules/Array.ts.md +++ b/docs/modules/Array.ts.md @@ -1633,7 +1633,7 @@ an array of type `Array`. **Signature** ```ts -export declare const elem: (E: Eq) => (a: A, as: A[]) => boolean +export declare const elem: (E: Eq) => { (a: A): (as: A[]) => boolean; (a: A, as: A[]): boolean } ``` **Example** @@ -1641,9 +1641,10 @@ export declare const elem: (E: Eq) => (a: A, as: A[]) => boolean ```ts import { elem } from 'fp-ts/lib/Array' import { eqNumber } from 'fp-ts/lib/Eq' +import { pipe } from 'fp-ts/lib/function' -assert.strictEqual(elem(eqNumber)(1, [1, 2, 3]), true) -assert.strictEqual(elem(eqNumber)(4, [1, 2, 3]), false) +assert.strictEqual(pipe([1, 2, 3], elem(eqNumber)(2)), true) +assert.strictEqual(pipe([1, 2, 3], elem(eqNumber)(0)), false) ``` Added in v2.0.0 diff --git a/docs/modules/ReadonlyArray.ts.md b/docs/modules/ReadonlyArray.ts.md index 277e0ddfc..9c8379cc1 100644 --- a/docs/modules/ReadonlyArray.ts.md +++ b/docs/modules/ReadonlyArray.ts.md @@ -1393,7 +1393,12 @@ an array of type `ReadonlyArray`. **Signature** ```ts -export declare function elem(E: Eq): (a: A, as: ReadonlyArray) => boolean +export declare function elem( + E: Eq +): { + (a: A): (as: ReadonlyArray) => boolean + (a: A, as: ReadonlyArray): boolean +} ``` **Example** @@ -1401,9 +1406,10 @@ export declare function elem(E: Eq): (a: A, as: ReadonlyArray) => boole ```ts import { elem } from 'fp-ts/lib/ReadonlyArray' import { eqNumber } from 'fp-ts/lib/Eq' +import { pipe } from 'fp-ts/lib/function' -assert.strictEqual(elem(eqNumber)(1, [1, 2, 3]), true) -assert.strictEqual(elem(eqNumber)(4, [1, 2, 3]), false) +assert.strictEqual(pipe([1, 2, 3], elem(eqNumber)(2)), true) +assert.strictEqual(pipe([1, 2, 3], elem(eqNumber)(0)), false) ``` Added in v2.5.0 diff --git a/dtslint/ts3.5/Array.ts b/dtslint/ts3.5/Array.ts index 66f0d8586..27cb132d1 100644 --- a/dtslint/ts3.5/Array.ts +++ b/dtslint/ts3.5/Array.ts @@ -1,5 +1,6 @@ import * as _ from '../../src/Array' import { pipe } from '../../src/pipeable' +import { eqNumber } from '../../src/Eq' declare const us: Array declare const ns: Array @@ -90,3 +91,10 @@ pipe( _.lookup(0, [1, 2, 3]) // $ExpectType Option _.lookup(0) // $ExpectType (as: A[]) => Option + +// +// elem +// + +_.elem(eqNumber)(1, [1, 2, 3]) // $ExpectType boolean +_.elem(eqNumber)(1) // $ExpectType (as: number[]) => boolean diff --git a/dtslint/ts3.5/ReadonlyArray.ts b/dtslint/ts3.5/ReadonlyArray.ts index bf1e2918c..027aeba81 100644 --- a/dtslint/ts3.5/ReadonlyArray.ts +++ b/dtslint/ts3.5/ReadonlyArray.ts @@ -1,5 +1,6 @@ import * as _ from '../../src/ReadonlyArray' import { pipe } from '../../src/pipeable' +import { eqNumber } from '../../src/Eq' declare const rus: ReadonlyArray declare const rns: ReadonlyArray @@ -81,3 +82,10 @@ pipe( _.lookup(0, [1, 2, 3]) // $ExpectType Option _.lookup(0) // $ExpectType (as: readonly A[]) => Option + +// +// elem +// + +_.elem(eqNumber)(1, [1, 2, 3]) // $ExpectType boolean +_.elem(eqNumber)(1) // $ExpectType (as: readonly number[]) => boolean diff --git a/src/Array.ts b/src/Array.ts index 25c305d23..d991c6970 100644 --- a/src/Array.ts +++ b/src/Array.ts @@ -757,13 +757,19 @@ export const rotate: (n: number) => (as: Array) => Array = RA.rotate as * @example * import { elem } from 'fp-ts/lib/Array' * import { eqNumber } from 'fp-ts/lib/Eq' + * import { pipe } from 'fp-ts/lib/function' * - * assert.strictEqual(elem(eqNumber)(1, [1, 2, 3]), true) - * assert.strictEqual(elem(eqNumber)(4, [1, 2, 3]), false) + * assert.strictEqual(pipe([1, 2, 3], elem(eqNumber)(2)), true) + * assert.strictEqual(pipe([1, 2, 3], elem(eqNumber)(0)), false) * * @since 2.0.0 */ -export const elem: (E: Eq) => (a: A, as: Array) => boolean = RA.elem +export const elem: ( + E: Eq +) => { + (a: A): (as: Array) => boolean + (a: A, as: Array): boolean +} = RA.elem /** * Remove duplicates from an array, keeping the first occurrence of an element. diff --git a/src/ReadonlyArray.ts b/src/ReadonlyArray.ts index 198dc5b64..2ad81849d 100644 --- a/src/ReadonlyArray.ts +++ b/src/ReadonlyArray.ts @@ -854,7 +854,6 @@ export function unsafeUpdateAt(i: number, a: A, as: ReadonlyArray): Readon if (as[i] === a) { return as } else { - // tslint:disable-next-line: readonly-array const xs = as.slice() xs[i] = a return xs @@ -882,7 +881,6 @@ export function updateAt(i: number, a: A): (as: ReadonlyArray) => Option(i: number, as: ReadonlyArray): ReadonlyArray { - // tslint:disable-next-line: readonly-array const xs = as.slice() xs.splice(i, 1) return xs @@ -1096,23 +1094,35 @@ export function rotate(n: number): (as: ReadonlyArray) => ReadonlyArray * @example * import { elem } from 'fp-ts/lib/ReadonlyArray' * import { eqNumber } from 'fp-ts/lib/Eq' + * import { pipe } from 'fp-ts/lib/function' * - * assert.strictEqual(elem(eqNumber)(1, [1, 2, 3]), true) - * assert.strictEqual(elem(eqNumber)(4, [1, 2, 3]), false) + * assert.strictEqual(pipe([1, 2, 3], elem(eqNumber)(2)), true) + * assert.strictEqual(pipe([1, 2, 3], elem(eqNumber)(0)), false) * * @since 2.5.0 */ -export function elem(E: Eq): (a: A, as: ReadonlyArray) => boolean { +export function elem( + E: Eq +): { + (a: A): (as: ReadonlyArray) => boolean + (a: A, as: ReadonlyArray): boolean +} +export function elem(E: Eq): (a: A, as?: ReadonlyArray) => boolean | ((as: ReadonlyArray) => boolean) { return (a, as) => { - const predicate = (element: A) => E.equals(element, a) - let i = 0 - const len = as.length - for (; i < len; i++) { - if (predicate(as[i])) { - return true + if (as === undefined) { + const elemE = elem(E) + return (as) => elemE(a, as) + } else { + const predicate = (element: A) => E.equals(element, a) + let i = 0 + const len = as.length + for (; i < len; i++) { + if (predicate(as[i])) { + return true + } } + return false } - return false } } diff --git a/test/Array.ts b/test/Array.ts index 72f0874d1..9aef77cc9 100644 --- a/test/Array.ts +++ b/test/Array.ts @@ -53,6 +53,13 @@ describe('Array', () => { assert.deepStrictEqual(pipe([1, 2, 3], _.lookup(3)), O.none) }) + it('elem', () => { + assert.deepStrictEqual(_.elem(Eq.eqNumber)(2, [1, 2, 3]), true) + assert.deepStrictEqual(_.elem(Eq.eqNumber)(0, [1, 2, 3]), false) + assert.deepStrictEqual(pipe([1, 2, 3], _.elem(Eq.eqNumber)(2)), true) + assert.deepStrictEqual(pipe([1, 2, 3], _.elem(Eq.eqNumber)(0)), false) + }) + it('unfold', () => { const as = _.unfold(5, (n) => (n > 0 ? O.some([n, n - 1]) : O.none)) assert.deepStrictEqual(as, [5, 4, 3, 2, 1]) diff --git a/test/ReadonlyArray.ts b/test/ReadonlyArray.ts index 319706d10..f3ccf4c94 100644 --- a/test/ReadonlyArray.ts +++ b/test/ReadonlyArray.ts @@ -51,6 +51,13 @@ describe('ReadonlyArray', () => { assert.deepStrictEqual(pipe([1, 2, 3], _.lookup(3)), O.none) }) + it('elem', () => { + assert.deepStrictEqual(_.elem(Eq.eqNumber)(2, [1, 2, 3]), true) + assert.deepStrictEqual(_.elem(Eq.eqNumber)(0, [1, 2, 3]), false) + assert.deepStrictEqual(pipe([1, 2, 3], _.elem(Eq.eqNumber)(2)), true) + assert.deepStrictEqual(pipe([1, 2, 3], _.elem(Eq.eqNumber)(0)), false) + }) + it('unfold', () => { const as = _.unfold(5, (n) => (n > 0 ? O.some([n, n - 1]) : O.none)) assert.deepStrictEqual(as, [5, 4, 3, 2, 1]) From 488bf3d335c6d54b4e4801b7c3cc747ec0617434 Mon Sep 17 00:00:00 2001 From: gcanti Date: Thu, 11 Jun 2020 15:00:29 +0200 Subject: [PATCH 008/106] Docs: add unsafe section --- docs/modules/Array.ts.md | 69 ++++++++++++------------ docs/modules/ReadonlyArray.ts.md | 69 ++++++++++++------------ src/Array.ts | 62 ++++++++++++---------- src/ReadonlyArray.ts | 91 ++++++++++++++++++-------------- 4 files changed, 155 insertions(+), 136 deletions(-) diff --git a/docs/modules/Array.ts.md b/docs/modules/Array.ts.md index 6e0658a6a..5d9734121 100644 --- a/docs/modules/Array.ts.md +++ b/docs/modules/Array.ts.md @@ -74,9 +74,6 @@ Added in v2.0.0 - [takeRight](#takeright) - [union](#union) - [uniq](#uniq) - - [unsafeDeleteAt](#unsafedeleteat) - - [unsafeInsertAt](#unsafeinsertat) - - [unsafeUpdateAt](#unsafeupdateat) - [zip](#zip) - [zipWith](#zipwith) - [constructors](#constructors) @@ -108,6 +105,10 @@ Added in v2.0.0 - [getMonoid](#getmonoid) - [getOrd](#getord) - [getShow](#getshow) +- [unsafe](#unsafe) + - [unsafeDeleteAt](#unsafedeleteat) + - [unsafeInsertAt](#unsafeinsertat) + - [unsafeUpdateAt](#unsafeupdateat) - [utils](#utils) - [chunksOf](#chunksof) - [comprehension](#comprehension) @@ -919,36 +920,6 @@ assert.deepStrictEqual(uniq(eqNumber)([1, 2, 1]), [1, 2]) Added in v2.0.0 -## unsafeDeleteAt - -**Signature** - -```ts -export declare const unsafeDeleteAt: (i: number, as: A[]) => A[] -``` - -Added in v2.0.0 - -## unsafeInsertAt - -**Signature** - -```ts -export declare const unsafeInsertAt: (i: number, a: A, as: A[]) => A[] -``` - -Added in v2.0.0 - -## unsafeUpdateAt - -**Signature** - -```ts -export declare const unsafeUpdateAt: (i: number, a: A, as: A[]) => A[] -``` - -Added in v2.0.0 - ## zip Takes two arrays and returns an array of corresponding pairs. If one input array is short, excess elements of the @@ -1516,6 +1487,38 @@ export declare const getShow: (S: Show) => Show Added in v2.0.0 +# unsafe + +## unsafeDeleteAt + +**Signature** + +```ts +export declare const unsafeDeleteAt: (i: number, as: A[]) => A[] +``` + +Added in v2.0.0 + +## unsafeInsertAt + +**Signature** + +```ts +export declare const unsafeInsertAt: (i: number, a: A, as: A[]) => A[] +``` + +Added in v2.0.0 + +## unsafeUpdateAt + +**Signature** + +```ts +export declare const unsafeUpdateAt: (i: number, a: A, as: A[]) => A[] +``` + +Added in v2.0.0 + # utils ## chunksOf diff --git a/docs/modules/ReadonlyArray.ts.md b/docs/modules/ReadonlyArray.ts.md index 9c8379cc1..bbdc1406e 100644 --- a/docs/modules/ReadonlyArray.ts.md +++ b/docs/modules/ReadonlyArray.ts.md @@ -71,8 +71,6 @@ Added in v2.5.0 - [takeLeftWhile](#takeleftwhile) - [union](#union) - [uniq](#uniq) - - [unsafeDeleteAt](#unsafedeleteat) - - [unsafeUpdateAt](#unsafeupdateat) - [zip](#zip) - [zipWith](#zipwith) - [constructors](#constructors) @@ -96,6 +94,10 @@ Added in v2.5.0 - [getOrd](#getord) - [getShow](#getshow) - [readonlyArray](#readonlyarray) +- [unsafe](#unsafe) + - [unsafeDeleteAt](#unsafedeleteat) + - [unsafeInsertAt](#unsafeinsertat) + - [unsafeUpdateAt](#unsafeupdateat) - [utils](#utils) - [Spanned (interface)](#spanned-interface) - [chunksOf](#chunksof) @@ -127,7 +129,6 @@ Added in v2.5.0 - [traverse](#traverse) - [traverseWithIndex](#traversewithindex) - [unfold](#unfold) - - [unsafeInsertAt](#unsafeinsertat) - [unzip](#unzip) - [updateAt](#updateat) @@ -877,26 +878,6 @@ assert.deepStrictEqual(uniq(eqNumber)([1, 2, 1]), [1, 2]) Added in v2.5.0 -## unsafeDeleteAt - -**Signature** - -```ts -export declare function unsafeDeleteAt(i: number, as: ReadonlyArray): ReadonlyArray -``` - -Added in v2.5.0 - -## unsafeUpdateAt - -**Signature** - -```ts -export declare function unsafeUpdateAt(i: number, a: A, as: ReadonlyArray): ReadonlyArray -``` - -Added in v2.5.0 - ## zip Takes two arrays and returns an array of corresponding pairs. If one input array is short, excess elements of the @@ -1255,6 +1236,38 @@ export declare const readonlyArray: Monad1<'ReadonlyArray'> & Added in v2.5.0 +# unsafe + +## unsafeDeleteAt + +**Signature** + +```ts +export declare function unsafeDeleteAt(i: number, as: ReadonlyArray): ReadonlyArray +``` + +Added in v2.5.0 + +## unsafeInsertAt + +**Signature** + +```ts +export declare function unsafeInsertAt(i: number, a: A, as: ReadonlyArray): ReadonlyArray +``` + +Added in v2.5.0 + +## unsafeUpdateAt + +**Signature** + +```ts +export declare function unsafeUpdateAt(i: number, a: A, as: ReadonlyArray): ReadonlyArray +``` + +Added in v2.5.0 + # utils ## Spanned (interface) @@ -1920,16 +1933,6 @@ export declare const unfold: (b: B, f: (b: B) => Option) Added in v2.6.6 -## unsafeInsertAt - -**Signature** - -```ts -export declare function unsafeInsertAt(i: number, a: A, as: ReadonlyArray): ReadonlyArray -``` - -Added in v2.5.0 - ## unzip The function is reverse of `zip`. Takes an array of pairs and return two corresponding arrays diff --git a/src/Array.ts b/src/Array.ts index d991c6970..949fd3817 100644 --- a/src/Array.ts +++ b/src/Array.ts @@ -87,17 +87,6 @@ export const getEq: (E: Eq) => Eq> = RA.getEq */ export const getOrd: (O: Ord) => Ord> = RA.getOrd -// ------------------------------------------------------------------------------------- -// utils -// ------------------------------------------------------------------------------------- - -/** - * An empty array - * - * @since 2.0.0 - */ -export const empty: Array = [] - // ------------------------------------------------------------------------------------- // constructors // ------------------------------------------------------------------------------------- @@ -566,12 +555,6 @@ export const findLastIndex: (predicate: Predicate) => (as: Array) => Op */ export const copy: (as: Array) => Array = RA.toArray -/** - * @category combinators - * @since 2.0.0 - */ -export const unsafeInsertAt: (i: number, a: A, as: Array) => Array = RA.unsafeInsertAt as any - /** * Insert an element at the specified index, creating a new array, or returning `None` if the index is out of bounds * @@ -585,12 +568,6 @@ export const unsafeInsertAt: (i: number, a: A, as: Array) => Array = RA */ export const insertAt: (i: number, a: A) => (as: Array) => Option> = RA.insertAt as any -/** - * @category combinators - * @since 2.0.0 - */ -export const unsafeUpdateAt: (i: number, a: A, as: Array) => Array = RA.unsafeUpdateAt as any - /** * Change the element at the specified index, creating a new array, or returning `None` if the index is out of bounds * @@ -605,12 +582,6 @@ export const unsafeUpdateAt: (i: number, a: A, as: Array) => Array = RA */ export const updateAt: (i: number, a: A) => (as: Array) => Option> = RA.updateAt as any -/** - * @category combinators - * @since 2.0.0 - */ -export const unsafeDeleteAt: (i: number, as: Array) => Array = RA.unsafeDeleteAt as any - /** * Delete the element at the specified index, creating a new array, or returning `None` if the index is out of bounds * @@ -1236,3 +1207,36 @@ export const array: Monad1 & (() => { return Object.assign({}, RA.readonlyArray as any, { URI }) })() + +// ------------------------------------------------------------------------------------- +// unsafe +// ------------------------------------------------------------------------------------- + +/** + * @category unsafe + * @since 2.0.0 + */ +export const unsafeInsertAt: (i: number, a: A, as: Array) => Array = RA.unsafeInsertAt as any + +/** + * @category unsafe + * @since 2.0.0 + */ +export const unsafeUpdateAt: (i: number, a: A, as: Array) => Array = RA.unsafeUpdateAt as any + +/** + * @category unsafe + * @since 2.0.0 + */ +export const unsafeDeleteAt: (i: number, as: Array) => Array = RA.unsafeDeleteAt as any + +// ------------------------------------------------------------------------------------- +// utils +// ------------------------------------------------------------------------------------- + +/** + * An empty array + * + * @since 2.0.0 + */ +export const empty: Array = [] diff --git a/src/ReadonlyArray.ts b/src/ReadonlyArray.ts index 2ad81849d..420cd3689 100644 --- a/src/ReadonlyArray.ts +++ b/src/ReadonlyArray.ts @@ -168,13 +168,6 @@ export function getOrd(O: Ord): Ord> { }) } -/** - * An empty array - * - * @since 2.5.0 - */ -export const empty: ReadonlyArray = [] - /** * Return a list of length `n` with element `i` initialized with `f(i)` * @@ -821,16 +814,6 @@ export function findLastIndex(predicate: Predicate): (as: ReadonlyArray } } -/** - * @since 2.5.0 - */ -export function unsafeInsertAt(i: number, a: A, as: ReadonlyArray): ReadonlyArray { - // tslint:disable-next-line: readonly-array - const xs = as.slice() - xs.splice(i, 0, a) - return xs -} - /** * Insert an element at the specified index, creating a new array, or returning `None` if the index is out of bounds * @@ -846,20 +829,6 @@ export function insertAt(i: number, a: A): (as: ReadonlyArray) => Option (i < 0 || i > as.length ? none : some(unsafeInsertAt(i, a, as))) } -/** - * @category combinators - * @since 2.5.0 - */ -export function unsafeUpdateAt(i: number, a: A, as: ReadonlyArray): ReadonlyArray { - if (as[i] === a) { - return as - } else { - const xs = as.slice() - xs[i] = a - return xs - } -} - /** * Change the element at the specified index, creating a new array, or returning `None` if the index is out of bounds * @@ -876,16 +845,6 @@ export function updateAt(i: number, a: A): (as: ReadonlyArray) => Option (isOutOfBound(i, as) ? none : some(unsafeUpdateAt(i, a, as))) } -/** - * @category combinators - * @since 2.5.0 - */ -export function unsafeDeleteAt(i: number, as: ReadonlyArray): ReadonlyArray { - const xs = as.slice() - xs.splice(i, 1) - return xs -} - /** * Delete the element at the specified index, creating a new array, or returning `None` if the index is out of bounds * @@ -1966,3 +1925,53 @@ export const readonlyArray: Monad1 & wither: wither_, wilt: wilt_ } + +// ------------------------------------------------------------------------------------- +// unsafe +// ------------------------------------------------------------------------------------- + +/** + * @category unsafe + * @since 2.5.0 + */ +export function unsafeInsertAt(i: number, a: A, as: ReadonlyArray): ReadonlyArray { + // tslint:disable-next-line: readonly-array + const xs = as.slice() + xs.splice(i, 0, a) + return xs +} + +/** + * @category unsafe + * @since 2.5.0 + */ +export function unsafeUpdateAt(i: number, a: A, as: ReadonlyArray): ReadonlyArray { + if (as[i] === a) { + return as + } else { + const xs = as.slice() + xs[i] = a + return xs + } +} + +/** + * @category unsafe + * @since 2.5.0 + */ +export function unsafeDeleteAt(i: number, as: ReadonlyArray): ReadonlyArray { + const xs = as.slice() + xs.splice(i, 1) + return xs +} + +// ------------------------------------------------------------------------------------- +// utils +// ------------------------------------------------------------------------------------- + +/** + * An empty array + * + * @since 2.5.0 + */ +export const empty: ReadonlyArray = [] From a96740405e56dbfc83551150c16e5ec4586c49ab Mon Sep 17 00:00:00 2001 From: gcanti Date: Thu, 11 Jun 2020 15:18:10 +0200 Subject: [PATCH 009/106] optimize sort and reverse for empty arrays --- src/ReadonlyArray.ts | 6 ++++-- test/ReadonlyArray.ts | 6 ++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/ReadonlyArray.ts b/src/ReadonlyArray.ts index 420cd3689..a3548a823 100644 --- a/src/ReadonlyArray.ts +++ b/src/ReadonlyArray.ts @@ -891,6 +891,9 @@ export function modifyAt(i: number, f: (a: A) => A): (as: ReadonlyArray) = * @since 2.5.0 */ export function reverse(as: ReadonlyArray): ReadonlyArray { + if (isEmpty(as)) { + return as + } return as.slice().reverse() } @@ -956,7 +959,7 @@ export function lefts(as: ReadonlyArray>): ReadonlyArray { * @since 2.5.0 */ export function sort(O: Ord): (as: ReadonlyArray) => ReadonlyArray { - return (as) => as.slice().sort(O.compare) + return (as) => (isEmpty(as) ? as : as.slice().sort(O.compare)) } /** @@ -1935,7 +1938,6 @@ export const readonlyArray: Monad1 & * @since 2.5.0 */ export function unsafeInsertAt(i: number, a: A, as: ReadonlyArray): ReadonlyArray { - // tslint:disable-next-line: readonly-array const xs = as.slice() xs.splice(i, 0, a) return xs diff --git a/test/ReadonlyArray.ts b/test/ReadonlyArray.ts index f3ccf4c94..eebb3861a 100644 --- a/test/ReadonlyArray.ts +++ b/test/ReadonlyArray.ts @@ -586,6 +586,7 @@ describe('ReadonlyArray', () => { it('sort', () => { assert.deepStrictEqual(_.sort(Ord.ordNumber)([3, 2, 1]), [1, 2, 3]) + assert.strictEqual(_.sort(Ord.ordNumber)(_.empty), _.empty) }) it('zipWith', () => { @@ -645,6 +646,7 @@ describe('ReadonlyArray', () => { it('reverse', () => { assert.deepStrictEqual(_.reverse([1, 2, 3]), [3, 2, 1]) + assert.strictEqual(_.reverse(_.empty), _.empty) }) it('foldLeft', () => { @@ -915,4 +917,8 @@ describe('ReadonlyArray', () => { assert.deepStrictEqual(bs, as) assert.notStrictEqual(bs, as) }) + + it('empty', () => { + assert.deepStrictEqual(_.empty.length, 0) + }) }) From 16b3e25c6d9259c1e30cc8da959ddc58ac06300f Mon Sep 17 00:00:00 2001 From: gcanti Date: Thu, 11 Jun 2020 16:24:49 +0200 Subject: [PATCH 010/106] Docs: add missing categories --- docs/modules/Array.ts.md | 72 +++++++++++++++-------------- docs/modules/ReadonlyArray.ts.md | 78 +++++++++++++++++--------------- src/Array.ts | 3 ++ src/ReadonlyArray.ts | 27 +++++------ 4 files changed, 98 insertions(+), 82 deletions(-) diff --git a/docs/modules/Array.ts.md b/docs/modules/Array.ts.md index 5d9734121..0791f53f5 100644 --- a/docs/modules/Array.ts.md +++ b/docs/modules/Array.ts.md @@ -50,6 +50,11 @@ Added in v2.0.0 - [chain](#chain) - [chainFirst](#chainfirst) - [flatten](#flatten) +- [Traversable](#traversable) + - [sequence](#sequence) + - [traverse](#traverse) +- [TraversableWithIndex](#traversablewithindex) + - [traverseWithIndex](#traversewithindex) - [Whitherable](#whitherable) - [wilt](#wilt) - [wither](#wither) @@ -122,10 +127,7 @@ Added in v2.0.0 - [isOutOfBound](#isoutofbound) - [lookup](#lookup) - [modifyAt](#modifyat) - - [sequence](#sequence) - [splitAt](#splitat) - - [traverse](#traverse) - - [traverseWithIndex](#traversewithindex) - [unfold](#unfold) - [unzip](#unzip) - [updateAt](#updateat) @@ -465,6 +467,40 @@ assert.deepStrictEqual(flatten([[1], [2], [3]]), [1, 2, 3]) Added in v2.0.0 +# Traversable + +## sequence + +**Signature** + +```ts +export declare const sequence: Sequence1<'Array'> +``` + +Added in v2.6.3 + +## traverse + +**Signature** + +```ts +export declare const traverse: PipeableTraverse1<'Array'> +``` + +Added in v2.6.3 + +# TraversableWithIndex + +## traverseWithIndex + +**Signature** + +```ts +export declare const traverseWithIndex: PipeableTraverseWithIndex1<'Array', number> +``` + +Added in v2.6.3 + # Whitherable ## wilt @@ -1816,16 +1852,6 @@ assert.deepStrictEqual(modifyAt(1, double)([]), none) Added in v2.0.0 -## sequence - -**Signature** - -```ts -export declare const sequence: Sequence1<'Array'> -``` - -Added in v2.6.3 - ## splitAt Splits an array into two pieces, the first piece has `n` elements. @@ -1849,26 +1875,6 @@ assert.deepStrictEqual(splitAt(2)([1, 2, 3, 4, 5]), [ Added in v2.0.0 -## traverse - -**Signature** - -```ts -export declare const traverse: PipeableTraverse1<'Array'> -``` - -Added in v2.6.3 - -## traverseWithIndex - -**Signature** - -```ts -export declare const traverseWithIndex: PipeableTraverseWithIndex1<'Array', number> -``` - -Added in v2.6.3 - ## unfold **Signature** diff --git a/docs/modules/ReadonlyArray.ts.md b/docs/modules/ReadonlyArray.ts.md index bbdc1406e..8b54725f7 100644 --- a/docs/modules/ReadonlyArray.ts.md +++ b/docs/modules/ReadonlyArray.ts.md @@ -50,6 +50,11 @@ Added in v2.5.0 - [chain](#chain) - [chainFirst](#chainfirst) - [flatten](#flatten) +- [Traversable](#traversable) + - [sequence](#sequence) + - [traverse](#traverse) +- [TraversableWithIndex](#traversablewithindex) + - [traverseWithIndex](#traversewithindex) - [Whitherable](#whitherable) - [wilt](#wilt) - [wither](#wither) @@ -121,13 +126,10 @@ Added in v2.5.0 - [lookup](#lookup) - [modifyAt](#modifyat) - [of](#of) - - [sequence](#sequence) - [spanLeft](#spanleft) - [splitAt](#splitat) - [tail](#tail) - [takeRight](#takeright) - - [traverse](#traverse) - - [traverseWithIndex](#traversewithindex) - [unfold](#unfold) - [unzip](#unzip) - [updateAt](#updateat) @@ -471,6 +473,40 @@ assert.deepStrictEqual(flatten([[1], [2], [3]]), [1, 2, 3]) Added in v2.5.0 +# Traversable + +## sequence + +**Signature** + +```ts +export declare const sequence: Sequence1<'ReadonlyArray'> +``` + +Added in v2.6.3 + +## traverse + +**Signature** + +```ts +export declare const traverse: PipeableTraverse1<'ReadonlyArray'> +``` + +Added in v2.6.3 + +# TraversableWithIndex + +## traverseWithIndex + +**Signature** + +```ts +export declare const traverseWithIndex: PipeableTraverseWithIndex1<'ReadonlyArray', number> +``` + +Added in v2.6.3 + # Whitherable ## wilt @@ -504,9 +540,9 @@ value and the rest of the array. **Signature** ```ts -export declare function chop( - f: (as: ReadonlyNonEmptyArray) => readonly [B, ReadonlyArray] -): (as: ReadonlyArray) => ReadonlyArray +export declare const chop: ( + f: (as: ReadonlyNonEmptyArray) => readonly [B, readonly A[]] +) => (as: readonly A[]) => readonly B[] ``` **Example** @@ -1803,16 +1839,6 @@ export declare const of: (a: A) => readonly A[] Added in v2.5.0 -## sequence - -**Signature** - -```ts -export declare const sequence: Sequence1<'ReadonlyArray'> -``` - -Added in v2.6.3 - ## spanLeft Split an array into two parts: @@ -1903,26 +1929,6 @@ assert.deepStrictEqual(takeRight(2)([1, 2, 3, 4, 5]), [4, 5]) Added in v2.5.0 -## traverse - -**Signature** - -```ts -export declare const traverse: PipeableTraverse1<'ReadonlyArray'> -``` - -Added in v2.6.3 - -## traverseWithIndex - -**Signature** - -```ts -export declare const traverseWithIndex: PipeableTraverseWithIndex1<'ReadonlyArray', number> -``` - -Added in v2.6.3 - ## unfold **Signature** diff --git a/src/Array.ts b/src/Array.ts index 949fd3817..57cc7da55 100644 --- a/src/Array.ts +++ b/src/Array.ts @@ -1157,16 +1157,19 @@ declare module './HKT' { } /** + * @category Traversable * @since 2.6.3 */ export const traverse: PipeableTraverse1 = RA.traverse as any /** + * @category Traversable * @since 2.6.3 */ export const sequence: Traversable1['sequence'] = RA.sequence as any /** + * @category TraversableWithIndex * @since 2.6.3 */ export const traverseWithIndex: PipeableTraverseWithIndex1 = RA.traverseWithIndex as any diff --git a/src/ReadonlyArray.ts b/src/ReadonlyArray.ts index a3548a823..56e886d09 100644 --- a/src/ReadonlyArray.ts +++ b/src/ReadonlyArray.ts @@ -1170,20 +1170,18 @@ export function sortBy(ords: ReadonlyArray>): (as: ReadonlyArray) = * @category combinators * @since 2.5.0 */ -export function chop( - f: (as: ReadonlyNonEmptyArray) => readonly [B, ReadonlyArray] -): (as: ReadonlyArray) => ReadonlyArray { - return (as) => { - // tslint:disable-next-line: readonly-array - const result: Array = [] - let cs: ReadonlyArray = as - while (isNonEmpty(cs)) { - const [b, c] = f(cs) - result.push(b) - cs = c - } - return result +export const chop = (f: (as: ReadonlyNonEmptyArray) => readonly [B, ReadonlyArray]) => ( + as: ReadonlyArray +): ReadonlyArray => { + // tslint:disable-next-line: readonly-array + const result: Array = [] + let cs: ReadonlyArray = as + while (isNonEmpty(cs)) { + const [b, c] = f(cs) + result.push(b) + cs = c } + return result } /** @@ -1805,6 +1803,7 @@ declare module './HKT' { } /** + * @category Traversable * @since 2.6.3 */ export const traverse: PipeableTraverse1 = ( @@ -1815,6 +1814,7 @@ export const traverse: PipeableTraverse1 = ( } /** + * @category Traversable * @since 2.6.3 */ export const sequence: Traversable1['sequence'] = (F: Applicative) => ( @@ -1829,6 +1829,7 @@ export const sequence: Traversable1['sequence'] = (F: Applicative) => } /** + * @category TraversableWithIndex * @since 2.6.3 */ export const traverseWithIndex: PipeableTraverseWithIndex1 = ( From 4095b33ea524a040c8a8eeb96c97f3814038fdb5 Mon Sep 17 00:00:00 2001 From: gcanti Date: Sun, 14 Jun 2020 11:34:01 +0200 Subject: [PATCH 011/106] make Array#difference / ReadonlyArray#difference data-last --- CHANGELOG.md | 2 ++ docs/modules/Array.ts.md | 2 +- docs/modules/ReadonlyArray.ts.md | 7 ++++++- dtslint/ts3.5/Array.ts | 7 +++++++ dtslint/ts3.5/ReadonlyArray.ts | 7 +++++++ src/Array.ts | 7 ++++++- src/ReadonlyArray.ts | 35 ++++++++++++++++++++++---------- src/ReadonlyRecord.ts | 2 +- src/Semigroup.ts | 6 +++--- test/Array.ts | 3 +++ test/ReadonlyArray.ts | 3 +++ 11 files changed, 63 insertions(+), 18 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fe1c150b2..fe9ad5857 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,10 +21,12 @@ high state of flux, you're at risk of it changing without notice. - export `unfold` (@gcanti) - make `lookup` data-last (@gcanti) - make `elem` data-last (@gcanti) + - make `difference` data-last (@gcanti) - `ReadonlyArray` - export `unfold` (@gcanti) - make `lookup` data-last (@gcanti) - make `elem` data-last (@gcanti) + - make `difference` data-last (@gcanti) - `Semigroup` - make `fold` data-last (@gcanti) diff --git a/docs/modules/Array.ts.md b/docs/modules/Array.ts.md index 0791f53f5..338b1016e 100644 --- a/docs/modules/Array.ts.md +++ b/docs/modules/Array.ts.md @@ -572,7 +572,7 @@ comparisons. The order and references of result values are determined by the fir **Signature** ```ts -export declare const difference: (E: Eq) => (xs: A[], ys: A[]) => A[] +export declare const difference: (E: Eq) => { (xs: A[]): (ys: A[]) => A[]; (xs: A[], ys: A[]): A[] } ``` **Example** diff --git a/docs/modules/ReadonlyArray.ts.md b/docs/modules/ReadonlyArray.ts.md index 8b54725f7..e13ef1b4f 100644 --- a/docs/modules/ReadonlyArray.ts.md +++ b/docs/modules/ReadonlyArray.ts.md @@ -570,7 +570,12 @@ comparisons. The order and references of result values are determined by the fir **Signature** ```ts -export declare function difference(E: Eq): (xs: ReadonlyArray, ys: ReadonlyArray) => ReadonlyArray +export declare function difference( + E: Eq +): { + (xs: ReadonlyArray): (ys: ReadonlyArray) => ReadonlyArray + (xs: ReadonlyArray, ys: ReadonlyArray): ReadonlyArray +} ``` **Example** diff --git a/dtslint/ts3.5/Array.ts b/dtslint/ts3.5/Array.ts index 27cb132d1..f96299056 100644 --- a/dtslint/ts3.5/Array.ts +++ b/dtslint/ts3.5/Array.ts @@ -98,3 +98,10 @@ _.lookup(0) // $ExpectType (as: A[]) => Option _.elem(eqNumber)(1, [1, 2, 3]) // $ExpectType boolean _.elem(eqNumber)(1) // $ExpectType (as: number[]) => boolean + +// +// difference +// + +_.difference(eqNumber)([1, 2], [3, 4]) // $ExpectType number[] +_.difference(eqNumber)([3, 4]) // $ExpectType (ys: number[]) => number[] diff --git a/dtslint/ts3.5/ReadonlyArray.ts b/dtslint/ts3.5/ReadonlyArray.ts index 027aeba81..88a59e746 100644 --- a/dtslint/ts3.5/ReadonlyArray.ts +++ b/dtslint/ts3.5/ReadonlyArray.ts @@ -89,3 +89,10 @@ _.lookup(0) // $ExpectType (as: readonly A[]) => Option _.elem(eqNumber)(1, [1, 2, 3]) // $ExpectType boolean _.elem(eqNumber)(1) // $ExpectType (as: readonly number[]) => boolean + +// +// difference +// + +_.difference(eqNumber)([1, 2], [3, 4]) // $ExpectType readonly number[] +_.difference(eqNumber)([3, 4]) // $ExpectType (ys: readonly number[]) => readonly number[] diff --git a/src/Array.ts b/src/Array.ts index 57cc7da55..697d52591 100644 --- a/src/Array.ts +++ b/src/Array.ts @@ -927,7 +927,12 @@ export const intersection: (E: Eq) => (xs: Array, ys: Array) => Arra * @category combinators * @since 2.0.0 */ -export const difference: (E: Eq) => (xs: Array, ys: Array) => Array = RA.difference as any +export const difference: ( + E: Eq +) => { + (xs: Array): (ys: Array) => Array + (xs: Array, ys: Array): Array +} = RA.difference as any /** * @category constructors diff --git a/src/ReadonlyArray.ts b/src/ReadonlyArray.ts index 56e886d09..8d355029c 100644 --- a/src/ReadonlyArray.ts +++ b/src/ReadonlyArray.ts @@ -1074,17 +1074,16 @@ export function elem(E: Eq): (a: A, as?: ReadonlyArray) => boolean | (( if (as === undefined) { const elemE = elem(E) return (as) => elemE(a, as) - } else { - const predicate = (element: A) => E.equals(element, a) - let i = 0 - const len = as.length - for (; i < len; i++) { - if (predicate(as[i])) { - return true - } + } + const predicate = (element: A) => E.equals(element, a) + let i = 0 + const len = as.length + for (; i < len; i++) { + if (predicate(as[i])) { + return true } - return false } + return false } } @@ -1334,9 +1333,23 @@ export function intersection(E: Eq): (xs: ReadonlyArray, ys: ReadonlyAr * @category combinators * @since 2.5.0 */ -export function difference(E: Eq): (xs: ReadonlyArray, ys: ReadonlyArray) => ReadonlyArray { +export function difference( + E: Eq +): { + (xs: ReadonlyArray): (ys: ReadonlyArray) => ReadonlyArray + (xs: ReadonlyArray, ys: ReadonlyArray): ReadonlyArray +} +export function difference( + E: Eq +): (xs: ReadonlyArray, ys?: ReadonlyArray) => ReadonlyArray | ((ys: ReadonlyArray) => ReadonlyArray) { const elemE = elem(E) - return (xs, ys) => xs.filter((a) => !elemE(a, ys)) + return (xs, ys) => { + if (ys === undefined) { + const differenceE = difference(E) + return (ys) => differenceE(ys, xs) + } + return xs.filter((a) => !elemE(a, ys)) + } } /** diff --git a/src/ReadonlyRecord.ts b/src/ReadonlyRecord.ts index edcd6a461..5f58282d4 100644 --- a/src/ReadonlyRecord.ts +++ b/src/ReadonlyRecord.ts @@ -292,7 +292,7 @@ export function getMonoid(S: Semigroup): Monoid> if (len === 0) { return x } - const r: Record = { ...x } + const r: Record = Object.assign({}, x) for (let i = 0; i < len; i++) { const k = keys[i] r[k] = _hasOwnProperty.call(x, k) ? S.concat(x[k], y[k]) : y[k] diff --git a/src/Semigroup.ts b/src/Semigroup.ts index a46c58abb..81889f61d 100644 --- a/src/Semigroup.ts +++ b/src/Semigroup.ts @@ -35,10 +35,10 @@ export function fold( export function fold(S: Semigroup): (a: A, as?: ReadonlyArray) => A | ((as: ReadonlyArray) => A) { return (a, as) => { if (as === undefined) { - return (as) => as.reduce(S.concat, a) - } else { - return as.reduce(S.concat, a) + const foldS = fold(S) + return (as) => foldS(a, as) } + return as.reduce(S.concat, a) } } diff --git a/test/Array.ts b/test/Array.ts index 9aef77cc9..eafe3d3f1 100644 --- a/test/Array.ts +++ b/test/Array.ts @@ -883,6 +883,9 @@ describe('Array', () => { assert.deepStrictEqual(_.difference(Eq.eqNumber)([1, 2], [3, 4]), [1, 2]) assert.deepStrictEqual(_.difference(Eq.eqNumber)([1, 2], [2, 3]), [1]) assert.deepStrictEqual(_.difference(Eq.eqNumber)([1, 2], [1, 2]), []) + assert.deepStrictEqual(pipe([1, 2], _.difference(Eq.eqNumber)([3, 4])), [1, 2]) + assert.deepStrictEqual(pipe([1, 2], _.difference(Eq.eqNumber)([2, 3])), [1]) + assert.deepStrictEqual(pipe([1, 2], _.difference(Eq.eqNumber)([1, 2])), []) }) it('should be safe when calling map with a binary function', () => { diff --git a/test/ReadonlyArray.ts b/test/ReadonlyArray.ts index eebb3861a..c7c5e502c 100644 --- a/test/ReadonlyArray.ts +++ b/test/ReadonlyArray.ts @@ -881,6 +881,9 @@ describe('ReadonlyArray', () => { assert.deepStrictEqual(_.difference(Eq.eqNumber)([1, 2], [3, 4]), [1, 2]) assert.deepStrictEqual(_.difference(Eq.eqNumber)([1, 2], [2, 3]), [1]) assert.deepStrictEqual(_.difference(Eq.eqNumber)([1, 2], [1, 2]), []) + assert.deepStrictEqual(pipe([1, 2], _.difference(Eq.eqNumber)([3, 4])), [1, 2]) + assert.deepStrictEqual(pipe([1, 2], _.difference(Eq.eqNumber)([2, 3])), [1]) + assert.deepStrictEqual(pipe([1, 2], _.difference(Eq.eqNumber)([1, 2])), []) }) it('should be safe when calling map with a binary function', () => { From 862f856400a8ed8d42ae09b45b01e0a9251d40fe Mon Sep 17 00:00:00 2001 From: gcanti Date: Sun, 14 Jun 2020 11:41:39 +0200 Subject: [PATCH 012/106] make Array#intersection / ReadonlyArray#intersection data-last --- CHANGELOG.md | 2 ++ docs/modules/Array.ts.md | 2 +- docs/modules/ReadonlyArray.ts.md | 7 ++++++- dtslint/ts3.5/Array.ts | 7 +++++++ dtslint/ts3.5/ReadonlyArray.ts | 7 +++++++ src/Array.ts | 7 ++++++- src/ReadonlyArray.ts | 18 ++++++++++++++++-- test/Array.ts | 3 +++ test/ReadonlyArray.ts | 3 +++ 9 files changed, 51 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fe9ad5857..ccad9aefd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,11 +22,13 @@ high state of flux, you're at risk of it changing without notice. - make `lookup` data-last (@gcanti) - make `elem` data-last (@gcanti) - make `difference` data-last (@gcanti) + - make `intersection` data-last (@gcanti) - `ReadonlyArray` - export `unfold` (@gcanti) - make `lookup` data-last (@gcanti) - make `elem` data-last (@gcanti) - make `difference` data-last (@gcanti) + - make `intersection` data-last (@gcanti) - `Semigroup` - make `fold` data-last (@gcanti) diff --git a/docs/modules/Array.ts.md b/docs/modules/Array.ts.md index 338b1016e..bacf2bed8 100644 --- a/docs/modules/Array.ts.md +++ b/docs/modules/Array.ts.md @@ -654,7 +654,7 @@ comparisons. The order and references of result values are determined by the fir **Signature** ```ts -export declare const intersection: (E: Eq) => (xs: A[], ys: A[]) => A[] +export declare const intersection: (E: Eq) => { (xs: A[]): (ys: A[]) => A[]; (xs: A[], ys: A[]): A[] } ``` **Example** diff --git a/docs/modules/ReadonlyArray.ts.md b/docs/modules/ReadonlyArray.ts.md index e13ef1b4f..947871978 100644 --- a/docs/modules/ReadonlyArray.ts.md +++ b/docs/modules/ReadonlyArray.ts.md @@ -657,7 +657,12 @@ comparisons. The order and references of result values are determined by the fir **Signature** ```ts -export declare function intersection(E: Eq): (xs: ReadonlyArray, ys: ReadonlyArray) => ReadonlyArray +export declare function intersection( + E: Eq +): { + (xs: ReadonlyArray): (ys: ReadonlyArray) => ReadonlyArray + (xs: ReadonlyArray, ys: ReadonlyArray): ReadonlyArray +} ``` **Example** diff --git a/dtslint/ts3.5/Array.ts b/dtslint/ts3.5/Array.ts index f96299056..3c29e9427 100644 --- a/dtslint/ts3.5/Array.ts +++ b/dtslint/ts3.5/Array.ts @@ -105,3 +105,10 @@ _.elem(eqNumber)(1) // $ExpectType (as: number[]) => boolean _.difference(eqNumber)([1, 2], [3, 4]) // $ExpectType number[] _.difference(eqNumber)([3, 4]) // $ExpectType (ys: number[]) => number[] + +// +// intersection +// + +_.intersection(eqNumber)([1, 2], [3, 4]) // $ExpectType number[] +_.intersection(eqNumber)([3, 4]) // $ExpectType (ys: number[]) => number[] diff --git a/dtslint/ts3.5/ReadonlyArray.ts b/dtslint/ts3.5/ReadonlyArray.ts index 88a59e746..f8915b323 100644 --- a/dtslint/ts3.5/ReadonlyArray.ts +++ b/dtslint/ts3.5/ReadonlyArray.ts @@ -96,3 +96,10 @@ _.elem(eqNumber)(1) // $ExpectType (as: readonly number[]) => boolean _.difference(eqNumber)([1, 2], [3, 4]) // $ExpectType readonly number[] _.difference(eqNumber)([3, 4]) // $ExpectType (ys: readonly number[]) => readonly number[] + +// +// intersection +// + +_.intersection(eqNumber)([1, 2], [3, 4]) // $ExpectType readonly number[] +_.intersection(eqNumber)([3, 4]) // $ExpectType (ys: readonly number[]) => readonly number[] diff --git a/src/Array.ts b/src/Array.ts index 697d52591..03f96a734 100644 --- a/src/Array.ts +++ b/src/Array.ts @@ -912,7 +912,12 @@ export const union: (E: Eq) => (xs: Array, ys: Array) => Array = * @category combinators * @since 2.0.0 */ -export const intersection: (E: Eq) => (xs: Array, ys: Array) => Array = RA.intersection as any +export const intersection: ( + E: Eq +) => { + (xs: Array): (ys: Array) => Array + (xs: Array, ys: Array): Array +} = RA.intersection as any /** * Creates an array of array values not included in the other given array using a `Eq` for equality diff --git a/src/ReadonlyArray.ts b/src/ReadonlyArray.ts index 8d355029c..c5cc743fe 100644 --- a/src/ReadonlyArray.ts +++ b/src/ReadonlyArray.ts @@ -1315,9 +1315,23 @@ export function union(E: Eq): (xs: ReadonlyArray, ys: ReadonlyArray) * @category combinators * @since 2.5.0 */ -export function intersection(E: Eq): (xs: ReadonlyArray, ys: ReadonlyArray) => ReadonlyArray { +export function intersection( + E: Eq +): { + (xs: ReadonlyArray): (ys: ReadonlyArray) => ReadonlyArray + (xs: ReadonlyArray, ys: ReadonlyArray): ReadonlyArray +} +export function intersection( + E: Eq +): (xs: ReadonlyArray, ys?: ReadonlyArray) => ReadonlyArray | ((ys: ReadonlyArray) => ReadonlyArray) { const elemE = elem(E) - return (xs, ys) => xs.filter((a) => elemE(a, ys)) + return (xs, ys) => { + if (ys === undefined) { + const intersectionE = intersection(E) + return (ys) => intersectionE(ys, xs) + } + return xs.filter((a) => elemE(a, ys)) + } } /** diff --git a/test/Array.ts b/test/Array.ts index eafe3d3f1..8897502e8 100644 --- a/test/Array.ts +++ b/test/Array.ts @@ -877,6 +877,9 @@ describe('Array', () => { assert.deepStrictEqual(_.intersection(Eq.eqNumber)([1, 2], [3, 4]), []) assert.deepStrictEqual(_.intersection(Eq.eqNumber)([1, 2], [2, 3]), [2]) assert.deepStrictEqual(_.intersection(Eq.eqNumber)([1, 2], [1, 2]), [1, 2]) + assert.deepStrictEqual(pipe([1, 2], _.intersection(Eq.eqNumber)([3, 4])), []) + assert.deepStrictEqual(pipe([1, 2], _.intersection(Eq.eqNumber)([2, 3])), [2]) + assert.deepStrictEqual(pipe([1, 2], _.intersection(Eq.eqNumber)([1, 2])), [1, 2]) }) it('difference', () => { diff --git a/test/ReadonlyArray.ts b/test/ReadonlyArray.ts index c7c5e502c..d8d94ace9 100644 --- a/test/ReadonlyArray.ts +++ b/test/ReadonlyArray.ts @@ -875,6 +875,9 @@ describe('ReadonlyArray', () => { assert.deepStrictEqual(_.intersection(Eq.eqNumber)([1, 2], [3, 4]), []) assert.deepStrictEqual(_.intersection(Eq.eqNumber)([1, 2], [2, 3]), [2]) assert.deepStrictEqual(_.intersection(Eq.eqNumber)([1, 2], [1, 2]), [1, 2]) + assert.deepStrictEqual(pipe([1, 2], _.intersection(Eq.eqNumber)([3, 4])), []) + assert.deepStrictEqual(pipe([1, 2], _.intersection(Eq.eqNumber)([2, 3])), [2]) + assert.deepStrictEqual(pipe([1, 2], _.intersection(Eq.eqNumber)([1, 2])), [1, 2]) }) it('difference', () => { From 2a7a258240bf59b90f5243b0ab1284d2c96ba005 Mon Sep 17 00:00:00 2001 From: gcanti Date: Sun, 14 Jun 2020 11:48:16 +0200 Subject: [PATCH 013/106] make Array#union / ReadonlyArray#union data-last --- CHANGELOG.md | 2 ++ docs/modules/Array.ts.md | 2 +- docs/modules/ReadonlyArray.ts.md | 7 ++++++- dtslint/ts3.5/Array.ts | 7 +++++++ dtslint/ts3.5/ReadonlyArray.ts | 7 +++++++ src/Array.ts | 7 ++++++- src/ReadonlyArray.ts | 19 ++++++++++++++++--- test/Array.ts | 3 +++ test/ReadonlyArray.ts | 3 +++ 9 files changed, 51 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ccad9aefd..1617ea645 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,12 +23,14 @@ high state of flux, you're at risk of it changing without notice. - make `elem` data-last (@gcanti) - make `difference` data-last (@gcanti) - make `intersection` data-last (@gcanti) + - make `union` data-last (@gcanti) - `ReadonlyArray` - export `unfold` (@gcanti) - make `lookup` data-last (@gcanti) - make `elem` data-last (@gcanti) - make `difference` data-last (@gcanti) - make `intersection` data-last (@gcanti) + - make `union` data-last (@gcanti) - `Semigroup` - make `fold` data-last (@gcanti) diff --git a/docs/modules/Array.ts.md b/docs/modules/Array.ts.md index bacf2bed8..53fad5d64 100644 --- a/docs/modules/Array.ts.md +++ b/docs/modules/Array.ts.md @@ -921,7 +921,7 @@ Creates an array of unique values, in order, from all given arrays using a `Eq` **Signature** ```ts -export declare const union: (E: Eq) => (xs: A[], ys: A[]) => A[] +export declare const union: (E: Eq) => { (xs: A[]): (ys: A[]) => A[]; (xs: A[], ys: A[]): A[] } ``` **Example** diff --git a/docs/modules/ReadonlyArray.ts.md b/docs/modules/ReadonlyArray.ts.md index 947871978..d629d7bce 100644 --- a/docs/modules/ReadonlyArray.ts.md +++ b/docs/modules/ReadonlyArray.ts.md @@ -889,7 +889,12 @@ Creates an array of unique values, in order, from all given arrays using a `Eq` **Signature** ```ts -export declare function union(E: Eq): (xs: ReadonlyArray, ys: ReadonlyArray) => ReadonlyArray +export declare function union( + E: Eq +): { + (xs: ReadonlyArray): (ys: ReadonlyArray) => ReadonlyArray + (xs: ReadonlyArray, ys: ReadonlyArray): ReadonlyArray +} ``` **Example** diff --git a/dtslint/ts3.5/Array.ts b/dtslint/ts3.5/Array.ts index 3c29e9427..326ba5202 100644 --- a/dtslint/ts3.5/Array.ts +++ b/dtslint/ts3.5/Array.ts @@ -112,3 +112,10 @@ _.difference(eqNumber)([3, 4]) // $ExpectType (ys: number[]) => number[] _.intersection(eqNumber)([1, 2], [3, 4]) // $ExpectType number[] _.intersection(eqNumber)([3, 4]) // $ExpectType (ys: number[]) => number[] + +// +// union +// + +_.union(eqNumber)([1, 2], [3, 4]) // $ExpectType number[] +_.union(eqNumber)([3, 4]) // $ExpectType (ys: number[]) => number[] diff --git a/dtslint/ts3.5/ReadonlyArray.ts b/dtslint/ts3.5/ReadonlyArray.ts index f8915b323..6e453d504 100644 --- a/dtslint/ts3.5/ReadonlyArray.ts +++ b/dtslint/ts3.5/ReadonlyArray.ts @@ -103,3 +103,10 @@ _.difference(eqNumber)([3, 4]) // $ExpectType (ys: readonly number[]) => readonl _.intersection(eqNumber)([1, 2], [3, 4]) // $ExpectType readonly number[] _.intersection(eqNumber)([3, 4]) // $ExpectType (ys: readonly number[]) => readonly number[] + +// +// union +// + +_.union(eqNumber)([1, 2], [3, 4]) // $ExpectType readonly number[] +_.union(eqNumber)([3, 4]) // $ExpectType (ys: readonly number[]) => readonly number[] diff --git a/src/Array.ts b/src/Array.ts index 03f96a734..f689de7e7 100644 --- a/src/Array.ts +++ b/src/Array.ts @@ -897,7 +897,12 @@ export function comprehension( * @category combinators * @since 2.0.0 */ -export const union: (E: Eq) => (xs: Array, ys: Array) => Array = RA.union as any +export const union: ( + E: Eq +) => { + (xs: Array): (ys: Array) => Array + (xs: Array, ys: Array): Array +} = RA.union as any /** * Creates an array of unique values that are included in all given arrays using a `Eq` for equality diff --git a/src/ReadonlyArray.ts b/src/ReadonlyArray.ts index c5cc743fe..41924510e 100644 --- a/src/ReadonlyArray.ts +++ b/src/ReadonlyArray.ts @@ -1293,13 +1293,26 @@ export function comprehension( * @category combinators * @since 2.5.0 */ -export function union(E: Eq): (xs: ReadonlyArray, ys: ReadonlyArray) => ReadonlyArray { +export function union( + E: Eq +): { + (xs: ReadonlyArray): (ys: ReadonlyArray) => ReadonlyArray + (xs: ReadonlyArray, ys: ReadonlyArray): ReadonlyArray +} +export function union( + E: Eq +): (xs: ReadonlyArray, ys?: ReadonlyArray) => ReadonlyArray | ((ys: ReadonlyArray) => ReadonlyArray) { const elemE = elem(E) - return (xs, ys) => - concat( + return (xs, ys) => { + if (ys === undefined) { + const unionE = union(E) + return (ys) => unionE(ys, xs) + } + return concat( xs, ys.filter((a) => !elemE(a, xs)) ) + } } /** diff --git a/test/Array.ts b/test/Array.ts index 8897502e8..a826cb816 100644 --- a/test/Array.ts +++ b/test/Array.ts @@ -871,6 +871,9 @@ describe('Array', () => { assert.deepStrictEqual(_.union(Eq.eqNumber)([1, 2], [3, 4]), [1, 2, 3, 4]) assert.deepStrictEqual(_.union(Eq.eqNumber)([1, 2], [2, 3]), [1, 2, 3]) assert.deepStrictEqual(_.union(Eq.eqNumber)([1, 2], [1, 2]), [1, 2]) + assert.deepStrictEqual(pipe([1, 2], _.union(Eq.eqNumber)([3, 4])), [1, 2, 3, 4]) + assert.deepStrictEqual(pipe([1, 2], _.union(Eq.eqNumber)([2, 3])), [1, 2, 3]) + assert.deepStrictEqual(pipe([1, 2], _.union(Eq.eqNumber)([1, 2])), [1, 2]) }) it('intersection', () => { diff --git a/test/ReadonlyArray.ts b/test/ReadonlyArray.ts index d8d94ace9..6195c328b 100644 --- a/test/ReadonlyArray.ts +++ b/test/ReadonlyArray.ts @@ -869,6 +869,9 @@ describe('ReadonlyArray', () => { assert.deepStrictEqual(_.union(Eq.eqNumber)([1, 2], [3, 4]), [1, 2, 3, 4]) assert.deepStrictEqual(_.union(Eq.eqNumber)([1, 2], [2, 3]), [1, 2, 3]) assert.deepStrictEqual(_.union(Eq.eqNumber)([1, 2], [1, 2]), [1, 2]) + assert.deepStrictEqual(pipe([1, 2], _.union(Eq.eqNumber)([3, 4])), [1, 2, 3, 4]) + assert.deepStrictEqual(pipe([1, 2], _.union(Eq.eqNumber)([2, 3])), [1, 2, 3]) + assert.deepStrictEqual(pipe([1, 2], _.union(Eq.eqNumber)([1, 2])), [1, 2]) }) it('intersection', () => { From c0cca9109fe9d6f981a23c74230fc4d268b344c7 Mon Sep 17 00:00:00 2001 From: gcanti Date: Sun, 14 Jun 2020 12:01:04 +0200 Subject: [PATCH 014/106] make Array#zip / ReadonlyArray#zip data-last --- CHANGELOG.md | 2 ++ docs/modules/Array.ts.md | 2 +- docs/modules/ReadonlyArray.ts.md | 3 ++- dtslint/ts3.5/Array.ts | 7 +++++++ dtslint/ts3.5/ReadonlyArray.ts | 7 +++++++ src/Array.ts | 5 ++++- src/ReadonlyArray.ts | 12 ++++++++++-- test/Array.ts | 5 +++++ test/ReadonlyArray.ts | 5 +++++ 9 files changed, 43 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1617ea645..54c1309f2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,7 @@ high state of flux, you're at risk of it changing without notice. - make `difference` data-last (@gcanti) - make `intersection` data-last (@gcanti) - make `union` data-last (@gcanti) + - make `zip` data-last (@gcanti) - `ReadonlyArray` - export `unfold` (@gcanti) - make `lookup` data-last (@gcanti) @@ -31,6 +32,7 @@ high state of flux, you're at risk of it changing without notice. - make `difference` data-last (@gcanti) - make `intersection` data-last (@gcanti) - make `union` data-last (@gcanti) + - make `zip` data-last (@gcanti) - `Semigroup` - make `fold` data-last (@gcanti) diff --git a/docs/modules/Array.ts.md b/docs/modules/Array.ts.md index 53fad5d64..14b3ddec9 100644 --- a/docs/modules/Array.ts.md +++ b/docs/modules/Array.ts.md @@ -964,7 +964,7 @@ longer array are discarded **Signature** ```ts -export declare const zip: (fa: A[], fb: B[]) => [A, B][] +export declare const zip: { (bs: B[]): (as: A[]) => [A, B][]; (as: A[], bs: B[]): [A, B][] } ``` **Example** diff --git a/docs/modules/ReadonlyArray.ts.md b/docs/modules/ReadonlyArray.ts.md index d629d7bce..1adc356b4 100644 --- a/docs/modules/ReadonlyArray.ts.md +++ b/docs/modules/ReadonlyArray.ts.md @@ -937,7 +937,8 @@ longer array are discarded **Signature** ```ts -export declare function zip(fa: ReadonlyArray, fb: ReadonlyArray): ReadonlyArray +export declare function zip(bs: ReadonlyArray): (as: ReadonlyArray) => ReadonlyArray +export declare function zip(as: ReadonlyArray, bs: ReadonlyArray): ReadonlyArray ``` **Example** diff --git a/dtslint/ts3.5/Array.ts b/dtslint/ts3.5/Array.ts index 326ba5202..775ac9e20 100644 --- a/dtslint/ts3.5/Array.ts +++ b/dtslint/ts3.5/Array.ts @@ -119,3 +119,10 @@ _.intersection(eqNumber)([3, 4]) // $ExpectType (ys: number[]) => number[] _.union(eqNumber)([1, 2], [3, 4]) // $ExpectType number[] _.union(eqNumber)([3, 4]) // $ExpectType (ys: number[]) => number[] + +// +// zip +// + +_.zip([1, 2], ['a', 'b']) // $ExpectType [number, string][] +_.zip(['a', 'b']) // $ExpectType (as: A[]) => [A, string][] diff --git a/dtslint/ts3.5/ReadonlyArray.ts b/dtslint/ts3.5/ReadonlyArray.ts index 6e453d504..bc67cb777 100644 --- a/dtslint/ts3.5/ReadonlyArray.ts +++ b/dtslint/ts3.5/ReadonlyArray.ts @@ -110,3 +110,10 @@ _.intersection(eqNumber)([3, 4]) // $ExpectType (ys: readonly number[]) => reado _.union(eqNumber)([1, 2], [3, 4]) // $ExpectType readonly number[] _.union(eqNumber)([3, 4]) // $ExpectType (ys: readonly number[]) => readonly number[] + +// +// zip +// + +_.zip([1, 2], ['a', 'b']) // $ExpectType readonly (readonly [number, string])[] +_.zip(['a', 'b']) // $ExpectType (as: readonly A[]) => readonly (readonly [A, string])[] diff --git a/src/Array.ts b/src/Array.ts index f689de7e7..440640c08 100644 --- a/src/Array.ts +++ b/src/Array.ts @@ -693,7 +693,10 @@ export const zipWith: (fa: Array, fb: Array, f: (a: A, b: B) => C * @category combinators * @since 2.0.0 */ -export const zip: (fa: Array, fb: Array) => Array<[A, B]> = RA.zip as any +export const zip: { + (bs: Array): (as: Array) => Array<[A, B]> + (as: Array, bs: Array): Array<[A, B]> +} = RA.zip as any /** * The function is reverse of `zip`. Takes an array of pairs and return two corresponding arrays diff --git a/src/ReadonlyArray.ts b/src/ReadonlyArray.ts index 41924510e..7d5dc4d89 100644 --- a/src/ReadonlyArray.ts +++ b/src/ReadonlyArray.ts @@ -996,8 +996,16 @@ export function zipWith(fa: ReadonlyArray, fb: ReadonlyArray, f: * @category combinators * @since 2.5.0 */ -export function zip(fa: ReadonlyArray, fb: ReadonlyArray): ReadonlyArray { - return zipWith(fa, fb, (a, b) => [a, b]) +export function zip(bs: ReadonlyArray): (as: ReadonlyArray) => ReadonlyArray +export function zip(as: ReadonlyArray, bs: ReadonlyArray): ReadonlyArray +export function zip( + as: ReadonlyArray, + bs?: ReadonlyArray +): ReadonlyArray | ((bs: ReadonlyArray) => ReadonlyArray) { + if (bs === undefined) { + return (bs) => zip(bs, as) + } + return zipWith(as, bs, (a, b) => [a, b]) } /** diff --git a/test/Array.ts b/test/Array.ts index a826cb816..296dfe579 100644 --- a/test/Array.ts +++ b/test/Array.ts @@ -605,6 +605,11 @@ describe('Array', () => { [2, 'b'], [3, 'c'] ]) + assert.deepStrictEqual(pipe([1, 2, 3], _.zip(['a', 'b', 'c', 'd'])), [ + [1, 'a'], + [2, 'b'], + [3, 'c'] + ]) }) it('unzip', () => { diff --git a/test/ReadonlyArray.ts b/test/ReadonlyArray.ts index 6195c328b..64aaeb417 100644 --- a/test/ReadonlyArray.ts +++ b/test/ReadonlyArray.ts @@ -602,6 +602,11 @@ describe('ReadonlyArray', () => { [2, 'b'], [3, 'c'] ]) + assert.deepStrictEqual(pipe([1, 2, 3], _.zip(['a', 'b', 'c', 'd'])), [ + [1, 'a'], + [2, 'b'], + [3, 'c'] + ]) }) it('unzip', () => { From 92d09bb619158c3fba8585362e7075a92572eac3 Mon Sep 17 00:00:00 2001 From: gcanti Date: Sun, 14 Jun 2020 12:11:29 +0200 Subject: [PATCH 015/106] make Array#cons / ReadonlyArray#cons data-last --- CHANGELOG.md | 2 ++ docs/modules/Array.ts.md | 5 +++-- docs/modules/ReadonlyArray.ts.md | 4 +++- dtslint/ts3.5/Array.ts | 7 +++++++ dtslint/ts3.5/ReadonlyArray.ts | 7 +++++++ src/Array.ts | 8 ++++++-- src/ReadonlyArray.ts | 13 +++++++++++-- test/Array.ts | 5 +++-- test/ReadonlyArray.ts | 5 +++-- 9 files changed, 45 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 54c1309f2..9eb633ce2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,7 @@ high state of flux, you're at risk of it changing without notice. - make `intersection` data-last (@gcanti) - make `union` data-last (@gcanti) - make `zip` data-last (@gcanti) + - make `cons` data-last (@gcanti) - `ReadonlyArray` - export `unfold` (@gcanti) - make `lookup` data-last (@gcanti) @@ -33,6 +34,7 @@ high state of flux, you're at risk of it changing without notice. - make `intersection` data-last (@gcanti) - make `union` data-last (@gcanti) - make `zip` data-last (@gcanti) + - make `cons` data-last (@gcanti) - `Semigroup` - make `fold` data-last (@gcanti) diff --git a/docs/modules/Array.ts.md b/docs/modules/Array.ts.md index 14b3ddec9..383a3818b 100644 --- a/docs/modules/Array.ts.md +++ b/docs/modules/Array.ts.md @@ -1014,15 +1014,16 @@ Attaches an element to the front of an array, creating a new non empty array **Signature** ```ts -export declare const cons: (head: A, tail: A[]) => NonEmptyArray +export declare const cons: { (head: A): (tail: A[]) => NonEmptyArray; (head: A, tail: A[]): NonEmptyArray } ``` **Example** ```ts import { cons } from 'fp-ts/lib/Array' +import { pipe } from 'fp-ts/lib/function' -assert.deepStrictEqual(cons(0, [1, 2, 3]), [0, 1, 2, 3]) +assert.deepStrictEqual(pipe([1, 2, 3], cons(0)), [0, 1, 2, 3]) ``` Added in v2.0.0 diff --git a/docs/modules/ReadonlyArray.ts.md b/docs/modules/ReadonlyArray.ts.md index 1adc356b4..595edb6fc 100644 --- a/docs/modules/ReadonlyArray.ts.md +++ b/docs/modules/ReadonlyArray.ts.md @@ -992,6 +992,7 @@ Attaches an element to the front of an array, creating a new non empty array **Signature** ```ts +export declare function cons(head: A): (tail: ReadonlyArray) => ReadonlyNonEmptyArray export declare function cons(head: A, tail: ReadonlyArray): ReadonlyNonEmptyArray ``` @@ -999,8 +1000,9 @@ export declare function cons(head: A, tail: ReadonlyArray): ReadonlyNonEmp ```ts import { cons } from 'fp-ts/lib/ReadonlyArray' +import { pipe } from 'fp-ts/lib/function' -assert.deepStrictEqual(cons(0, [1, 2, 3]), [0, 1, 2, 3]) +assert.deepStrictEqual(pipe([1, 2, 3], cons(0)), [0, 1, 2, 3]) ``` Added in v2.5.0 diff --git a/dtslint/ts3.5/Array.ts b/dtslint/ts3.5/Array.ts index 775ac9e20..320bf974e 100644 --- a/dtslint/ts3.5/Array.ts +++ b/dtslint/ts3.5/Array.ts @@ -126,3 +126,10 @@ _.union(eqNumber)([3, 4]) // $ExpectType (ys: number[]) => number[] _.zip([1, 2], ['a', 'b']) // $ExpectType [number, string][] _.zip(['a', 'b']) // $ExpectType (as: A[]) => [A, string][] + +// +// cons +// + +_.cons(0, [1, 2]) // $ExpectType NonEmptyArray +_.cons(0) // $ExpectType (tail: number[]) => NonEmptyArray diff --git a/dtslint/ts3.5/ReadonlyArray.ts b/dtslint/ts3.5/ReadonlyArray.ts index bc67cb777..cc6ffc525 100644 --- a/dtslint/ts3.5/ReadonlyArray.ts +++ b/dtslint/ts3.5/ReadonlyArray.ts @@ -117,3 +117,10 @@ _.union(eqNumber)([3, 4]) // $ExpectType (ys: readonly number[]) => readonly num _.zip([1, 2], ['a', 'b']) // $ExpectType readonly (readonly [number, string])[] _.zip(['a', 'b']) // $ExpectType (as: readonly A[]) => readonly (readonly [A, string])[] + +// +// cons +// + +_.cons(0, [1, 2]) // $ExpectType ReadonlyNonEmptyArray +_.cons(0) // $ExpectType (tail: readonly number[]) => ReadonlyNonEmptyArray diff --git a/src/Array.ts b/src/Array.ts index 440640c08..3e8890be4 100644 --- a/src/Array.ts +++ b/src/Array.ts @@ -248,13 +248,17 @@ export const lookup: { * * @example * import { cons } from 'fp-ts/lib/Array' + * import { pipe } from 'fp-ts/lib/function' * - * assert.deepStrictEqual(cons(0, [1, 2, 3]), [0, 1, 2, 3]) + * assert.deepStrictEqual(pipe([1, 2, 3], cons(0)), [0, 1, 2, 3]) * * @category constructors * @since 2.0.0 */ -export const cons: (head: A, tail: Array) => NonEmptyArray = RA.cons as any +export const cons: { + (head: A): (tail: Array) => NonEmptyArray + (head: A, tail: Array): NonEmptyArray +} = RA.cons as any /** * Append an element to the end of an array, creating a new non empty array diff --git a/src/ReadonlyArray.ts b/src/ReadonlyArray.ts index 7d5dc4d89..9da5f1759 100644 --- a/src/ReadonlyArray.ts +++ b/src/ReadonlyArray.ts @@ -387,13 +387,22 @@ export function lookup(i: number, as?: ReadonlyArray): Option | ((as * * @example * import { cons } from 'fp-ts/lib/ReadonlyArray' + * import { pipe } from 'fp-ts/lib/function' * - * assert.deepStrictEqual(cons(0, [1, 2, 3]), [0, 1, 2, 3]) + * assert.deepStrictEqual(pipe([1, 2, 3], cons(0)), [0, 1, 2, 3]) * * @category constructors * @since 2.5.0 */ -export function cons(head: A, tail: ReadonlyArray): ReadonlyNonEmptyArray { +export function cons(head: A): (tail: ReadonlyArray) => ReadonlyNonEmptyArray +export function cons(head: A, tail: ReadonlyArray): ReadonlyNonEmptyArray +export function cons( + head: A, + tail?: ReadonlyArray +): ReadonlyNonEmptyArray | ((tail: ReadonlyArray) => ReadonlyNonEmptyArray) { + if (tail === undefined) { + return (tail) => cons(head, tail) + } const len = tail.length const r = Array(len + 1) for (let i = 0; i < len; i++) { diff --git a/test/Array.ts b/test/Array.ts index 296dfe579..389897914 100644 --- a/test/Array.ts +++ b/test/Array.ts @@ -371,9 +371,10 @@ describe('Array', () => { }) it('cons', () => { - const as: Array = [1, 2, 3] - assert.deepStrictEqual(_.cons(0, as), [0, 1, 2, 3]) + assert.deepStrictEqual(_.cons(0, [1, 2, 3]), [0, 1, 2, 3]) assert.deepStrictEqual(_.cons([1], [[2]]), [[1], [2]]) + assert.deepStrictEqual(pipe([1, 2, 3], _.cons(0)), [0, 1, 2, 3]) + assert.deepStrictEqual(pipe([[2]], _.cons([1])), [[1], [2]]) }) it('snoc', () => { diff --git a/test/ReadonlyArray.ts b/test/ReadonlyArray.ts index 64aaeb417..5d36b79d0 100644 --- a/test/ReadonlyArray.ts +++ b/test/ReadonlyArray.ts @@ -367,9 +367,10 @@ describe('ReadonlyArray', () => { }) it('cons', () => { - const as: ReadonlyArray = [1, 2, 3] - assert.deepStrictEqual(_.cons(0, as), [0, 1, 2, 3]) + assert.deepStrictEqual(_.cons(0, [1, 2, 3]), [0, 1, 2, 3]) assert.deepStrictEqual(_.cons([1], [[2]]), [[1], [2]]) + assert.deepStrictEqual(pipe([1, 2, 3], _.cons(0)), [0, 1, 2, 3]) + assert.deepStrictEqual(pipe([[2]], _.cons([1])), [[1], [2]]) }) it('snoc', () => { From 0ac66f81480cb6a5d94d987cb1bea4d427970a14 Mon Sep 17 00:00:00 2001 From: gcanti Date: Sun, 14 Jun 2020 12:22:03 +0200 Subject: [PATCH 016/106] fix examples of new data-last functions --- docs/modules/Array.ts.md | 12 ++++++++---- docs/modules/ReadonlyArray.ts.md | 12 ++++++++---- dtslint/ts3.5/function.ts | 6 +++--- src/Array.ts | 12 ++++++++---- src/ReadonlyArray.ts | 14 ++++++++++---- 5 files changed, 37 insertions(+), 19 deletions(-) diff --git a/docs/modules/Array.ts.md b/docs/modules/Array.ts.md index 383a3818b..67f72b7db 100644 --- a/docs/modules/Array.ts.md +++ b/docs/modules/Array.ts.md @@ -580,8 +580,9 @@ export declare const difference: (E: Eq) => { (xs: A[]): (ys: A[]) => A[]; ```ts import { difference } from 'fp-ts/lib/Array' import { eqNumber } from 'fp-ts/lib/Eq' +import { pipe } from 'fp-ts/lib/function' -assert.deepStrictEqual(difference(eqNumber)([1, 2], [2, 3]), [1]) +assert.deepStrictEqual(pipe([1, 2], difference(eqNumber)([2, 3])), [1]) ``` Added in v2.0.0 @@ -662,8 +663,9 @@ export declare const intersection: (E: Eq) => { (xs: A[]): (ys: A[]) => A[ ```ts import { intersection } from 'fp-ts/lib/Array' import { eqNumber } from 'fp-ts/lib/Eq' +import { pipe } from 'fp-ts/lib/function' -assert.deepStrictEqual(intersection(eqNumber)([1, 2], [2, 3]), [2]) +assert.deepStrictEqual(pipe([1, 2], intersection(eqNumber)([2, 3])), [2]) ``` Added in v2.0.0 @@ -929,8 +931,9 @@ export declare const union: (E: Eq) => { (xs: A[]): (ys: A[]) => A[]; (xs: ```ts import { union } from 'fp-ts/lib/Array' import { eqNumber } from 'fp-ts/lib/Eq' +import { pipe } from 'fp-ts/lib/function' -assert.deepStrictEqual(union(eqNumber)([1, 2], [2, 3]), [1, 2, 3]) +assert.deepStrictEqual(pipe([1, 2], union(eqNumber)([2, 3])), [1, 2, 3]) ``` Added in v2.0.0 @@ -971,8 +974,9 @@ export declare const zip: { (bs: B[]): (as: A[]) => [A, B][]; (as: A ```ts import { zip } from 'fp-ts/lib/Array' +import { pipe } from 'fp-ts/lib/function' -assert.deepStrictEqual(zip([1, 2, 3], ['a', 'b', 'c', 'd']), [ +assert.deepStrictEqual(pipe([1, 2, 3], zip(['a', 'b', 'c', 'd'])), [ [1, 'a'], [2, 'b'], [3, 'c'], diff --git a/docs/modules/ReadonlyArray.ts.md b/docs/modules/ReadonlyArray.ts.md index 595edb6fc..db6f7aed8 100644 --- a/docs/modules/ReadonlyArray.ts.md +++ b/docs/modules/ReadonlyArray.ts.md @@ -583,8 +583,9 @@ export declare function difference( ```ts import { difference } from 'fp-ts/lib/ReadonlyArray' import { eqNumber } from 'fp-ts/lib/Eq' +import { pipe } from 'fp-ts/lib/function' -assert.deepStrictEqual(difference(eqNumber)([1, 2], [2, 3]), [1]) +assert.deepStrictEqual(pipe([1, 2], difference(eqNumber)([2, 3])), [1]) ``` Added in v2.5.0 @@ -670,8 +671,9 @@ export declare function intersection( ```ts import { intersection } from 'fp-ts/lib/ReadonlyArray' import { eqNumber } from 'fp-ts/lib/Eq' +import { pipe } from 'fp-ts/lib/function' -assert.deepStrictEqual(intersection(eqNumber)([1, 2], [2, 3]), [2]) +assert.deepStrictEqual(pipe([1, 2], intersection(eqNumber)([2, 3])), [2]) ``` Added in v2.5.0 @@ -902,8 +904,9 @@ export declare function union( ```ts import { union } from 'fp-ts/lib/ReadonlyArray' import { eqNumber } from 'fp-ts/lib/Eq' +import { pipe } from 'fp-ts/lib/function' -assert.deepStrictEqual(union(eqNumber)([1, 2], [2, 3]), [1, 2, 3]) +assert.deepStrictEqual(pipe([1, 2], union(eqNumber)([2, 3])), [1, 2, 3]) ``` Added in v2.5.0 @@ -945,8 +948,9 @@ export declare function zip(as: ReadonlyArray, bs: ReadonlyArray): R ```ts import { zip } from 'fp-ts/lib/ReadonlyArray' +import { pipe } from 'fp-ts/lib/function' -assert.deepStrictEqual(zip([1, 2, 3], ['a', 'b', 'c', 'd']), [ +assert.deepStrictEqual(pipe([1, 2, 3], zip(['a', 'b', 'c', 'd'])), [ [1, 'a'], [2, 'b'], [3, 'c'], diff --git a/dtslint/ts3.5/function.ts b/dtslint/ts3.5/function.ts index 14363877c..d2cb36746 100644 --- a/dtslint/ts3.5/function.ts +++ b/dtslint/ts3.5/function.ts @@ -6,7 +6,7 @@ import * as A from '../../src/Array' // // should handle generics -_.flip(A.cons) // $ExpectType (b: A[], a: A) => NonEmptyArray +_.flip(A.snoc) // $ExpectType (b: A, a: A[]) => NonEmptyArray // // tuple @@ -17,8 +17,8 @@ _.tuple(1) // $ExpectType [number] _.tuple(1, 'a') // $ExpectType [number, string] _.tuple(1, 'a', true) // $ExpectType [number, string, boolean] -// $ExpectType (head: A, tail: A[]) => Option -_.flow(A.cons, A.head) +// $ExpectType (init: A[], end: A) => Option +_.flow(A.snoc, A.head) // // tupled diff --git a/src/Array.ts b/src/Array.ts index 3e8890be4..08d591da3 100644 --- a/src/Array.ts +++ b/src/Array.ts @@ -691,8 +691,9 @@ export const zipWith: (fa: Array, fb: Array, f: (a: A, b: B) => C * * @example * import { zip } from 'fp-ts/lib/Array' + * import { pipe } from 'fp-ts/lib/function' * - * assert.deepStrictEqual(zip([1, 2, 3], ['a', 'b', 'c', 'd']), [[1, 'a'], [2, 'b'], [3, 'c']]) + * assert.deepStrictEqual(pipe([1, 2, 3], zip(['a', 'b', 'c', 'd'])), [[1, 'a'], [2, 'b'], [3, 'c']]) * * @category combinators * @since 2.0.0 @@ -898,8 +899,9 @@ export function comprehension( * @example * import { union } from 'fp-ts/lib/Array' * import { eqNumber } from 'fp-ts/lib/Eq' + * import { pipe } from 'fp-ts/lib/function' * - * assert.deepStrictEqual(union(eqNumber)([1, 2], [2, 3]), [1, 2, 3]) + * assert.deepStrictEqual(pipe([1, 2], union(eqNumber)([2, 3])), [1, 2, 3]) * * @category combinators * @since 2.0.0 @@ -918,8 +920,9 @@ export const union: ( * @example * import { intersection } from 'fp-ts/lib/Array' * import { eqNumber } from 'fp-ts/lib/Eq' + * import { pipe } from 'fp-ts/lib/function' * - * assert.deepStrictEqual(intersection(eqNumber)([1, 2], [2, 3]), [2]) + * assert.deepStrictEqual(pipe([1, 2], intersection(eqNumber)([2, 3])), [2]) * * @category combinators * @since 2.0.0 @@ -938,8 +941,9 @@ export const intersection: ( * @example * import { difference } from 'fp-ts/lib/Array' * import { eqNumber } from 'fp-ts/lib/Eq' + * import { pipe } from 'fp-ts/lib/function' * - * assert.deepStrictEqual(difference(eqNumber)([1, 2], [2, 3]), [1]) + * assert.deepStrictEqual(pipe([1, 2], difference(eqNumber)([2, 3])), [1]) * * @category combinators * @since 2.0.0 diff --git a/src/ReadonlyArray.ts b/src/ReadonlyArray.ts index 9da5f1759..b2f4242d6 100644 --- a/src/ReadonlyArray.ts +++ b/src/ReadonlyArray.ts @@ -412,6 +412,7 @@ export function cons( return (r as unknown) as ReadonlyNonEmptyArray } +// TODO: curry and make data-last in v3 /** * Append an element to the end of an array, creating a new non empty array * @@ -971,6 +972,7 @@ export function sort(O: Ord): (as: ReadonlyArray) => ReadonlyArray { return (as) => (isEmpty(as) ? as : as.slice().sort(O.compare)) } +// TODO: curry and make data-last in v3 /** * Apply a function to pairs of elements at the same index in two arrays, collecting the results in a new array. If one * input array is short, excess elements of the longer array are discarded. @@ -999,8 +1001,9 @@ export function zipWith(fa: ReadonlyArray, fb: ReadonlyArray, f: * * @example * import { zip } from 'fp-ts/lib/ReadonlyArray' + * import { pipe } from 'fp-ts/lib/function' * - * assert.deepStrictEqual(zip([1, 2, 3], ['a', 'b', 'c', 'd']), [[1, 'a'], [2, 'b'], [3, 'c']]) + * assert.deepStrictEqual(pipe([1, 2, 3], zip(['a', 'b', 'c', 'd'])), [[1, 'a'], [2, 'b'], [3, 'c']]) * * @category combinators * @since 2.5.0 @@ -1304,8 +1307,9 @@ export function comprehension( * @example * import { union } from 'fp-ts/lib/ReadonlyArray' * import { eqNumber } from 'fp-ts/lib/Eq' + * import { pipe } from 'fp-ts/lib/function' * - * assert.deepStrictEqual(union(eqNumber)([1, 2], [2, 3]), [1, 2, 3]) + * assert.deepStrictEqual(pipe([1, 2], union(eqNumber)([2, 3])), [1, 2, 3]) * * @category combinators * @since 2.5.0 @@ -1339,8 +1343,9 @@ export function union( * @example * import { intersection } from 'fp-ts/lib/ReadonlyArray' * import { eqNumber } from 'fp-ts/lib/Eq' + * import { pipe } from 'fp-ts/lib/function' * - * assert.deepStrictEqual(intersection(eqNumber)([1, 2], [2, 3]), [2]) + * assert.deepStrictEqual(pipe([1, 2], intersection(eqNumber)([2, 3])), [2]) * * @category combinators * @since 2.5.0 @@ -1371,8 +1376,9 @@ export function intersection( * @example * import { difference } from 'fp-ts/lib/ReadonlyArray' * import { eqNumber } from 'fp-ts/lib/Eq' + * import { pipe } from 'fp-ts/lib/function' * - * assert.deepStrictEqual(difference(eqNumber)([1, 2], [2, 3]), [1]) + * assert.deepStrictEqual(pipe([1, 2], difference(eqNumber)([2, 3])), [1]) * * @category combinators * @since 2.5.0 From 3a1a20b941f90fe2975b6bc3ecc743deff5a2c39 Mon Sep 17 00:00:00 2001 From: gcanti Date: Tue, 16 Jun 2020 07:11:32 +0200 Subject: [PATCH 017/106] add v3 comments --- src/Applicative.ts | 1 + src/Array.ts | 8 ++++++++ src/Chain.ts | 2 ++ src/ChainRec.ts | 2 ++ src/Choice.ts | 2 ++ src/Compactable.ts | 1 + src/Either.ts | 3 +++ src/EitherT.ts | 2 ++ src/Filterable.ts | 1 + src/Foldable.ts | 3 +++ src/FoldableWithIndex.ts | 1 + src/Functor.ts | 1 + src/FunctorWithIndex.ts | 1 + src/IOEither.ts | 1 + src/NonEmptyArray.ts | 4 ++++ src/OptionT.ts | 2 ++ src/ReaderEither.ts | 2 ++ src/ReaderT.ts | 2 ++ src/ReaderTask.ts | 2 ++ src/ReaderTaskEither.ts | 2 ++ src/ReadonlyArray.ts | 7 +++++++ src/ReadonlyTuple.ts | 1 + src/Semigroup.ts | 1 + src/State.ts | 2 ++ src/StateReaderTaskEither.ts | 3 +++ src/StateT.ts | 2 ++ src/Strong.ts | 2 ++ src/TaskThese.ts | 1 + src/These.ts | 3 +++ src/TheseT.ts | 2 ++ src/Traced.ts | 1 + src/Traversable.ts | 1 + src/Tuple.ts | 1 + src/function.ts | 1 + src/pipeable.ts | 2 ++ 35 files changed, 73 insertions(+) diff --git a/src/Applicative.ts b/src/Applicative.ts index 2266148e3..c92970b8e 100644 --- a/src/Applicative.ts +++ b/src/Applicative.ts @@ -190,6 +190,7 @@ export interface ApplicativeComposition22C ) => Kind2> } +// TODO: remove in v3 /** * Like `Functor`, `Applicative`s compose. If `F` and `G` have `Applicative` instances, then so does `F>` * diff --git a/src/Array.ts b/src/Array.ts index 08d591da3..c585ea328 100644 --- a/src/Array.ts +++ b/src/Array.ts @@ -225,6 +225,7 @@ export const isNonEmpty: (as: Array) => as is NonEmptyArray = RA.isNonE */ export const isOutOfBound: (i: number, as: Array) => boolean = RA.isOutOfBound +// TODO: remove non-curried overloading in v3 /** * This function provides a safe way to read a value at a particular index from an array * @@ -243,6 +244,7 @@ export const lookup: { (i: number, as: Array): Option } = RA.lookup +// TODO: remove non-curried overloading in v3 /** * Attaches an element to the front of an array, creating a new non empty array * @@ -260,6 +262,7 @@ export const cons: { (head: A, tail: Array): NonEmptyArray } = RA.cons as any +// TODO: curry in v3 /** * Append an element to the end of an array, creating a new non empty array * @@ -685,6 +688,7 @@ export const sort: (O: Ord) => (as: Array) => Array = RA.sort as any */ export const zipWith: (fa: Array, fb: Array, f: (a: A, b: B) => C) => Array = RA.zipWith as any +// TODO: remove non-curried overloading in v3 /** * Takes two arrays and returns an array of corresponding pairs. If one input array is short, excess elements of the * longer array are discarded @@ -728,6 +732,7 @@ export const unzip: (as: Array<[A, B]>) => [Array, Array] = RA.unzip */ export const rotate: (n: number) => (as: Array) => Array = RA.rotate as any +// TODO: remove non-curried overloading in v3 /** * Test if a value is a member of an array. Takes a `Eq` as a single * argument which returns the function to use to search for a value of type `A` in @@ -893,6 +898,7 @@ export function comprehension( return RA.comprehension(input as any, f, g) as any } +// TODO: remove non-curried overloading in v3 /** * Creates an array of unique values, in order, from all given arrays using a `Eq` for equality comparisons * @@ -913,6 +919,7 @@ export const union: ( (xs: Array, ys: Array): Array } = RA.union as any +// TODO: remove non-curried overloading in v3 /** * Creates an array of unique values that are included in all given arrays using a `Eq` for equality * comparisons. The order and references of result values are determined by the first array. @@ -934,6 +941,7 @@ export const intersection: ( (xs: Array, ys: Array): Array } = RA.intersection as any +// TODO: remove non-curried overloading in v3 /** * Creates an array of array values not included in the other given array using a `Eq` for equality * comparisons. The order and references of result values are determined by the first array. diff --git a/src/Chain.ts b/src/Chain.ts index 545c68a65..b3b7e3ccc 100644 --- a/src/Chain.ts +++ b/src/Chain.ts @@ -13,6 +13,8 @@ import { Apply, Apply1, Apply2, Apply2C, Apply3, Apply4, Apply3C } from './Apply' import { HKT, Kind, Kind2, Kind3, Kind4, URIS, URIS2, URIS3, URIS4 } from './HKT' +// TODO: remove module in v3 + /** * @category type classes * @since 2.0.0 diff --git a/src/ChainRec.ts b/src/ChainRec.ts index 2122a71a8..a9b39f53f 100644 --- a/src/ChainRec.ts +++ b/src/ChainRec.ts @@ -5,6 +5,8 @@ import { Chain, Chain1, Chain2, Chain2C, Chain3 } from './Chain' import { Either } from './Either' import { HKT, Kind, Kind2, Kind3, URIS, URIS2, URIS3 } from './HKT' +// TODO: remove module in v3 + /** * @category type classes * @since 2.0.0 diff --git a/src/Choice.ts b/src/Choice.ts index 728fd6aac..5c596eb6a 100644 --- a/src/Choice.ts +++ b/src/Choice.ts @@ -34,6 +34,8 @@ import { Profunctor, Profunctor2, Profunctor3, Profunctor4 } from './Profunctor' import { Category, Category2, Category3 } from './Category' import { identity } from './function' +// TODO: remove module in v3 + /** * @category type classes * @since 2.0.0 diff --git a/src/Compactable.ts b/src/Compactable.ts index ec6ca15e9..66b5c3ae2 100644 --- a/src/Compactable.ts +++ b/src/Compactable.ts @@ -216,6 +216,7 @@ export interface CompactableComposition23C ) => Separated>, Kind2>> } +// TODO: remove in v3 /** * @since 2.0.0 */ diff --git a/src/Either.ts b/src/Either.ts index 1512e5d49..ef9ebe9e7 100644 --- a/src/Either.ts +++ b/src/Either.ts @@ -116,6 +116,7 @@ export function right(a: A): Either { return { _tag: 'Right', right: a } } +// TODO: make lazy in v3 /** * Takes a default and a nullable value, if the value is not nully, turn it into a `Right`, if the value is nully use * the provided default as a `Left` @@ -135,6 +136,7 @@ export function fromNullable(e: E): (a: A) => Either> { return (a: A) => (a == null ? left(e) : right(a as NonNullable)) } +// TODO: `onError => Lazy => Either` in v3 /** * Constructs a new `Either` from a function that might throw * @@ -703,6 +705,7 @@ export function getWitherable(M: Monoid): Witherable2C { } } +// TODO: remove in v3 /** * @category instances * @since 2.0.0 diff --git a/src/EitherT.ts b/src/EitherT.ts index 3ce522756..0f6f97ca0 100644 --- a/src/EitherT.ts +++ b/src/EitherT.ts @@ -8,6 +8,8 @@ import { flow, pipe } from './function' import { HKT, Kind, Kind2, URIS, URIS2 } from './HKT' import { Monad, Monad1, Monad2 } from './Monad' +// TODO: remove module in v3 + import Either = E.Either import URI = E.URI diff --git a/src/Filterable.ts b/src/Filterable.ts index a1eb6dbd9..f744069c4 100644 --- a/src/Filterable.ts +++ b/src/Filterable.ts @@ -444,6 +444,7 @@ export interface FilterableComposition23C ) => Kind2> } +// TODO: remove in v3 /** * @since 2.0.0 */ diff --git a/src/Foldable.ts b/src/Foldable.ts index c119e02e5..0ef5dc1fc 100644 --- a/src/Foldable.ts +++ b/src/Foldable.ts @@ -158,6 +158,7 @@ export interface FoldableComposition22C { readonly reduceRight: (fa: Kind2>, b: B, f: (a: A, b: B) => B) => B } +// TODO: remove in v3 /** * Returns the composition of two foldables * @@ -214,6 +215,7 @@ export function getFoldableComposition(F: Foldable, G: Foldable): Fo } } +// TODO: rename to `reduceM` in v3 /** * Similar to 'reduce', but the result is encapsulated in a monad. * @@ -293,6 +295,7 @@ export function intercalate(M: Monoid, F: Foldable): (sep: M, fm: HK } } +// TODO: remove in v3 /** * Traverse a data structure, performing some effects encoded by an `Applicative` functor at each value, ignoring the * final result. diff --git a/src/FoldableWithIndex.ts b/src/FoldableWithIndex.ts index e52802065..0b9dce5a7 100644 --- a/src/FoldableWithIndex.ts +++ b/src/FoldableWithIndex.ts @@ -202,6 +202,7 @@ export interface FoldableWithIndexComposition22C { readonly map: (fa: Kind2>, f: (a: A) => B) => Kind2> } +// TODO: remove in v3 /** * @since 2.0.0 */ diff --git a/src/FunctorWithIndex.ts b/src/FunctorWithIndex.ts index a0212a16d..0465c7372 100644 --- a/src/FunctorWithIndex.ts +++ b/src/FunctorWithIndex.ts @@ -160,6 +160,7 @@ export interface FunctorWithIndexComposition22C(M: Monoid): Monoid> { } } +// TODO: remove in v3 /** * @category instances * @since 2.0.0 diff --git a/src/NonEmptyArray.ts b/src/NonEmptyArray.ts index 9868f000f..409490182 100644 --- a/src/NonEmptyArray.ts +++ b/src/NonEmptyArray.ts @@ -34,6 +34,7 @@ export interface NonEmptyArray extends Array { } /* tslint:enable:readonly-keyword */ +// TODO: remove in v3 /** * Append an element to the front of an array, creating a new non empty array * @@ -47,6 +48,7 @@ export interface NonEmptyArray extends Array { */ export const cons: (head: A, tail: Array) => NonEmptyArray = RNEA.cons as any +// TODO: remove in v3 /** * Append an element to the end of an array, creating a new non empty array * @@ -68,6 +70,7 @@ export const snoc: (init: Array, end: A) => NonEmptyArray = RNEA.snoc a */ export const fromArray: (as: Array) => Option> = RNEA.fromArray as any +// TODO: remove in v3 /** * @category instances * @since 2.0.0 @@ -267,6 +270,7 @@ export const filterWithIndex: ( */ export const of: (a: A) => NonEmptyArray = RNEA.of as any +// TODO: curry in v3 /** * @category constructors * @since 2.2.0 diff --git a/src/OptionT.ts b/src/OptionT.ts index 8033bf2c9..0535e3c59 100644 --- a/src/OptionT.ts +++ b/src/OptionT.ts @@ -12,6 +12,8 @@ import { HKT, Kind, Kind2, URIS, URIS2 } from './HKT' import { Monad, Monad1, Monad2, Monad2C } from './Monad' import { fold, none, Option, applicativeOption, some, URI } from './Option' +// TODO: remove module in v3 + /** * @category model * @since 2.0.0 diff --git a/src/ReaderEither.ts b/src/ReaderEither.ts index fd9fdf864..78227f695 100644 --- a/src/ReaderEither.ts +++ b/src/ReaderEither.ts @@ -145,6 +145,7 @@ export const swap: (ma: ReaderEither) => ReaderEither /*#__PURE__*/ R.map(E.swap) +// TODO: remove in v3 /** * @category combinators * @since 2.0.0 @@ -395,6 +396,7 @@ export function getApplyMonoid(M: Monoid): Monoid(f: (r: R) => A) => ReaderTask = (f) => ( // combinators // ------------------------------------------------------------------------------------- +// TODO: remove in v3 /** * @category combinators * @since 2.3.0 @@ -289,6 +290,7 @@ export const readerTaskSeq: typeof readerTask = { // utils // ------------------------------------------------------------------------------------- +// TODO: remove in v3 /** * @since 2.4.0 */ diff --git a/src/ReaderTaskEither.ts b/src/ReaderTaskEither.ts index fe1333d77..30912af6d 100644 --- a/src/ReaderTaskEither.ts +++ b/src/ReaderTaskEither.ts @@ -240,6 +240,7 @@ export function swap(ma: ReaderTaskEither): ReaderTaskEither TE.swap(ma(e)) } +// TODO: remove in v3 /** * @category combinators * @since 2.0.0 @@ -665,6 +666,7 @@ export const readerTaskEitherSeq: typeof readerTaskEither = { // utils // ------------------------------------------------------------------------------------- +// TODO: remove in v3 /** * @since 2.0.0 */ diff --git a/src/ReadonlyArray.ts b/src/ReadonlyArray.ts index b2f4242d6..f369e5f67 100644 --- a/src/ReadonlyArray.ts +++ b/src/ReadonlyArray.ts @@ -363,6 +363,7 @@ export function isOutOfBound(i: number, as: ReadonlyArray): boolean { return i < 0 || i >= as.length } +// TODO: remove non-curried overloading in v3 /** * This function provides a safe way to read a value at a particular index from an array * @@ -382,6 +383,7 @@ export function lookup(i: number, as?: ReadonlyArray): Option | ((as return as === undefined ? (as) => lookup(i, as) : isOutOfBound(i, as) ? none : some(as[i]) } +// TODO: remove non-curried overloading in v3 /** * Attaches an element to the front of an array, creating a new non empty array * @@ -995,6 +997,7 @@ export function zipWith(fa: ReadonlyArray, fb: ReadonlyArray, f: return fc } +// TODO: remove non-curried overloading in v3 /** * Takes two arrays and returns an array of corresponding pairs. If one input array is short, excess elements of the * longer array are discarded @@ -1068,6 +1071,7 @@ export function rotate(n: number): (as: ReadonlyArray) => ReadonlyArray } } +// TODO: remove non-curried overloading in v3 /** * Test if a value is a member of an array. Takes a `Eq` as a single * argument which returns the function to use to search for a value of type `A` in @@ -1301,6 +1305,7 @@ export function comprehension( return go(empty, input) } +// TODO: remove non-curried overloading in v3 /** * Creates an array of unique values, in order, from all given arrays using a `Eq` for equality comparisons * @@ -1336,6 +1341,7 @@ export function union( } } +// TODO: remove non-curried overloading in v3 /** * Creates an array of unique values that are included in all given arrays using a `Eq` for equality * comparisons. The order and references of result values are determined by the first array. @@ -1369,6 +1375,7 @@ export function intersection( } } +// TODO: remove non-curried overloading in v3 /** * Creates an array of array values not included in the other given array using a `Eq` for equality * comparisons. The order and references of result values are determined by the first array. diff --git a/src/ReadonlyTuple.ts b/src/ReadonlyTuple.ts index 3b4b60916..cae3344cb 100644 --- a/src/ReadonlyTuple.ts +++ b/src/ReadonlyTuple.ts @@ -111,6 +111,7 @@ export function getMonad(M: Monoid): Monad2C { } } +// TODO: remove in v3 /** * @category instances * @since 2.5.0 diff --git a/src/Semigroup.ts b/src/Semigroup.ts index 81889f61d..93f9e54b2 100644 --- a/src/Semigroup.ts +++ b/src/Semigroup.ts @@ -16,6 +16,7 @@ import { ReadonlyRecord } from './ReadonlyRecord' */ export interface Semigroup extends Magma {} +// TODO: remove non-curried overloading in v3 /** * @example * import * as S from 'fp-ts/lib/Semigroup' diff --git a/src/State.ts b/src/State.ts index 589bab21e..488d3bb40 100644 --- a/src/State.ts +++ b/src/State.ts @@ -193,6 +193,7 @@ export const state: Monad2 = { // utils // ------------------------------------------------------------------------------------- +// TODO: curry and rename to `evaluate` in v3 /** * Run a computation in the `State` monad, discarding the final state * @@ -200,6 +201,7 @@ export const state: Monad2 = { */ export const evalState: (ma: State, s: S) => A = (ma, s) => ma(s)[0] +// TODO: curry and rename to `execute` in v3 /** * Run a computation in the `State` monad discarding the result * diff --git a/src/StateReaderTaskEither.ts b/src/StateReaderTaskEither.ts index 7396b5cd3..86f7f1411 100644 --- a/src/StateReaderTaskEither.ts +++ b/src/StateReaderTaskEither.ts @@ -603,6 +603,7 @@ export const stateReaderTaskEitherSeq: typeof stateReaderTaskEither = { // utils // ------------------------------------------------------------------------------------- +// TODO: remove in v3 /* tslint:disable:readonly-array */ /** * @since 2.0.0 @@ -612,6 +613,7 @@ export function run(ma: StateReaderTaskEither, s: S, r: } /* tslint:enable:readonly-array */ +// TODO: curry and rename to `evaluate` in v3 /** * Run a computation in the `StateReaderTaskEither` monad, discarding the final state * @@ -626,6 +628,7 @@ export const evalState: (ma: StateReaderTaskEither, s: S RTE.map(([a]) => a) ) +// TODO: curry and rename to `execute` in v3 /** * Run a computation in the `StateReaderTaskEither` monad discarding the result * diff --git a/src/StateT.ts b/src/StateT.ts index ee72f0eee..a0176a159 100644 --- a/src/StateT.ts +++ b/src/StateT.ts @@ -5,6 +5,8 @@ import { HKT, Kind, Kind2, Kind3, URIS, URIS2, URIS3 } from './HKT' import { Monad, Monad1, Monad2, Monad2C, Monad3, Monad3C } from './Monad' import { State } from './State' +// TODO: remove module in v3 + /* tslint:disable:readonly-array */ /** * @category model diff --git a/src/Strong.ts b/src/Strong.ts index a56f4bb92..16a5049ba 100644 --- a/src/Strong.ts +++ b/src/Strong.ts @@ -32,6 +32,8 @@ import { identity } from './function' import { HKT2, Kind2, Kind3, URIS2, URIS3, URIS4, Kind4 } from './HKT' import { Profunctor, Profunctor2, Profunctor3, Profunctor4 } from './Profunctor' +// TODO: remove module in v3 + /* tslint:disable:readonly-array */ /** diff --git a/src/TaskThese.ts b/src/TaskThese.ts index 4dc979315..3db4dcfad 100644 --- a/src/TaskThese.ts +++ b/src/TaskThese.ts @@ -106,6 +106,7 @@ export const fold: ( /*#__PURE__*/ flow(TH.fold, T.chain) +// TODO: make lazy in v3 /* tslint:disable:readonly-array */ /** * @category destructors diff --git a/src/These.ts b/src/These.ts index a75efda7f..2543c3850 100644 --- a/src/These.ts +++ b/src/These.ts @@ -191,6 +191,7 @@ export function getMonad(S: Semigroup): Monad2C & MonadThrow2C(fa: These): fa is Both { return fa._tag === 'Both' } +// TODO: make lazy in v3 /** * @example * import { leftOrBoth, left, both } from 'fp-ts/lib/These' @@ -289,6 +291,7 @@ export function leftOrBoth(e: E): (ma: Option) => These { return (ma) => (isNone(ma) ? left(e) : both(e, ma.value)) } +// TODO: make lazy in v3 /** * @example * import { rightOrBoth, right, both } from 'fp-ts/lib/These' diff --git a/src/TheseT.ts b/src/TheseT.ts index 76366ec24..66a3910fe 100644 --- a/src/TheseT.ts +++ b/src/TheseT.ts @@ -6,6 +6,8 @@ import { Monad, Monad1, Monad2 } from './Monad' import { Semigroup } from './Semigroup' import { bimap, both, fold, left, map, mapLeft, right, swap, These, toTuple } from './These' +// TODO: remove module in v3 + /** * @category model * @since 2.4.0 diff --git a/src/Traced.ts b/src/Traced.ts index 5cc59c575..bc79832c4 100644 --- a/src/Traced.ts +++ b/src/Traced.ts @@ -17,6 +17,7 @@ export interface Traced { (p: P): A } +// TODO: curry in v3 /** * Extracts a value at a relative position which depends on the current value. * diff --git a/src/Traversable.ts b/src/Traversable.ts index 1f597600a..bea97e072 100644 --- a/src/Traversable.ts +++ b/src/Traversable.ts @@ -337,6 +337,7 @@ export interface TraversableComposition11 readonly sequence: SequenceComposition11 } +// TODO: remove in v3 /** * Returns the composition of two traversables * diff --git a/src/Tuple.ts b/src/Tuple.ts index a86f3a8c2..d51ffce31 100644 --- a/src/Tuple.ts +++ b/src/Tuple.ts @@ -63,6 +63,7 @@ export const getChain: (S: Semigroup) => Chain2C = RT.getChain as */ export const getMonad: (M: Monoid) => Monad2C = RT.getMonad as any +// TODO: remove in v3 /** * @category instances * @since 2.0.0 diff --git a/src/function.ts b/src/function.ts index f5e6980c0..8a27130ff 100644 --- a/src/function.ts +++ b/src/function.ts @@ -115,6 +115,7 @@ export const constVoid = (): void => { return } +// TODO: remove in v3 /** * Flips the order of the arguments of a function of two arguments. * diff --git a/src/pipeable.ts b/src/pipeable.ts index 19d4fa986..5f38a565c 100644 --- a/src/pipeable.ts +++ b/src/pipeable.ts @@ -89,6 +89,8 @@ import { Semigroupoid3C } from './Semigroupoid' +// TODO: remove module in v3 + /** * Use [`pipe`](https://gcanti.github.io/fp-ts/modules/function.ts.html#flow) from `function` module instead. * From 1da572498d0705bd71c4bf1c90d81a59af223e06 Mon Sep 17 00:00:00 2001 From: gcanti Date: Tue, 16 Jun 2020 08:43:49 +0200 Subject: [PATCH 018/106] make Map#member / ReadonlyMap#member data-last --- CHANGELOG.md | 4 ++++ docs/modules/Map.ts.md | 2 +- docs/modules/ReadonlyMap.ts.md | 7 ++++++- dtslint/ts3.5/Map.ts | 8 ++++++++ dtslint/ts3.5/ReadonlyMap.ts | 20 ++++++++++++++++++++ src/Map.ts | 8 +++++++- src/ReadonlyMap.ts | 17 +++++++++++++++-- test/Map.ts | 12 +++++++++--- test/ReadonlyMap.ts | 12 +++++++++--- 9 files changed, 79 insertions(+), 11 deletions(-) create mode 100644 dtslint/ts3.5/ReadonlyMap.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index 9eb633ce2..fb121388d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,8 @@ high state of flux, you're at risk of it changing without notice. - make `union` data-last (@gcanti) - make `zip` data-last (@gcanti) - make `cons` data-last (@gcanti) + - `Map` + - make `elem` data-last (@gcanti) - `ReadonlyArray` - export `unfold` (@gcanti) - make `lookup` data-last (@gcanti) @@ -35,6 +37,8 @@ high state of flux, you're at risk of it changing without notice. - make `union` data-last (@gcanti) - make `zip` data-last (@gcanti) - make `cons` data-last (@gcanti) + - `ReadonlyMap` + - make `elem` data-last (@gcanti) - `Semigroup` - make `fold` data-last (@gcanti) diff --git a/docs/modules/Map.ts.md b/docs/modules/Map.ts.md index 072fb0e55..1b01d38c2 100644 --- a/docs/modules/Map.ts.md +++ b/docs/modules/Map.ts.md @@ -386,7 +386,7 @@ Test whether or not a key exists in a map **Signature** ```ts -export declare const member: (E: Eq) => (k: K, m: Map) => boolean +export declare const member: (E: Eq) => { (k: K): (m: Map) => boolean; (k: K, m: Map): boolean } ``` Added in v2.0.0 diff --git a/docs/modules/ReadonlyMap.ts.md b/docs/modules/ReadonlyMap.ts.md index 442634244..eb52ab879 100644 --- a/docs/modules/ReadonlyMap.ts.md +++ b/docs/modules/ReadonlyMap.ts.md @@ -464,7 +464,12 @@ Test whether or not a key exists in a map **Signature** ```ts -export declare function member(E: Eq): (k: K, m: ReadonlyMap) => boolean +export declare function member( + E: Eq +): { + (k: K): (m: ReadonlyMap) => boolean + (k: K, m: ReadonlyMap): boolean +} ``` Added in v2.5.0 diff --git a/dtslint/ts3.5/Map.ts b/dtslint/ts3.5/Map.ts index e61776aac..ed558a03d 100644 --- a/dtslint/ts3.5/Map.ts +++ b/dtslint/ts3.5/Map.ts @@ -1,4 +1,5 @@ import * as _ from '../../src/Map' +import { eqString } from '../../src/Eq' // // FilterableWithIndex overloadings @@ -10,3 +11,10 @@ declare function isStringWithKey(i: 'a' | 'b', x: unknown): x is string FWI.filterWithIndex(_.empty as Map<'a' | 'b', string | number>, isStringWithKey) // $ExpectType Map<"a" | "b", string> FWI.partitionWithIndex(_.empty as Map<'a' | 'b', string | number>, isStringWithKey) // $ExpectType Separated, Map<"a" | "b", string>> + +// +// member +// + +_.member(eqString)('a', new Map()) // $ExpectType boolean +_.member(eqString)('a') // $ExpectType (m: Map) => boolean diff --git a/dtslint/ts3.5/ReadonlyMap.ts b/dtslint/ts3.5/ReadonlyMap.ts new file mode 100644 index 000000000..069d46046 --- /dev/null +++ b/dtslint/ts3.5/ReadonlyMap.ts @@ -0,0 +1,20 @@ +import * as _ from '../../src/ReadonlyMap' +import { eqString } from '../../src/Eq' + +// +// FilterableWithIndex overloadings +// + +const FWI = _.getFilterableWithIndex<'a' | 'b'>() + +declare function isStringWithKey(i: 'a' | 'b', x: unknown): x is string + +FWI.filterWithIndex(_.empty as ReadonlyMap<'a' | 'b', string | number>, isStringWithKey) // $ExpectType ReadonlyMap<"a" | "b", string> +FWI.partitionWithIndex(_.empty as ReadonlyMap<'a' | 'b', string | number>, isStringWithKey) // $ExpectType Separated, ReadonlyMap<"a" | "b", string>> + +// +// member +// + +_.member(eqString)('a', new Map()) // $ExpectType boolean +_.member(eqString)('a') // $ExpectType (m: ReadonlyMap) => boolean diff --git a/src/Map.ts b/src/Map.ts index 82fb27930..aba94f581 100644 --- a/src/Map.ts +++ b/src/Map.ts @@ -42,12 +42,18 @@ export const size: (d: Map) => number = RM.size */ export const isEmpty: (d: Map) => boolean = RM.isEmpty +// TODO: remove non-curried overloading in v3 /** * Test whether or not a key exists in a map * * @since 2.0.0 */ -export const member: (E: Eq) => (k: K, m: Map) => boolean = RM.member +export const member: ( + E: Eq +) => { + (k: K): (m: Map) => boolean + (k: K, m: Map): boolean +} = RM.member /** * Test whether or not a value is a member of a map diff --git a/src/ReadonlyMap.ts b/src/ReadonlyMap.ts index 5b878a751..0f0e52a28 100644 --- a/src/ReadonlyMap.ts +++ b/src/ReadonlyMap.ts @@ -79,14 +79,27 @@ export function isEmpty(d: ReadonlyMap): boolean { return d.size === 0 } +// TODO: remove non-curried overloading in v3 /** * Test whether or not a key exists in a map * * @since 2.5.0 */ -export function member(E: Eq): (k: K, m: ReadonlyMap) => boolean { +export function member( + E: Eq +): { + (k: K): (m: ReadonlyMap) => boolean + (k: K, m: ReadonlyMap): boolean +} +export function member(E: Eq): (k: K, m?: ReadonlyMap) => boolean | ((m: ReadonlyMap) => boolean) { const lookupE = lookup(E) - return (k, m) => O.isSome(lookupE(k, m)) + return (k, m) => { + if (m === undefined) { + const memberE = member(E) + return (m) => memberE(k, m) + } + return O.isSome(lookupE(k, m)) + } } interface Next { diff --git a/test/Map.ts b/test/Map.ts index 2e1ac3b86..9e8d4d965 100644 --- a/test/Map.ts +++ b/test/Map.ts @@ -72,19 +72,25 @@ describe('Map', () => { }) it('member', () => { - const a1b2 = new Map([ + const x = new Map([ [{ id: 'a' }, 1], [{ id: 'b' }, 2] ]) const memberS = _.member(eqUser) - assert.deepStrictEqual(memberS({ id: 'a' }, a1b2), true) - assert.deepStrictEqual(memberS({ id: 'c' }, a1b2), false) + assert.deepStrictEqual(memberS({ id: 'a' }, x), true) + assert.deepStrictEqual(memberS({ id: 'c' }, x), false) + assert.deepStrictEqual(memberS({ id: 'a' })(x), true) + assert.deepStrictEqual(memberS({ id: 'c' })(x), false) const member = _.member(eqKey) assert.deepStrictEqual(member({ id: 1 }, repo), true) assert.deepStrictEqual(member({ id: 2 }, repo), true) assert.deepStrictEqual(member({ id: 4 }, repo), true) assert.deepStrictEqual(member({ id: 3 }, repo), false) + assert.deepStrictEqual(member({ id: 1 })(repo), true) + assert.deepStrictEqual(member({ id: 2 })(repo), true) + assert.deepStrictEqual(member({ id: 4 })(repo), true) + assert.deepStrictEqual(member({ id: 3 })(repo), false) }) it('elem', () => { diff --git a/test/ReadonlyMap.ts b/test/ReadonlyMap.ts index fb48b7158..9cc573254 100644 --- a/test/ReadonlyMap.ts +++ b/test/ReadonlyMap.ts @@ -167,19 +167,25 @@ describe('ReadonlyMap', () => { }) it('member', () => { - const a1b2 = new Map([ + const x = new Map([ [{ id: 'a' }, 1], [{ id: 'b' }, 2] ]) const memberS = _.member(eqUser) - assert.deepStrictEqual(memberS({ id: 'a' }, a1b2), true) - assert.deepStrictEqual(memberS({ id: 'c' }, a1b2), false) + assert.deepStrictEqual(memberS({ id: 'a' }, x), true) + assert.deepStrictEqual(memberS({ id: 'c' }, x), false) + assert.deepStrictEqual(memberS({ id: 'a' })(x), true) + assert.deepStrictEqual(memberS({ id: 'c' })(x), false) const member = _.member(eqKey) assert.deepStrictEqual(member({ id: 1 }, repo), true) assert.deepStrictEqual(member({ id: 2 }, repo), true) assert.deepStrictEqual(member({ id: 4 }, repo), true) assert.deepStrictEqual(member({ id: 3 }, repo), false) + assert.deepStrictEqual(member({ id: 1 })(repo), true) + assert.deepStrictEqual(member({ id: 2 })(repo), true) + assert.deepStrictEqual(member({ id: 4 })(repo), true) + assert.deepStrictEqual(member({ id: 3 })(repo), false) }) it('elem', () => { From 49b453f307698fc2266ef9b86020e78cc7c9dafd Mon Sep 17 00:00:00 2001 From: gcanti Date: Tue, 16 Jun 2020 09:05:00 +0200 Subject: [PATCH 019/106] make Map#elem / ReadonlyMap#elem data-last --- CHANGELOG.md | 2 ++ docs/modules/Map.ts.md | 2 +- docs/modules/ReadonlyMap.ts.md | 7 ++++++- dtslint/ts3.5/Map.ts | 7 +++++++ dtslint/ts3.5/ReadonlyMap.ts | 7 +++++++ src/Map.ts | 8 +++++++- src/ReadonlyMap.ts | 13 ++++++++++++- test/Map.ts | 20 +++++++++++++------- test/ReadonlyMap.ts | 20 +++++++++++++------- 9 files changed, 68 insertions(+), 18 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fb121388d..6db7c0e51 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,7 @@ high state of flux, you're at risk of it changing without notice. - make `zip` data-last (@gcanti) - make `cons` data-last (@gcanti) - `Map` + - make `member` data-last (@gcanti) - make `elem` data-last (@gcanti) - `ReadonlyArray` - export `unfold` (@gcanti) @@ -38,6 +39,7 @@ high state of flux, you're at risk of it changing without notice. - make `zip` data-last (@gcanti) - make `cons` data-last (@gcanti) - `ReadonlyMap` + - make `member` data-last (@gcanti) - make `elem` data-last (@gcanti) - `Semigroup` - make `fold` data-last (@gcanti) diff --git a/docs/modules/Map.ts.md b/docs/modules/Map.ts.md index 1b01d38c2..b72c7fde2 100644 --- a/docs/modules/Map.ts.md +++ b/docs/modules/Map.ts.md @@ -303,7 +303,7 @@ Test whether or not a value is a member of a map **Signature** ```ts -export declare const elem: (E: Eq) => (a: A, m: Map) => boolean +export declare const elem: (E: Eq) => { (a: A): (m: Map) => boolean; (a: A, m: Map): boolean } ``` Added in v2.0.0 diff --git a/docs/modules/ReadonlyMap.ts.md b/docs/modules/ReadonlyMap.ts.md index eb52ab879..e2328ffba 100644 --- a/docs/modules/ReadonlyMap.ts.md +++ b/docs/modules/ReadonlyMap.ts.md @@ -381,7 +381,12 @@ Test whether or not a value is a member of a map **Signature** ```ts -export declare function elem(E: Eq): (a: A, m: ReadonlyMap) => boolean +export declare function elem( + E: Eq +): { + (a: A): (m: ReadonlyMap) => boolean + (a: A, m: ReadonlyMap): boolean +} ``` Added in v2.5.0 diff --git a/dtslint/ts3.5/Map.ts b/dtslint/ts3.5/Map.ts index ed558a03d..9ebe66027 100644 --- a/dtslint/ts3.5/Map.ts +++ b/dtslint/ts3.5/Map.ts @@ -18,3 +18,10 @@ FWI.partitionWithIndex(_.empty as Map<'a' | 'b', string | number>, isStringWithK _.member(eqString)('a', new Map()) // $ExpectType boolean _.member(eqString)('a') // $ExpectType (m: Map) => boolean + +// +// elem +// + +_.elem(eqString)('a', new Map()) // $ExpectType boolean +_.elem(eqString)('a') // $ExpectType (m: Map) => boolean diff --git a/dtslint/ts3.5/ReadonlyMap.ts b/dtslint/ts3.5/ReadonlyMap.ts index 069d46046..87e0b716e 100644 --- a/dtslint/ts3.5/ReadonlyMap.ts +++ b/dtslint/ts3.5/ReadonlyMap.ts @@ -18,3 +18,10 @@ FWI.partitionWithIndex(_.empty as ReadonlyMap<'a' | 'b', string | number>, isStr _.member(eqString)('a', new Map()) // $ExpectType boolean _.member(eqString)('a') // $ExpectType (m: ReadonlyMap) => boolean + +// +// elem +// + +_.elem(eqString)('a', new Map()) // $ExpectType boolean +_.elem(eqString)('a') // $ExpectType (m: ReadonlyMap) => boolean diff --git a/src/Map.ts b/src/Map.ts index aba94f581..6592c472c 100644 --- a/src/Map.ts +++ b/src/Map.ts @@ -55,12 +55,18 @@ export const member: ( (k: K, m: Map): boolean } = RM.member +// TODO: remove non-curried overloading in v3 /** * Test whether or not a value is a member of a map * * @since 2.0.0 */ -export const elem: (E: Eq) => (a: A, m: Map) => boolean = RM.elem +export const elem: ( + E: Eq +) => { + (a: A): (m: Map) => boolean + (a: A, m: Map): boolean +} = RM.elem /** * Get a sorted array of the keys contained in a map diff --git a/src/ReadonlyMap.ts b/src/ReadonlyMap.ts index 0f0e52a28..804e22eb9 100644 --- a/src/ReadonlyMap.ts +++ b/src/ReadonlyMap.ts @@ -107,13 +107,24 @@ interface Next { readonly value: A } +// TODO: remove non-curried overloading in v3 /** * Test whether or not a value is a member of a map * * @since 2.5.0 */ -export function elem(E: Eq): (a: A, m: ReadonlyMap) => boolean { +export function elem( + E: Eq +): { + (a: A): (m: ReadonlyMap) => boolean + (a: A, m: ReadonlyMap): boolean +} +export function elem(E: Eq): (a: A, m?: ReadonlyMap) => boolean | ((m: ReadonlyMap) => boolean) { return (a, m) => { + if (m === undefined) { + const elemE = elem(E) + return (m) => elemE(a, m) + } const values = m.values() let e: Next // tslint:disable-next-line: strict-boolean-expressions diff --git a/test/Map.ts b/test/Map.ts index 9e8d4d965..d01ef139c 100644 --- a/test/Map.ts +++ b/test/Map.ts @@ -94,19 +94,25 @@ describe('Map', () => { }) it('elem', () => { - const a1b2 = new Map([ + const x = new Map([ ['a', 1], ['b', 2] ]) const elemS = _.elem(eqNumber) - assert.deepStrictEqual(elemS(2, a1b2), true) - assert.deepStrictEqual(elemS(3, a1b2), false) + assert.deepStrictEqual(elemS(2, x), true) + assert.deepStrictEqual(elemS(3, x), false) + assert.deepStrictEqual(elemS(2)(x), true) + assert.deepStrictEqual(elemS(3)(x), false) const elem = _.elem(eqValue) - assert.deepStrictEqual(elem({ value: 1 }, repo), true) - assert.deepStrictEqual(elem({ value: 2 }, repo), true) - assert.deepStrictEqual(elem({ value: 4 }, repo), true) - assert.deepStrictEqual(elem({ value: 3 }, repo), false) + assert.deepStrictEqual(elem({ value: 1 })(repo), true) + assert.deepStrictEqual(elem({ value: 2 })(repo), true) + assert.deepStrictEqual(elem({ value: 4 })(repo), true) + assert.deepStrictEqual(elem({ value: 3 })(repo), false) + assert.deepStrictEqual(elem({ value: 1 })(repo), true) + assert.deepStrictEqual(elem({ value: 2 })(repo), true) + assert.deepStrictEqual(elem({ value: 4 })(repo), true) + assert.deepStrictEqual(elem({ value: 3 })(repo), false) }) it('keys', () => { diff --git a/test/ReadonlyMap.ts b/test/ReadonlyMap.ts index 9cc573254..a8ca60eb9 100644 --- a/test/ReadonlyMap.ts +++ b/test/ReadonlyMap.ts @@ -189,19 +189,25 @@ describe('ReadonlyMap', () => { }) it('elem', () => { - const a1b2 = new Map([ + const x = new Map([ ['a', 1], ['b', 2] ]) const elemS = _.elem(eqNumber) - assert.deepStrictEqual(elemS(2, a1b2), true) - assert.deepStrictEqual(elemS(3, a1b2), false) + assert.deepStrictEqual(elemS(2, x), true) + assert.deepStrictEqual(elemS(3, x), false) + assert.deepStrictEqual(elemS(2)(x), true) + assert.deepStrictEqual(elemS(3)(x), false) const elem = _.elem(eqValue) - assert.deepStrictEqual(elem({ value: 1 }, repo), true) - assert.deepStrictEqual(elem({ value: 2 }, repo), true) - assert.deepStrictEqual(elem({ value: 4 }, repo), true) - assert.deepStrictEqual(elem({ value: 3 }, repo), false) + assert.deepStrictEqual(elem({ value: 1 })(repo), true) + assert.deepStrictEqual(elem({ value: 2 })(repo), true) + assert.deepStrictEqual(elem({ value: 4 })(repo), true) + assert.deepStrictEqual(elem({ value: 3 })(repo), false) + assert.deepStrictEqual(elem({ value: 1 })(repo), true) + assert.deepStrictEqual(elem({ value: 2 })(repo), true) + assert.deepStrictEqual(elem({ value: 4 })(repo), true) + assert.deepStrictEqual(elem({ value: 3 })(repo), false) }) it('keys', () => { From 2c151c14f86131f7d50f733950e42e31f0f6ea43 Mon Sep 17 00:00:00 2001 From: gcanti Date: Tue, 16 Jun 2020 09:31:17 +0200 Subject: [PATCH 020/106] make Map#lookup / ReadonlyMap#lookup data-last --- CHANGELOG.md | 2 ++ docs/modules/Map.ts.md | 4 +++- docs/modules/ReadonlyMap.ts.md | 7 ++++++- dtslint/ts3.5/Map.ts | 7 +++++++ dtslint/ts3.5/ReadonlyMap.ts | 7 +++++++ src/Map.ts | 8 +++++++- src/ReadonlyMap.ts | 20 +++++++++++++++++--- test/Map.ts | 11 ++++++++--- test/ReadonlyMap.ts | 11 ++++++++--- 9 files changed, 65 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6db7c0e51..3bf145973 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -29,6 +29,7 @@ high state of flux, you're at risk of it changing without notice. - `Map` - make `member` data-last (@gcanti) - make `elem` data-last (@gcanti) + - make `lookup` data-last (@gcanti) - `ReadonlyArray` - export `unfold` (@gcanti) - make `lookup` data-last (@gcanti) @@ -41,6 +42,7 @@ high state of flux, you're at risk of it changing without notice. - `ReadonlyMap` - make `member` data-last (@gcanti) - make `elem` data-last (@gcanti) + - make `lookup` data-last (@gcanti) - `Semigroup` - make `fold` data-last (@gcanti) diff --git a/docs/modules/Map.ts.md b/docs/modules/Map.ts.md index b72c7fde2..8615d8821 100644 --- a/docs/modules/Map.ts.md +++ b/docs/modules/Map.ts.md @@ -361,7 +361,9 @@ Lookup the value for a key in a `Map`. **Signature** ```ts -export declare const lookup: (E: Eq) => (k: K, m: Map) => Option +export declare const lookup: ( + E: Eq +) => { (k: K): (m: Map) => Option; (k: K, m: Map): Option } ``` Added in v2.0.0 diff --git a/docs/modules/ReadonlyMap.ts.md b/docs/modules/ReadonlyMap.ts.md index e2328ffba..9d81d98ce 100644 --- a/docs/modules/ReadonlyMap.ts.md +++ b/docs/modules/ReadonlyMap.ts.md @@ -444,7 +444,12 @@ Lookup the value for a key in a `Map`. **Signature** ```ts -export declare function lookup(E: Eq): (k: K, m: ReadonlyMap) => Option +export declare function lookup( + E: Eq +): { + (k: K): (m: ReadonlyMap) => Option + (k: K, m: ReadonlyMap): Option +} ``` Added in v2.5.0 diff --git a/dtslint/ts3.5/Map.ts b/dtslint/ts3.5/Map.ts index 9ebe66027..3fc4b0161 100644 --- a/dtslint/ts3.5/Map.ts +++ b/dtslint/ts3.5/Map.ts @@ -25,3 +25,10 @@ _.member(eqString)('a') // $ExpectType (m: Map) => boolean _.elem(eqString)('a', new Map()) // $ExpectType boolean _.elem(eqString)('a') // $ExpectType (m: Map) => boolean + +// +// lookup +// + +_.lookup(eqString)('a', new Map([['a', 1]])) // $ExpectType Option +_.lookup(eqString)('a') // $ExpectType (m: Map) => Option diff --git a/dtslint/ts3.5/ReadonlyMap.ts b/dtslint/ts3.5/ReadonlyMap.ts index 87e0b716e..6dbd6929b 100644 --- a/dtslint/ts3.5/ReadonlyMap.ts +++ b/dtslint/ts3.5/ReadonlyMap.ts @@ -25,3 +25,10 @@ _.member(eqString)('a') // $ExpectType (m: ReadonlyMap) => boolean _.elem(eqString)('a', new Map()) // $ExpectType boolean _.elem(eqString)('a') // $ExpectType (m: ReadonlyMap) => boolean + +// +// lookup +// + +_.lookup(eqString)('a', new Map([['a', 1]])) // $ExpectType Option +_.lookup(eqString)('a') // $ExpectType (m: ReadonlyMap) => Option diff --git a/src/Map.ts b/src/Map.ts index 6592c472c..c27055e75 100644 --- a/src/Map.ts +++ b/src/Map.ts @@ -148,12 +148,18 @@ export const pop: (E: Eq) => (k: K) => (m: Map) => Option<[A, Map */ export const lookupWithKey: (E: Eq) => (k: K, m: Map) => Option<[K, A]> = RM.lookupWithKey as any +// TODO: remove non-curried overloading in v3 /** * Lookup the value for a key in a `Map`. * * @since 2.0.0 */ -export const lookup: (E: Eq) => (k: K, m: Map) => Option = RM.lookup +export const lookup: ( + E: Eq +) => { + (k: K): (m: Map) => Option + (k: K, m: Map): Option +} = RM.lookup /** * Test whether or not one Map contains all of the keys and values contained in another Map diff --git a/src/ReadonlyMap.ts b/src/ReadonlyMap.ts index 804e22eb9..7e64f4799 100644 --- a/src/ReadonlyMap.ts +++ b/src/ReadonlyMap.ts @@ -320,18 +320,32 @@ export function lookupWithKey(E: Eq): (k: K, m: ReadonlyMap) => O } } +// TODO: remove non-curried overloading in v3 /** * Lookup the value for a key in a `Map`. * * @since 2.5.0 */ -export function lookup(E: Eq): (k: K, m: ReadonlyMap) => Option { +export function lookup( + E: Eq +): { + (k: K): (m: ReadonlyMap) => Option + (k: K, m: ReadonlyMap): Option +} +export function lookup( + E: Eq +): (k: K, m?: ReadonlyMap) => Option | ((m: ReadonlyMap) => Option) { const lookupWithKeyE = lookupWithKey(E) - return (k, m) => - pipe( + return (k, m) => { + if (m === undefined) { + const lookupE = lookup(E) + return (m) => lookupE(k, m) + } + return pipe( lookupWithKeyE(k, m), O.map(([_, a]) => a) ) + } } /** diff --git a/test/Map.ts b/test/Map.ts index d01ef139c..26ed906d3 100644 --- a/test/Map.ts +++ b/test/Map.ts @@ -477,15 +477,20 @@ describe('Map', () => { }) it('lookup', () => { - const a1 = new Map([[{ id: 'a' }, 1]]) + const x = new Map([[{ id: 'a' }, 1]]) const lookupS = _.lookup(eqUser) - assert.deepStrictEqual(lookupS({ id: 'a' }, a1), some(1)) - assert.deepStrictEqual(lookupS({ id: 'b' }, a1), none) + assert.deepStrictEqual(lookupS({ id: 'a' }, x), some(1)) + assert.deepStrictEqual(lookupS({ id: 'b' }, x), none) + assert.deepStrictEqual(lookupS({ id: 'a' })(x), some(1)) + assert.deepStrictEqual(lookupS({ id: 'b' })(x), none) const lookup = _.lookup(eqKey) assert.deepStrictEqual(lookup({ id: 1 }, repo), some({ value: 1 })) assert.deepStrictEqual(lookup({ id: 4 }, repo), some({ value: 1 })) assert.deepStrictEqual(lookup({ id: 3 }, repo), none) + assert.deepStrictEqual(lookup({ id: 1 })(repo), some({ value: 1 })) + assert.deepStrictEqual(lookup({ id: 4 })(repo), some({ value: 1 })) + assert.deepStrictEqual(lookup({ id: 3 })(repo), none) }) it('isSubmap', () => { diff --git a/test/ReadonlyMap.ts b/test/ReadonlyMap.ts index a8ca60eb9..67788eb8a 100644 --- a/test/ReadonlyMap.ts +++ b/test/ReadonlyMap.ts @@ -572,15 +572,20 @@ describe('ReadonlyMap', () => { }) it('lookup', () => { - const a1 = new Map([[{ id: 'a' }, 1]]) + const x = new Map([[{ id: 'a' }, 1]]) const lookupS = _.lookup(eqUser) - assert.deepStrictEqual(lookupS({ id: 'a' }, a1), some(1)) - assert.deepStrictEqual(lookupS({ id: 'b' }, a1), none) + assert.deepStrictEqual(lookupS({ id: 'a' }, x), some(1)) + assert.deepStrictEqual(lookupS({ id: 'b' }, x), none) + assert.deepStrictEqual(lookupS({ id: 'a' })(x), some(1)) + assert.deepStrictEqual(lookupS({ id: 'b' })(x), none) const lookup = _.lookup(eqKey) assert.deepStrictEqual(lookup({ id: 1 }, repo), some({ value: 1 })) assert.deepStrictEqual(lookup({ id: 4 }, repo), some({ value: 1 })) assert.deepStrictEqual(lookup({ id: 3 }, repo), none) + assert.deepStrictEqual(lookup({ id: 1 })(repo), some({ value: 1 })) + assert.deepStrictEqual(lookup({ id: 4 })(repo), some({ value: 1 })) + assert.deepStrictEqual(lookup({ id: 3 })(repo), none) }) it('isSubmap', () => { From 94a6d6065827c6f243aae886a7c393575dc95f65 Mon Sep 17 00:00:00 2001 From: gcanti Date: Tue, 16 Jun 2020 09:39:40 +0200 Subject: [PATCH 021/106] make Map#lookupWithKey / ReadonlyMap#lookupWithKey data-last --- CHANGELOG.md | 2 ++ docs/modules/Map.ts.md | 4 +++- docs/modules/ReadonlyMap.ts.md | 7 ++++++- dtslint/ts3.5/Map.ts | 7 +++++++ dtslint/ts3.5/ReadonlyMap.ts | 7 +++++++ src/Map.ts | 8 +++++++- src/ReadonlyMap.ts | 17 +++++++++++++++-- test/Map.ts | 11 ++++++++--- test/ReadonlyMap.ts | 11 ++++++++--- 9 files changed, 63 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3bf145973..5e284a04d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,6 +30,7 @@ high state of flux, you're at risk of it changing without notice. - make `member` data-last (@gcanti) - make `elem` data-last (@gcanti) - make `lookup` data-last (@gcanti) + - make `lookupWithKey` data-last (@gcanti) - `ReadonlyArray` - export `unfold` (@gcanti) - make `lookup` data-last (@gcanti) @@ -43,6 +44,7 @@ high state of flux, you're at risk of it changing without notice. - make `member` data-last (@gcanti) - make `elem` data-last (@gcanti) - make `lookup` data-last (@gcanti) + - make `lookupWithKey` data-last (@gcanti) - `Semigroup` - make `fold` data-last (@gcanti) diff --git a/docs/modules/Map.ts.md b/docs/modules/Map.ts.md index 8615d8821..91e00f02c 100644 --- a/docs/modules/Map.ts.md +++ b/docs/modules/Map.ts.md @@ -376,7 +376,9 @@ If the result is a `Some`, the existing key is also returned. **Signature** ```ts -export declare const lookupWithKey: (E: Eq) => (k: K, m: Map) => Option<[K, A]> +export declare const lookupWithKey: ( + E: Eq +) => { (k: K): (m: Map) => Option<[K, A]>; (k: K, m: Map): Option<[K, A]> } ``` Added in v2.0.0 diff --git a/docs/modules/ReadonlyMap.ts.md b/docs/modules/ReadonlyMap.ts.md index 9d81d98ce..00c23781d 100644 --- a/docs/modules/ReadonlyMap.ts.md +++ b/docs/modules/ReadonlyMap.ts.md @@ -462,7 +462,12 @@ If the result is a `Some`, the existing key is also returned. **Signature** ```ts -export declare function lookupWithKey(E: Eq): (k: K, m: ReadonlyMap) => Option +export declare function lookupWithKey( + E: Eq +): { + (k: K): (m: ReadonlyMap) => Option + (k: K, m: ReadonlyMap): Option +} ``` Added in v2.5.0 diff --git a/dtslint/ts3.5/Map.ts b/dtslint/ts3.5/Map.ts index 3fc4b0161..a09a1e10e 100644 --- a/dtslint/ts3.5/Map.ts +++ b/dtslint/ts3.5/Map.ts @@ -32,3 +32,10 @@ _.elem(eqString)('a') // $ExpectType (m: Map) => boolean _.lookup(eqString)('a', new Map([['a', 1]])) // $ExpectType Option _.lookup(eqString)('a') // $ExpectType (m: Map) => Option + +// +// lookupWithKey +// + +_.lookupWithKey(eqString)('a', new Map([['a', 1]])) // $ExpectType Option<[string, number]> +_.lookupWithKey(eqString)('a') // $ExpectType (m: Map) => Option<[string, A]> diff --git a/dtslint/ts3.5/ReadonlyMap.ts b/dtslint/ts3.5/ReadonlyMap.ts index 6dbd6929b..812ae538e 100644 --- a/dtslint/ts3.5/ReadonlyMap.ts +++ b/dtslint/ts3.5/ReadonlyMap.ts @@ -32,3 +32,10 @@ _.elem(eqString)('a') // $ExpectType (m: ReadonlyMap) => boolean _.lookup(eqString)('a', new Map([['a', 1]])) // $ExpectType Option _.lookup(eqString)('a') // $ExpectType (m: ReadonlyMap) => Option + +// +// lookupWithKey +// + +_.lookupWithKey(eqString)('a', new Map([['a', 1]])) // $ExpectType Option +_.lookupWithKey(eqString)('a') // $ExpectType (m: ReadonlyMap) => Option diff --git a/src/Map.ts b/src/Map.ts index c27055e75..efacf96aa 100644 --- a/src/Map.ts +++ b/src/Map.ts @@ -140,13 +140,19 @@ export const modifyAt: ( */ export const pop: (E: Eq) => (k: K) => (m: Map) => Option<[A, Map]> = RM.pop as any +// TODO: remove non-curried overloading in v3 /** * Lookup the value for a key in a `Map`. * If the result is a `Some`, the existing key is also returned. * * @since 2.0.0 */ -export const lookupWithKey: (E: Eq) => (k: K, m: Map) => Option<[K, A]> = RM.lookupWithKey as any +export const lookupWithKey: ( + E: Eq +) => { + (k: K): (m: Map) => Option<[K, A]> + (k: K, m: Map): Option<[K, A]> +} = RM.lookupWithKey as any // TODO: remove non-curried overloading in v3 /** diff --git a/src/ReadonlyMap.ts b/src/ReadonlyMap.ts index 7e64f4799..a2ba397bf 100644 --- a/src/ReadonlyMap.ts +++ b/src/ReadonlyMap.ts @@ -299,14 +299,27 @@ export function pop(E: Eq): (k: K) => (m: ReadonlyMap) => Option< } } +// TODO: remove non-curried overloading in v3 /** * Lookup the value for a key in a `Map`. * If the result is a `Some`, the existing key is also returned. * * @since 2.5.0 */ -export function lookupWithKey(E: Eq): (k: K, m: ReadonlyMap) => Option { - return (k: K, m: ReadonlyMap) => { +export function lookupWithKey( + E: Eq +): { + (k: K): (m: ReadonlyMap) => Option + (k: K, m: ReadonlyMap): Option +} +export function lookupWithKey( + E: Eq +): (k: K, m?: ReadonlyMap) => Option | ((m: ReadonlyMap) => Option) { + return (k: K, m?: ReadonlyMap) => { + if (m === undefined) { + const lookupWithKeyE = lookupWithKey(E) + return (m) => lookupWithKeyE(k, m) + } const entries = m.entries() let e: Next // tslint:disable-next-line: strict-boolean-expressions diff --git a/test/Map.ts b/test/Map.ts index 26ed906d3..9ba4114b8 100644 --- a/test/Map.ts +++ b/test/Map.ts @@ -465,15 +465,20 @@ describe('Map', () => { }) it('lookupWithKey', () => { - const a1 = new Map([[{ id: 'a' }, 1]]) + const x = new Map([[{ id: 'a' }, 1]]) const lookupWithKeyS = _.lookupWithKey(eqUser) - assert.deepStrictEqual(lookupWithKeyS({ id: 'a' }, a1), some([{ id: 'a' }, 1])) - assert.deepStrictEqual(lookupWithKeyS({ id: 'b' }, a1), none) + assert.deepStrictEqual(lookupWithKeyS({ id: 'a' }, x), some([{ id: 'a' }, 1])) + assert.deepStrictEqual(lookupWithKeyS({ id: 'b' }, x), none) + assert.deepStrictEqual(lookupWithKeyS({ id: 'a' })(x), some([{ id: 'a' }, 1])) + assert.deepStrictEqual(lookupWithKeyS({ id: 'b' })(x), none) const lookupWithKey = _.lookupWithKey(eqKey) assert.deepStrictEqual(lookupWithKey({ id: 1 }, repo), some([{ id: 1 }, { value: 1 }])) assert.deepStrictEqual(lookupWithKey({ id: 4 }, repo), some([{ id: 1 }, { value: 1 }])) assert.deepStrictEqual(lookupWithKey({ id: 3 }, repo), none) + assert.deepStrictEqual(lookupWithKey({ id: 1 })(repo), some([{ id: 1 }, { value: 1 }])) + assert.deepStrictEqual(lookupWithKey({ id: 4 })(repo), some([{ id: 1 }, { value: 1 }])) + assert.deepStrictEqual(lookupWithKey({ id: 3 })(repo), none) }) it('lookup', () => { diff --git a/test/ReadonlyMap.ts b/test/ReadonlyMap.ts index 67788eb8a..f462ebec2 100644 --- a/test/ReadonlyMap.ts +++ b/test/ReadonlyMap.ts @@ -560,15 +560,20 @@ describe('ReadonlyMap', () => { }) it('lookupWithKey', () => { - const a1 = new Map([[{ id: 'a' }, 1]]) + const x = new Map([[{ id: 'a' }, 1]]) const lookupWithKeyS = _.lookupWithKey(eqUser) - assert.deepStrictEqual(lookupWithKeyS({ id: 'a' }, a1), some([{ id: 'a' }, 1])) - assert.deepStrictEqual(lookupWithKeyS({ id: 'b' }, a1), none) + assert.deepStrictEqual(lookupWithKeyS({ id: 'a' }, x), some([{ id: 'a' }, 1])) + assert.deepStrictEqual(lookupWithKeyS({ id: 'b' }, x), none) + assert.deepStrictEqual(lookupWithKeyS({ id: 'a' })(x), some([{ id: 'a' }, 1])) + assert.deepStrictEqual(lookupWithKeyS({ id: 'b' })(x), none) const lookupWithKey = _.lookupWithKey(eqKey) assert.deepStrictEqual(lookupWithKey({ id: 1 }, repo), some([{ id: 1 }, { value: 1 }])) assert.deepStrictEqual(lookupWithKey({ id: 4 }, repo), some([{ id: 1 }, { value: 1 }])) assert.deepStrictEqual(lookupWithKey({ id: 3 }, repo), none) + assert.deepStrictEqual(lookupWithKey({ id: 1 })(repo), some([{ id: 1 }, { value: 1 }])) + assert.deepStrictEqual(lookupWithKey({ id: 4 })(repo), some([{ id: 1 }, { value: 1 }])) + assert.deepStrictEqual(lookupWithKey({ id: 3 })(repo), none) }) it('lookup', () => { From 86fd684ea5ce65cac3dc0bb3bf36db9aa51e583f Mon Sep 17 00:00:00 2001 From: gcanti Date: Tue, 16 Jun 2020 16:34:25 +0200 Subject: [PATCH 022/106] make Map#isSubmap / ReadonlyMap#isSubmap data-last --- CHANGELOG.md | 2 ++ docs/modules/Map.ts.md | 7 +++++-- docs/modules/ReadonlyMap.ts.md | 10 ++++++++-- dtslint/ts3.5/Map.ts | 9 ++++++++- dtslint/ts3.5/ReadonlyMap.ts | 9 ++++++++- src/Map.ts | 11 +++++++++-- src/ReadonlyMap.ts | 25 ++++++++++++++++++++----- test/Map.ts | 15 +++++++++++---- test/ReadonlyMap.ts | 13 ++++++++++--- 9 files changed, 81 insertions(+), 20 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5e284a04d..012ba30b2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,6 +31,7 @@ high state of flux, you're at risk of it changing without notice. - make `elem` data-last (@gcanti) - make `lookup` data-last (@gcanti) - make `lookupWithKey` data-last (@gcanti) + - make `isSubmap` data-last (@gcanti) - `ReadonlyArray` - export `unfold` (@gcanti) - make `lookup` data-last (@gcanti) @@ -45,6 +46,7 @@ high state of flux, you're at risk of it changing without notice. - make `elem` data-last (@gcanti) - make `lookup` data-last (@gcanti) - make `lookupWithKey` data-last (@gcanti) + - make `isSubmap` data-last (@gcanti) - `Semigroup` - make `fold` data-last (@gcanti) diff --git a/docs/modules/Map.ts.md b/docs/modules/Map.ts.md index 91e00f02c..0dc461bcf 100644 --- a/docs/modules/Map.ts.md +++ b/docs/modules/Map.ts.md @@ -332,12 +332,15 @@ Added in v2.0.0 ## isSubmap -Test whether or not one Map contains all of the keys and values contained in another Map +Test whether or not one `Map` contains all of the keys and values contained in another `Map` **Signature** ```ts -export declare const isSubmap: (SK: Eq, SA: Eq) => (d1: Map, d2: Map) => boolean +export declare const isSubmap: ( + SK: Eq, + SA: Eq +) => { (that: Map): (me: Map) => boolean; (me: Map, that: Map): boolean } ``` Added in v2.0.0 diff --git a/docs/modules/ReadonlyMap.ts.md b/docs/modules/ReadonlyMap.ts.md index 00c23781d..c25305cdc 100644 --- a/docs/modules/ReadonlyMap.ts.md +++ b/docs/modules/ReadonlyMap.ts.md @@ -415,12 +415,18 @@ Added in v2.5.0 ## isSubmap -Test whether or not one Map contains all of the keys and values contained in another Map +Test whether or not one `Map` contains all of the keys and values contained in another `Map` **Signature** ```ts -export declare function isSubmap(SK: Eq, SA: Eq): (d1: ReadonlyMap, d2: ReadonlyMap) => boolean +export declare function isSubmap( + SK: Eq, + SA: Eq +): { + (that: ReadonlyMap): (me: ReadonlyMap) => boolean + (me: ReadonlyMap, that: ReadonlyMap): boolean +} ``` Added in v2.5.0 diff --git a/dtslint/ts3.5/Map.ts b/dtslint/ts3.5/Map.ts index a09a1e10e..d394453a5 100644 --- a/dtslint/ts3.5/Map.ts +++ b/dtslint/ts3.5/Map.ts @@ -1,5 +1,5 @@ import * as _ from '../../src/Map' -import { eqString } from '../../src/Eq' +import { eqString, eqNumber } from '../../src/Eq' // // FilterableWithIndex overloadings @@ -39,3 +39,10 @@ _.lookup(eqString)('a') // $ExpectType (m: Map) => Option _.lookupWithKey(eqString)('a', new Map([['a', 1]])) // $ExpectType Option<[string, number]> _.lookupWithKey(eqString)('a') // $ExpectType (m: Map) => Option<[string, A]> + +// +// isSubmap +// + +_.isSubmap(eqString, eqNumber)(new Map([['a', 1]]), new Map([['a', 1]])) // $ExpectType boolean +_.isSubmap(eqString, eqNumber)(new Map([['a', 1]])) // $ExpectType (me: Map) => boolean diff --git a/dtslint/ts3.5/ReadonlyMap.ts b/dtslint/ts3.5/ReadonlyMap.ts index 812ae538e..1ef491059 100644 --- a/dtslint/ts3.5/ReadonlyMap.ts +++ b/dtslint/ts3.5/ReadonlyMap.ts @@ -1,5 +1,5 @@ import * as _ from '../../src/ReadonlyMap' -import { eqString } from '../../src/Eq' +import { eqString, eqNumber } from '../../src/Eq' // // FilterableWithIndex overloadings @@ -39,3 +39,10 @@ _.lookup(eqString)('a') // $ExpectType (m: ReadonlyMap) => Option< _.lookupWithKey(eqString)('a', new Map([['a', 1]])) // $ExpectType Option _.lookupWithKey(eqString)('a') // $ExpectType (m: ReadonlyMap) => Option + +// +// isSubmap +// + +_.isSubmap(eqString, eqNumber)(new Map([['a', 1]]), new Map([['a', 1]])) // $ExpectType boolean +_.isSubmap(eqString, eqNumber)(new Map([['a', 1]])) // $ExpectType (me: ReadonlyMap) => boolean diff --git a/src/Map.ts b/src/Map.ts index efacf96aa..2d0544998 100644 --- a/src/Map.ts +++ b/src/Map.ts @@ -167,12 +167,19 @@ export const lookup: ( (k: K, m: Map): Option } = RM.lookup +// TODO: remove non-curried overloading in v3 /** - * Test whether or not one Map contains all of the keys and values contained in another Map + * Test whether or not one `Map` contains all of the keys and values contained in another `Map` * * @since 2.0.0 */ -export const isSubmap: (SK: Eq, SA: Eq) => (d1: Map, d2: Map) => boolean = RM.isSubmap +export const isSubmap: ( + SK: Eq, + SA: Eq +) => { + (that: Map): (me: Map) => boolean + (me: Map, that: Map): boolean +} = RM.isSubmap /** * @since 2.0.0 diff --git a/src/ReadonlyMap.ts b/src/ReadonlyMap.ts index a2ba397bf..fc94c5d8b 100644 --- a/src/ReadonlyMap.ts +++ b/src/ReadonlyMap.ts @@ -361,20 +361,35 @@ export function lookup( } } +// TODO: remove non-curried overloading in v3 /** - * Test whether or not one Map contains all of the keys and values contained in another Map + * Test whether or not one `Map` contains all of the keys and values contained in another `Map` * * @since 2.5.0 */ -export function isSubmap(SK: Eq, SA: Eq): (d1: ReadonlyMap, d2: ReadonlyMap) => boolean { +export function isSubmap( + SK: Eq, + SA: Eq +): { + (that: ReadonlyMap): (me: ReadonlyMap) => boolean + (me: ReadonlyMap, that: ReadonlyMap): boolean +} +export function isSubmap( + SK: Eq, + SA: Eq +): (me: ReadonlyMap, that?: ReadonlyMap) => boolean | ((me: ReadonlyMap) => boolean) { const lookupWithKeyS = lookupWithKey(SK) - return (d1: ReadonlyMap, d2: ReadonlyMap): boolean => { - const entries = d1.entries() + return (me: ReadonlyMap, that?: ReadonlyMap) => { + if (that === undefined) { + const isSubmapSKSA = isSubmap(SK, SA) + return (that) => isSubmapSKSA(that, me) + } + const entries = me.entries() let e: Next // tslint:disable-next-line: strict-boolean-expressions while (!(e = entries.next()).done) { const [k, a] = e.value - const d2OptA = lookupWithKeyS(k, d2) + const d2OptA = lookupWithKeyS(k, that) if (O.isNone(d2OptA) || !SK.equals(k, d2OptA.value[0]) || !SA.equals(a, d2OptA.value[1])) { return false } diff --git a/test/Map.ts b/test/Map.ts index 9ba4114b8..321991748 100644 --- a/test/Map.ts +++ b/test/Map.ts @@ -2,7 +2,7 @@ import * as assert from 'assert' import { array } from '../src/Array' import { Either, left, right } from '../src/Either' import { Eq, eqNumber, fromEquals } from '../src/Eq' -import { identity, Refinement } from '../src/function' +import { identity, Refinement, pipe } from '../src/function' import * as _ from '../src/Map' import { monoidString } from '../src/Monoid' import { none, option, Option, some } from '../src/Option' @@ -499,13 +499,14 @@ describe('Map', () => { }) it('isSubmap', () => { - const a1 = new Map([[{ id: 'a' }, 1]]) - const a1b2 = new Map([ + const me = new Map([[{ id: 'a' }, 1]]) + const that = new Map([ [{ id: 'a' }, 1], [{ id: 'b' }, 2] ]) const isSubmapS = _.isSubmap(eqUser, eqNumber) - assert.deepStrictEqual(isSubmapS(a1, a1b2), true) + assert.deepStrictEqual(isSubmapS(me, that), true) + assert.deepStrictEqual(isSubmapS(that)(me), true) const isSubmap = _.isSubmap(eqKey, eqValue) assert.deepStrictEqual(isSubmap(new Map([[{ id: 1 }, { value: 1 }]]), repo), true) @@ -513,6 +514,12 @@ describe('Map', () => { assert.deepStrictEqual(isSubmap(new Map([[{ id: 1 }, { value: 4 }]]), repo), true) assert.deepStrictEqual(isSubmap(new Map([[{ id: 4 }, { value: 1 }]]), repo), true) assert.deepStrictEqual(isSubmap(new Map([[{ id: 3 }, { value: 3 }]]), repo), false) + + assert.deepStrictEqual(pipe(new Map([[{ id: 1 }, { value: 1 }]]), isSubmap(repo)), true) + assert.deepStrictEqual(pipe(new Map([[{ id: 1 }, { value: 2 }]]), isSubmap(repo)), false) + assert.deepStrictEqual(pipe(new Map([[{ id: 1 }, { value: 4 }]]), isSubmap(repo)), true) + assert.deepStrictEqual(pipe(new Map([[{ id: 4 }, { value: 1 }]]), isSubmap(repo)), true) + assert.deepStrictEqual(pipe(new Map([[{ id: 3 }, { value: 3 }]]), isSubmap(repo)), false) }) it('empty', () => { diff --git a/test/ReadonlyMap.ts b/test/ReadonlyMap.ts index f462ebec2..d1db7733b 100644 --- a/test/ReadonlyMap.ts +++ b/test/ReadonlyMap.ts @@ -594,13 +594,14 @@ describe('ReadonlyMap', () => { }) it('isSubmap', () => { - const a1 = new Map([[{ id: 'a' }, 1]]) - const a1b2 = new Map([ + const me = new Map([[{ id: 'a' }, 1]]) + const that = new Map([ [{ id: 'a' }, 1], [{ id: 'b' }, 2] ]) const isSubmapS = _.isSubmap(eqUser, eqNumber) - assert.deepStrictEqual(isSubmapS(a1, a1b2), true) + assert.deepStrictEqual(isSubmapS(me, that), true) + assert.deepStrictEqual(isSubmapS(that)(me), true) const isSubmap = _.isSubmap(eqKey, eqValue) assert.deepStrictEqual(isSubmap(new Map([[{ id: 1 }, { value: 1 }]]), repo), true) @@ -608,6 +609,12 @@ describe('ReadonlyMap', () => { assert.deepStrictEqual(isSubmap(new Map([[{ id: 1 }, { value: 4 }]]), repo), true) assert.deepStrictEqual(isSubmap(new Map([[{ id: 4 }, { value: 1 }]]), repo), true) assert.deepStrictEqual(isSubmap(new Map([[{ id: 3 }, { value: 3 }]]), repo), false) + + assert.deepStrictEqual(pipe(new Map([[{ id: 1 }, { value: 1 }]]), isSubmap(repo)), true) + assert.deepStrictEqual(pipe(new Map([[{ id: 1 }, { value: 2 }]]), isSubmap(repo)), false) + assert.deepStrictEqual(pipe(new Map([[{ id: 1 }, { value: 4 }]]), isSubmap(repo)), true) + assert.deepStrictEqual(pipe(new Map([[{ id: 4 }, { value: 1 }]]), isSubmap(repo)), true) + assert.deepStrictEqual(pipe(new Map([[{ id: 3 }, { value: 3 }]]), isSubmap(repo)), false) }) it('empty', () => { From 6aad884045973ba7f2c9a9851ad7829757cb3ec9 Mon Sep 17 00:00:00 2001 From: gcanti Date: Tue, 16 Jun 2020 16:41:55 +0200 Subject: [PATCH 023/106] make NonEmptyArray#zip / ReadonlyNonEmptyArray#zip data-last --- CHANGELOG.md | 4 ++++ docs/modules/NonEmptyArray.ts.md | 5 ++++- docs/modules/ReadonlyNonEmptyArray.ts.md | 8 ++++---- dtslint/ts3.5/NonEmptyArray.ts | 1 + dtslint/ts3.5/ReadonlyNonEmptyArray.ts | 1 + src/NonEmptyArray.ts | 5 ++++- src/ReadonlyNonEmptyArray.ts | 8 ++++---- 7 files changed, 22 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 012ba30b2..1b82de593 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -32,6 +32,8 @@ high state of flux, you're at risk of it changing without notice. - make `lookup` data-last (@gcanti) - make `lookupWithKey` data-last (@gcanti) - make `isSubmap` data-last (@gcanti) + - `NonEmptyArray` + - make `zip` data-last (@gcanti) - `ReadonlyArray` - export `unfold` (@gcanti) - make `lookup` data-last (@gcanti) @@ -47,6 +49,8 @@ high state of flux, you're at risk of it changing without notice. - make `lookup` data-last (@gcanti) - make `lookupWithKey` data-last (@gcanti) - make `isSubmap` data-last (@gcanti) + - `ReadonlyNonEmptyArray` + - make `zip` data-last (@gcanti) - `Semigroup` - make `fold` data-last (@gcanti) diff --git a/docs/modules/NonEmptyArray.ts.md b/docs/modules/NonEmptyArray.ts.md index df5f9283f..5fe96edde 100644 --- a/docs/modules/NonEmptyArray.ts.md +++ b/docs/modules/NonEmptyArray.ts.md @@ -398,7 +398,10 @@ Added in v2.0.0 **Signature** ```ts -export declare const zip: (fa: NonEmptyArray, fb: NonEmptyArray) => NonEmptyArray<[A, B]> +export declare const zip: { + (bs: NonEmptyArray): (as: NonEmptyArray) => NonEmptyArray<[A, B]> + (as: NonEmptyArray, bs: NonEmptyArray): NonEmptyArray<[A, B]> +} ``` Added in v2.5.1 diff --git a/docs/modules/ReadonlyNonEmptyArray.ts.md b/docs/modules/ReadonlyNonEmptyArray.ts.md index 4e4211a8c..07a70a781 100644 --- a/docs/modules/ReadonlyNonEmptyArray.ts.md +++ b/docs/modules/ReadonlyNonEmptyArray.ts.md @@ -395,10 +395,10 @@ Added in v2.5.0 **Signature** ```ts -export declare const zip: ( - fa: ReadonlyNonEmptyArray, - fb: ReadonlyNonEmptyArray -) => ReadonlyNonEmptyArray +export declare const zip: { + (bs: ReadonlyNonEmptyArray): (as: ReadonlyNonEmptyArray) => ReadonlyNonEmptyArray + (as: ReadonlyNonEmptyArray, bs: ReadonlyNonEmptyArray): ReadonlyNonEmptyArray +} ``` Added in v2.5.1 diff --git a/dtslint/ts3.5/NonEmptyArray.ts b/dtslint/ts3.5/NonEmptyArray.ts index 327879779..3b25df901 100644 --- a/dtslint/ts3.5/NonEmptyArray.ts +++ b/dtslint/ts3.5/NonEmptyArray.ts @@ -13,6 +13,7 @@ declare const netns: _.NonEmptyArray<[number, string]> // _.zip(nens, neas) // $ExpectType NonEmptyArray<[number, string]> +_.zip(neas) // $ExpectType (as: NonEmptyArray) => NonEmptyArray<[A, string]> // // zipWith diff --git a/dtslint/ts3.5/ReadonlyNonEmptyArray.ts b/dtslint/ts3.5/ReadonlyNonEmptyArray.ts index ca316486a..72f3054f8 100644 --- a/dtslint/ts3.5/ReadonlyNonEmptyArray.ts +++ b/dtslint/ts3.5/ReadonlyNonEmptyArray.ts @@ -10,6 +10,7 @@ declare const rnetns: _.ReadonlyNonEmptyArray<[number, string]> // _.zip(rnens, rneas) // $ExpectType ReadonlyNonEmptyArray +_.zip(rneas) // $ExpectType (as: ReadonlyNonEmptyArray) => ReadonlyNonEmptyArray // // zipWith diff --git a/src/NonEmptyArray.ts b/src/NonEmptyArray.ts index 409490182..1dc279b92 100644 --- a/src/NonEmptyArray.ts +++ b/src/NonEmptyArray.ts @@ -300,7 +300,10 @@ export const zipWith: ( * @category combinators * @since 2.5.1 */ -export const zip: (fa: NonEmptyArray, fb: NonEmptyArray) => NonEmptyArray<[A, B]> = RNEA.zip as any +export const zip: { + (bs: NonEmptyArray): (as: NonEmptyArray) => NonEmptyArray<[A, B]> + (as: NonEmptyArray, bs: NonEmptyArray): NonEmptyArray<[A, B]> +} = RNEA.zip as any /** * @since 2.5.1 diff --git a/src/ReadonlyNonEmptyArray.ts b/src/ReadonlyNonEmptyArray.ts index 1d6ad3d3f..1ebff86f4 100644 --- a/src/ReadonlyNonEmptyArray.ts +++ b/src/ReadonlyNonEmptyArray.ts @@ -355,10 +355,10 @@ export const zipWith: ( * @category combinators * @since 2.5.1 */ -export const zip: ( - fa: ReadonlyNonEmptyArray, - fb: ReadonlyNonEmptyArray -) => ReadonlyNonEmptyArray = RA.zip as any +export const zip: { + (bs: ReadonlyNonEmptyArray): (as: ReadonlyNonEmptyArray) => ReadonlyNonEmptyArray + (as: ReadonlyNonEmptyArray, bs: ReadonlyNonEmptyArray): ReadonlyNonEmptyArray +} = RA.zip as any /** * @since 2.5.1 From cf9f05664bc9c02206cf4b9f510b5fa6cb5b56a5 Mon Sep 17 00:00:00 2001 From: gcanti Date: Tue, 16 Jun 2020 17:07:45 +0200 Subject: [PATCH 024/106] make Record#isSubrecord / ReadonlyRecord#isSubrecord data-last --- CHANGELOG.md | 4 + docs/modules/ReadonlyRecord.ts.md | 5 +- docs/modules/Record.ts.md | 7 +- dtslint/ts3.5/ReadonlyRecord.ts | 175 ++++++++++++++++++++++++++++++ dtslint/ts3.5/Record.ts | 155 +++++++++++++------------- src/ReadonlyRecord.ts | 26 ++++- src/Record.ts | 8 +- 7 files changed, 298 insertions(+), 82 deletions(-) create mode 100644 dtslint/ts3.5/ReadonlyRecord.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index 1b82de593..82cb5c049 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -51,6 +51,10 @@ high state of flux, you're at risk of it changing without notice. - make `isSubmap` data-last (@gcanti) - `ReadonlyNonEmptyArray` - make `zip` data-last (@gcanti) + - `ReadonlyRecord` + - make `isSubrecord` data-last (@gcanti) + - `Record` + - make `isSubrecord` data-last (@gcanti) - `Semigroup` - make `fold` data-last (@gcanti) diff --git a/docs/modules/ReadonlyRecord.ts.md b/docs/modules/ReadonlyRecord.ts.md index b127c6e0f..a53d3e83e 100644 --- a/docs/modules/ReadonlyRecord.ts.md +++ b/docs/modules/ReadonlyRecord.ts.md @@ -647,7 +647,10 @@ Test whether one record contains all of the keys and values contained in another ```ts export declare function isSubrecord( E: Eq -): (x: ReadonlyRecord, y: ReadonlyRecord) => boolean +): { + (that: ReadonlyRecord): (me: ReadonlyRecord) => boolean + (me: ReadonlyRecord, that: ReadonlyRecord): boolean +} ``` Added in v2.5.0 diff --git a/docs/modules/Record.ts.md b/docs/modules/Record.ts.md index 2028e5dea..490016412 100644 --- a/docs/modules/Record.ts.md +++ b/docs/modules/Record.ts.md @@ -511,7 +511,12 @@ Test whether one record contains all of the keys and values contained in another **Signature** ```ts -export declare const isSubrecord: (E: Eq) => (x: Record, y: Record) => boolean +export declare const isSubrecord: ( + E: Eq +) => { + (that: Record): (me: Record) => boolean + (me: Record, that: Record): boolean +} ``` Added in v2.0.0 diff --git a/dtslint/ts3.5/ReadonlyRecord.ts b/dtslint/ts3.5/ReadonlyRecord.ts new file mode 100644 index 000000000..5d3cf7320 --- /dev/null +++ b/dtslint/ts3.5/ReadonlyRecord.ts @@ -0,0 +1,175 @@ +import { pipe } from '../../src/pipeable' +import * as _ from '../../src/ReadonlyRecord' +import { identity } from '../../src/function' +import * as O from '../../src/Option' +import * as A from '../../src/Array' +import * as E from '../../src/Either' +import { monoidString } from '../../src/Monoid' +import { eqNumber } from '../../src/Eq' +import { semigroupSum, getFirstSemigroup } from '../../src/Semigroup' +import { Foldable } from '../../src/Foldable' +import { HKT } from '../../src/HKT' + +declare const do1: { [key: string]: O.Option } +declare const ro1: Readonly>> +declare const stringKey: string +declare const d1: { [key: string]: number } +declare const recordString: Readonly> +declare const r1: Readonly> +const l1 = { a: 1 } + +declare const keyString: string + +// +// hasOwnProperty +// + +if (_.hasOwnProperty(keyString, d1)) { + keyString // $ExpectType string +} +if (_.hasOwnProperty(keyString, recordString)) { + keyString // $ExpectType string +} +if (_.hasOwnProperty(keyString, r1)) { + keyString // $ExpectType "a" | "b" +} + +// +// updateAt +// + +pipe(d1, _.updateAt('a', 3)) // $ExpectType Option>> +pipe(recordString, _.updateAt('a', 3)) // $ExpectType Option>> +pipe(r1, _.updateAt('a', 3)) // $ExpectType Option>> + +// +// modifyAt +// + +pipe(d1, _.modifyAt('a', identity)) // $ExpectType Option>> +pipe(recordString, _.modifyAt('a', identity)) // $ExpectType Option>> +pipe(r1, _.modifyAt('a', identity)) // $ExpectType Option>> + +// +// pop +// + +_.pop('a')(r1) // $ExpectType Option>]> +_.pop('a')(d1) // $ExpectType Option>]> +_.pop(stringKey)(r1) // $ExpectType Option>]> + +// +// collect +// + +_.collect((_k: 'a', n: number) => n)({ a: 1 }) // $ExpectType readonly number[] +_.collect((_k: 'a', n: number) => n)(l1) // $ExpectType readonly number[] +_.collect((_k, n: number) => n)(d1) // $ExpectType readonly number[] +_.collect((_k: 'a' | 'b', n: number) => n)(r1) // $ExpectType readonly number[] + +// +// insertAt +// + +_.insertAt('b', 0)({ a: 1 }) // $ExpectType Readonly> +_.insertAt('b', 0)(l1) // $ExpectType Readonly> +_.insertAt('b', 0)(d1) // $ExpectType Readonly> +_.insertAt('b', 0)(r1) // $ExpectType Readonly> +_.insertAt(stringKey, 0)(r1) // $ExpectType Readonly> +_.insertAt('c', 0)(r1) // $ExpectType Readonly> + +// +// deleteAt +// + +_.deleteAt('a')({ a: 1 }) // $ExpectType Readonly> +_.deleteAt('b')({ a: 1 }) // $ExpectType Readonly> +_.deleteAt('a')(l1) // $ExpectType Readonly> +_.deleteAt('b')(l1) // $ExpectType Readonly> +_.deleteAt('b')(d1) // $ExpectType Readonly> +_.deleteAt('c')(r1) // $ExpectType Readonly> +_.deleteAt('a')(r1) // $ExpectType Readonly> +_.deleteAt(stringKey)(r1) // $ExpectType Readonly> + +// +// mapWithIndex +// + +_.mapWithIndex((_k: 'a', n: number) => n > 2)({ a: 1 }) // $ExpectType Readonly> +_.mapWithIndex((_k: 'a', n: number) => n > 2)(l1) // $ExpectType Readonly> +_.mapWithIndex((_k: string, n: number) => n > 2)(d1) // $ExpectType Readonly> +_.mapWithIndex((_k: 'a' | 'b', n: number) => n > 2)(r1) // $ExpectType Readonly> + +// +// map +// + +_.map((n: number) => n > 2)({ a: 1 }) // $ExpectType Readonly> +_.map((n: number) => n > 2)(l1) // $ExpectType Readonly> +_.map((n: number) => n > 2)(d1) // $ExpectType Readonly> +_.map((n: number) => n > 2)(r1) // $ExpectType Readonly> + +// +// reduceWithIndex +// + +_.reduceWithIndex('', (k: string, _n) => k)(d1) // $ExpectType string +_.reduceWithIndex('', (k: 'a' | 'b', _n) => k)(r1) // $ExpectType string + +_.foldMapWithIndex(monoidString)((k: string, _n) => k)(d1) // $ExpectType string +_.foldMapWithIndex(monoidString)((k: 'a' | 'b', _n) => k)(r1) // $ExpectType string + +_.reduceRightWithIndex('', (k: string, _n, _b) => k)(d1) // $ExpectType string +_.reduceRightWithIndex('', (k: 'a' | 'b', _n, _b) => k)(r1) // $ExpectType string + +_.singleton('a', 1) // $ExpectType Readonly> + +_.traverseWithIndex(O.option)((_k, n: number) => O.some(n))(d1) // $ExpectType Option>> +_.traverseWithIndex(O.option)((_k: 'a' | 'b', n: number) => O.some(n))(r1) // $ExpectType Option>> + +_.traverse(O.option)((n: number) => O.some(n))(d1) // $ExpectType Option>> +_.traverse(O.option)((n: number) => O.some(n))(r1) // $ExpectType Option>> + +_.sequence(O.option)(do1) // $ExpectType Option>> +_.sequence(O.option)(ro1) // $ExpectType Option>> + +_.readonlyRecord.compact(do1) // $ExpectType Readonly> + +_.partitionMapWithIndex((_k: string, n: number): E.Either => E.right(n))(d1) // $ExpectType Separated>, Readonly>> +_.partitionMapWithIndex((_k: 'a' | 'b', n: number): E.Either => E.right(n))(r1) // $ExpectType Separated>, Readonly>> + +_.partitionWithIndex((_k: string, n: number) => n > 2)(d1) // $ExpectType Separated>, Readonly>> +_.partitionWithIndex((_k: 'a' | 'b', n: number) => n > 2)(r1) // $ExpectType Separated>, Readonly>> + +_.filterMapWithIndex((_k: string, n: number) => O.some(n))(d1) // $ExpectType Readonly> +_.filterMapWithIndex((_k: 'a' | 'b', n: number) => O.some(n))(r1) // $ExpectType Readonly> + +_.filterWithIndex((_k: string, n: number) => n > 2)(d1) // $ExpectType Readonly> +_.filterWithIndex((_k: 'a' | 'b', n: number) => n > 2)(r1) // $ExpectType Readonly> + +declare const arr1: Array<[string, number]> +declare const arr2: Array<['a' | 'b', number]> + +_.fromFoldable(getFirstSemigroup(), A.array)(arr1) // $ExpectType Readonly> +_.fromFoldable(getFirstSemigroup(), A.array)(arr2) // $ExpectType Readonly> + +type Keys = 'key1' | 'key2' +_.getMonoid(semigroupSum) // $ExpectType Monoid>> +_.getMonoid(semigroupSum) // $ExpectType Monoid>> + +_.getEq(eqNumber) // $ExpectType Eq>> +_.getEq(eqNumber) // $ExpectType Eq>> + +_.toUnfoldable(A.array)({ a: 1 }) // $ExpectType (readonly ["a", number])[] +_.toUnfoldable(A.array)({ a: 1, b: 2 }) // $ExpectType (readonly ["a" | "b", number])[] + +declare const fromFoldableF1: Foldable<'Test'> +declare const fromFoldableInput1: HKT<'Test', ['a' | 'b', number]> +_.fromFoldable(getFirstSemigroup(), fromFoldableF1)(fromFoldableInput1) // $ExpectType Readonly> + +// +// isSubrecord +// + +_.isSubrecord(eqNumber)(recordString, recordString) // $ExpectType boolean +_.isSubrecord(eqNumber)(recordString) // $ExpectType (me: Readonly>) => boolean diff --git a/dtslint/ts3.5/Record.ts b/dtslint/ts3.5/Record.ts index 465505793..d736fdf18 100644 --- a/dtslint/ts3.5/Record.ts +++ b/dtslint/ts3.5/Record.ts @@ -1,5 +1,5 @@ import { pipe } from '../../src/pipeable' -import * as R from '../../src/Record' +import * as _ from '../../src/Record' import { identity } from '../../src/function' import * as O from '../../src/Option' import * as A from '../../src/Array' @@ -24,13 +24,13 @@ declare const keyString: string // hasOwnProperty // -if (R.hasOwnProperty(keyString, d1)) { +if (_.hasOwnProperty(keyString, d1)) { keyString // $ExpectType string } -if (R.hasOwnProperty(keyString, recordString)) { +if (_.hasOwnProperty(keyString, recordString)) { keyString // $ExpectType string } -if (R.hasOwnProperty(keyString, r1)) { +if (_.hasOwnProperty(keyString, r1)) { keyString // $ExpectType "a" | "b" } @@ -38,140 +38,147 @@ if (R.hasOwnProperty(keyString, r1)) { // updateAt // -pipe(d1, R.updateAt('a', 3)) // $ExpectType Option> -pipe(recordString, R.updateAt('a', 3)) // $ExpectType Option> -pipe(r1, R.updateAt('a', 3)) // $ExpectType Option> +pipe(d1, _.updateAt('a', 3)) // $ExpectType Option> +pipe(recordString, _.updateAt('a', 3)) // $ExpectType Option> +pipe(r1, _.updateAt('a', 3)) // $ExpectType Option> // // modifyAt // -pipe(d1, R.modifyAt('a', identity)) // $ExpectType Option> -pipe(recordString, R.modifyAt('a', identity)) // $ExpectType Option> -pipe(r1, R.modifyAt('a', identity)) // $ExpectType Option> +pipe(d1, _.modifyAt('a', identity)) // $ExpectType Option> +pipe(recordString, _.modifyAt('a', identity)) // $ExpectType Option> +pipe(r1, _.modifyAt('a', identity)) // $ExpectType Option> // // pop // -R.pop('a')(r1) // $ExpectType Option<[number, Record<"b", number>]> -R.pop('a')(d1) // $ExpectType Option<[number, Record]> -R.pop(stringKey)(r1) // $ExpectType Option<[number, Record]> +_.pop('a')(r1) // $ExpectType Option<[number, Record<"b", number>]> +_.pop('a')(d1) // $ExpectType Option<[number, Record]> +_.pop(stringKey)(r1) // $ExpectType Option<[number, Record]> // // collect // -R.collect((_k: 'a', n: number) => n)({ a: 1 }) // $ExpectType number[] -R.collect((_k: 'a', n: number) => n)(l1) // $ExpectType number[] -R.collect((_k, n: number) => n)(d1) // $ExpectType number[] -R.collect((_k: 'a' | 'b', n: number) => n)(r1) // $ExpectType number[] +_.collect((_k: 'a', n: number) => n)({ a: 1 }) // $ExpectType number[] +_.collect((_k: 'a', n: number) => n)(l1) // $ExpectType number[] +_.collect((_k, n: number) => n)(d1) // $ExpectType number[] +_.collect((_k: 'a' | 'b', n: number) => n)(r1) // $ExpectType number[] // // toArray // -R.toArray({ a: 1 }) // $ExpectType ["a", number][] -R.toArray(l1) // $ExpectType ["a", number][] -R.toArray(d1) // $ExpectType [string, number][] -R.toArray(r1) // $ExpectType ["a" | "b", number][] +_.toArray({ a: 1 }) // $ExpectType ["a", number][] +_.toArray(l1) // $ExpectType ["a", number][] +_.toArray(d1) // $ExpectType [string, number][] +_.toArray(r1) // $ExpectType ["a" | "b", number][] // // insertAt // -R.insertAt('b', 0)({ a: 1 }) // $ExpectType Record<"a" | "b", number> -R.insertAt('b', 0)(l1) // $ExpectType Record<"a" | "b", number> -R.insertAt('b', 0)(d1) // $ExpectType Record -R.insertAt('b', 0)(r1) // $ExpectType Record<"a" | "b", number> -R.insertAt(stringKey, 0)(r1) // $ExpectType Record -R.insertAt('c', 0)(r1) // $ExpectType Record<"a" | "b" | "c", number> +_.insertAt('b', 0)({ a: 1 }) // $ExpectType Record<"a" | "b", number> +_.insertAt('b', 0)(l1) // $ExpectType Record<"a" | "b", number> +_.insertAt('b', 0)(d1) // $ExpectType Record +_.insertAt('b', 0)(r1) // $ExpectType Record<"a" | "b", number> +_.insertAt(stringKey, 0)(r1) // $ExpectType Record +_.insertAt('c', 0)(r1) // $ExpectType Record<"a" | "b" | "c", number> // // deleteAt // -R.deleteAt('a')({ a: 1 }) // $ExpectType Record -R.deleteAt('b')({ a: 1 }) // $ExpectType Record<"a", number> -R.deleteAt('a')(l1) // $ExpectType Record -R.deleteAt('b')(l1) // $ExpectType Record<"a", number> -R.deleteAt('b')(d1) // $ExpectType Record -R.deleteAt('c')(r1) // $ExpectType Record<"a" | "b", number> -R.deleteAt('a')(r1) // $ExpectType Record<"b", number> -R.deleteAt(stringKey)(r1) // $ExpectType Record +_.deleteAt('a')({ a: 1 }) // $ExpectType Record +_.deleteAt('b')({ a: 1 }) // $ExpectType Record<"a", number> +_.deleteAt('a')(l1) // $ExpectType Record +_.deleteAt('b')(l1) // $ExpectType Record<"a", number> +_.deleteAt('b')(d1) // $ExpectType Record +_.deleteAt('c')(r1) // $ExpectType Record<"a" | "b", number> +_.deleteAt('a')(r1) // $ExpectType Record<"b", number> +_.deleteAt(stringKey)(r1) // $ExpectType Record // // mapWithIndex // -R.mapWithIndex((_k: 'a', n: number) => n > 2)({ a: 1 }) // $ExpectType Record<"a", boolean> -R.mapWithIndex((_k: 'a', n: number) => n > 2)(l1) // $ExpectType Record<"a", boolean> -R.mapWithIndex((_k: string, n: number) => n > 2)(d1) // $ExpectType Record -R.mapWithIndex((_k: 'a' | 'b', n: number) => n > 2)(r1) // $ExpectType Record<"a" | "b", boolean> +_.mapWithIndex((_k: 'a', n: number) => n > 2)({ a: 1 }) // $ExpectType Record<"a", boolean> +_.mapWithIndex((_k: 'a', n: number) => n > 2)(l1) // $ExpectType Record<"a", boolean> +_.mapWithIndex((_k: string, n: number) => n > 2)(d1) // $ExpectType Record +_.mapWithIndex((_k: 'a' | 'b', n: number) => n > 2)(r1) // $ExpectType Record<"a" | "b", boolean> // // map // -R.map((n: number) => n > 2)({ a: 1 }) // $ExpectType Record<"a", boolean> -R.map((n: number) => n > 2)(l1) // $ExpectType Record<"a", boolean> -R.map((n: number) => n > 2)(d1) // $ExpectType Record -R.map((n: number) => n > 2)(r1) // $ExpectType Record<"a" | "b", boolean> +_.map((n: number) => n > 2)({ a: 1 }) // $ExpectType Record<"a", boolean> +_.map((n: number) => n > 2)(l1) // $ExpectType Record<"a", boolean> +_.map((n: number) => n > 2)(d1) // $ExpectType Record +_.map((n: number) => n > 2)(r1) // $ExpectType Record<"a" | "b", boolean> // // reduceWithIndex // -R.reduceWithIndex('', (k: string, _n) => k)(d1) // $ExpectType string -R.reduceWithIndex('', (k: 'a' | 'b', _n) => k)(r1) // $ExpectType string +_.reduceWithIndex('', (k: string, _n) => k)(d1) // $ExpectType string +_.reduceWithIndex('', (k: 'a' | 'b', _n) => k)(r1) // $ExpectType string -R.foldMapWithIndex(monoidString)((k: string, _n) => k)(d1) // $ExpectType string -R.foldMapWithIndex(monoidString)((k: 'a' | 'b', _n) => k)(r1) // $ExpectType string +_.foldMapWithIndex(monoidString)((k: string, _n) => k)(d1) // $ExpectType string +_.foldMapWithIndex(monoidString)((k: 'a' | 'b', _n) => k)(r1) // $ExpectType string -R.reduceRightWithIndex('', (k: string, _n, _b) => k)(d1) // $ExpectType string -R.reduceRightWithIndex('', (k: 'a' | 'b', _n, _b) => k)(r1) // $ExpectType string +_.reduceRightWithIndex('', (k: string, _n, _b) => k)(d1) // $ExpectType string +_.reduceRightWithIndex('', (k: 'a' | 'b', _n, _b) => k)(r1) // $ExpectType string -R.singleton('a', 1) // $ExpectType Record<"a", number> +_.singleton('a', 1) // $ExpectType Record<"a", number> -R.traverseWithIndex(O.option)((_k, n: number) => O.some(n))(d1) // $ExpectType Option> -R.traverseWithIndex(O.option)((_k: 'a' | 'b', n: number) => O.some(n))(r1) // $ExpectType Option> +_.traverseWithIndex(O.option)((_k, n: number) => O.some(n))(d1) // $ExpectType Option> +_.traverseWithIndex(O.option)((_k: 'a' | 'b', n: number) => O.some(n))(r1) // $ExpectType Option> -R.traverse(O.option)((n: number) => O.some(n))(d1) // $ExpectType Option> -R.traverse(O.option)((n: number) => O.some(n))(r1) // $ExpectType Option> +_.traverse(O.option)((n: number) => O.some(n))(d1) // $ExpectType Option> +_.traverse(O.option)((n: number) => O.some(n))(r1) // $ExpectType Option> -R.sequence(O.option)(do1) // $ExpectType Option> -R.sequence(O.option)(ro1) // $ExpectType Option> +_.sequence(O.option)(do1) // $ExpectType Option> +_.sequence(O.option)(ro1) // $ExpectType Option> -R.record.compact(do1) // $ExpectType Record +_.record.compact(do1) // $ExpectType Record -R.partitionMapWithIndex((_k: string, n: number): E.Either => E.right(n))(d1) // $ExpectType Separated, Record> -R.partitionMapWithIndex((_k: 'a' | 'b', n: number): E.Either => E.right(n))(r1) // $ExpectType Separated, Record> +_.partitionMapWithIndex((_k: string, n: number): E.Either => E.right(n))(d1) // $ExpectType Separated, Record> +_.partitionMapWithIndex((_k: 'a' | 'b', n: number): E.Either => E.right(n))(r1) // $ExpectType Separated, Record> -R.partitionWithIndex((_k: string, n: number) => n > 2)(d1) // $ExpectType Separated, Record> -R.partitionWithIndex((_k: 'a' | 'b', n: number) => n > 2)(r1) // $ExpectType Separated, Record> +_.partitionWithIndex((_k: string, n: number) => n > 2)(d1) // $ExpectType Separated, Record> +_.partitionWithIndex((_k: 'a' | 'b', n: number) => n > 2)(r1) // $ExpectType Separated, Record> -R.filterMapWithIndex((_k: string, n: number) => O.some(n))(d1) // $ExpectType Record -R.filterMapWithIndex((_k: 'a' | 'b', n: number) => O.some(n))(r1) // $ExpectType Record +_.filterMapWithIndex((_k: string, n: number) => O.some(n))(d1) // $ExpectType Record +_.filterMapWithIndex((_k: 'a' | 'b', n: number) => O.some(n))(r1) // $ExpectType Record -R.filterWithIndex((_k: string, n: number) => n > 2)(d1) // $ExpectType Record -R.filterWithIndex((_k: 'a' | 'b', n: number) => n > 2)(r1) // $ExpectType Record +_.filterWithIndex((_k: string, n: number) => n > 2)(d1) // $ExpectType Record +_.filterWithIndex((_k: 'a' | 'b', n: number) => n > 2)(r1) // $ExpectType Record declare const arr1: Array<[string, number]> declare const arr2: Array<['a' | 'b', number]> -R.fromFoldable(getFirstSemigroup(), A.array)(arr1) // $ExpectType Record -R.fromFoldable(getFirstSemigroup(), A.array)(arr2) // $ExpectType Record<"a" | "b", number> +_.fromFoldable(getFirstSemigroup(), A.array)(arr1) // $ExpectType Record +_.fromFoldable(getFirstSemigroup(), A.array)(arr2) // $ExpectType Record<"a" | "b", number> type Keys = 'key1' | 'key2' -R.getMonoid(semigroupSum) // $ExpectType Monoid> -R.getMonoid(semigroupSum) // $ExpectType Monoid> +_.getMonoid(semigroupSum) // $ExpectType Monoid> +_.getMonoid(semigroupSum) // $ExpectType Monoid> -R.getEq(eqNumber) // $ExpectType Eq> -R.getEq(eqNumber) // $ExpectType Eq> +_.getEq(eqNumber) // $ExpectType Eq> +_.getEq(eqNumber) // $ExpectType Eq> -R.toUnfoldable(A.array)({ a: 1 }) // $ExpectType ["a", number][] -R.toUnfoldable(A.array)({ a: 1, b: 2 }) // $ExpectType ["a" | "b", number][] +_.toUnfoldable(A.array)({ a: 1 }) // $ExpectType ["a", number][] +_.toUnfoldable(A.array)({ a: 1, b: 2 }) // $ExpectType ["a" | "b", number][] declare const fromFoldableF1: Foldable<'Test'> declare const fromFoldableInput1: HKT<'Test', ['a' | 'b', number]> -R.fromFoldable(getFirstSemigroup(), fromFoldableF1)(fromFoldableInput1) // $ExpectType Record<"a" | "b", number> +_.fromFoldable(getFirstSemigroup(), fromFoldableF1)(fromFoldableInput1) // $ExpectType Record<"a" | "b", number> + +// +// isSubrecord +// + +_.isSubrecord(eqNumber)(recordString, recordString) // $ExpectType boolean +_.isSubrecord(eqNumber)(recordString) // $ExpectType (me: Record) => boolean diff --git a/src/ReadonlyRecord.ts b/src/ReadonlyRecord.ts index 5f58282d4..e27be82ee 100644 --- a/src/ReadonlyRecord.ts +++ b/src/ReadonlyRecord.ts @@ -238,15 +238,31 @@ export function pop(k: string): (r: ReadonlyRecord) => Option(E: Eq): (x: ReadonlyRecord, y: ReadonlyRecord) => boolean { - return (x, y) => { - for (const k in x) { - if (!_hasOwnProperty.call(y, k) || !E.equals(x[k], y[k])) { +export function isSubrecord( + E: Eq +): { + (that: ReadonlyRecord): (me: ReadonlyRecord) => boolean + (me: ReadonlyRecord, that: ReadonlyRecord): boolean +} +export function isSubrecord( + E: Eq +): ( + me: ReadonlyRecord, + that?: ReadonlyRecord +) => boolean | ((me: ReadonlyRecord) => boolean) { + return (me, that?) => { + if (that === undefined) { + const isSubrecordE = isSubrecord(E) + return (that) => isSubrecordE(that, me) + } + for (const k in me) { + if (!_hasOwnProperty.call(that, k) || !E.equals(me[k], that[k])) { return false } } @@ -261,7 +277,7 @@ export function isSubrecord(E: Eq): (x: ReadonlyRecord, y: Read export function getEq(E: Eq): Eq> export function getEq(E: Eq): Eq> { const isSubrecordE = isSubrecord(E) - return fromEquals((x, y) => isSubrecordE(x, y) && isSubrecordE(y, x)) + return fromEquals((x, y) => isSubrecordE(x)(y) && isSubrecordE(y)(x)) } /** diff --git a/src/Record.ts b/src/Record.ts index f6feb0083..8533e99e6 100644 --- a/src/Record.ts +++ b/src/Record.ts @@ -137,12 +137,18 @@ export function pop(k: string): (r: Record) => Option<[A, Record(E: Eq) => (x: Record, y: Record) => boolean = RR.isSubrecord +export const isSubrecord: ( + E: Eq +) => { + (that: Record): (me: Record) => boolean + (me: Record, that: Record): boolean +} = RR.isSubrecord /** * @since 2.0.0 From fa6c54af611d0375c3e3ab00af80cba1f8ce4a1a Mon Sep 17 00:00:00 2001 From: gcanti Date: Tue, 16 Jun 2020 17:13:36 +0200 Subject: [PATCH 025/106] make Record#lookup / ReadonlyRecord#lookup data-last --- CHANGELOG.md | 2 ++ docs/modules/ReadonlyRecord.ts.md | 1 + docs/modules/Record.ts.md | 5 ++++- dtslint/ts3.5/ReadonlyRecord.ts | 7 +++++++ dtslint/ts3.5/Record.ts | 7 +++++++ src/ReadonlyRecord.ts | 10 +++++++++- src/Record.ts | 5 ++++- test/ReadonlyRecord.ts | 4 ++++ test/Record.ts | 4 ++++ 9 files changed, 42 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 82cb5c049..40fa40711 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -53,8 +53,10 @@ high state of flux, you're at risk of it changing without notice. - make `zip` data-last (@gcanti) - `ReadonlyRecord` - make `isSubrecord` data-last (@gcanti) + - make `lookup` data-last (@gcanti) - `Record` - make `isSubrecord` data-last (@gcanti) + - make `lookup` data-last (@gcanti) - `Semigroup` - make `fold` data-last (@gcanti) diff --git a/docs/modules/ReadonlyRecord.ts.md b/docs/modules/ReadonlyRecord.ts.md index a53d3e83e..5386f6b3d 100644 --- a/docs/modules/ReadonlyRecord.ts.md +++ b/docs/modules/ReadonlyRecord.ts.md @@ -672,6 +672,7 @@ Lookup the value for a key in a record **Signature** ```ts +export declare function lookup(k: string): (r: ReadonlyRecord) => Option export declare function lookup(k: string, r: ReadonlyRecord): Option ``` diff --git a/docs/modules/Record.ts.md b/docs/modules/Record.ts.md index 490016412..b8cf845aa 100644 --- a/docs/modules/Record.ts.md +++ b/docs/modules/Record.ts.md @@ -538,7 +538,10 @@ Lookup the value for a key in a record **Signature** ```ts -export declare const lookup: (k: string, r: Record) => Option +export declare const lookup: { + (k: string): (r: Record) => Option + (k: string, r: Record): Option +} ``` Added in v2.0.0 diff --git a/dtslint/ts3.5/ReadonlyRecord.ts b/dtslint/ts3.5/ReadonlyRecord.ts index 5d3cf7320..991854726 100644 --- a/dtslint/ts3.5/ReadonlyRecord.ts +++ b/dtslint/ts3.5/ReadonlyRecord.ts @@ -173,3 +173,10 @@ _.fromFoldable(getFirstSemigroup(), fromFoldableF1)(fromFoldableInput1) _.isSubrecord(eqNumber)(recordString, recordString) // $ExpectType boolean _.isSubrecord(eqNumber)(recordString) // $ExpectType (me: Readonly>) => boolean + +// +// lookup +// + +_.lookup('a', recordString) // $ExpectType Option +_.lookup('a') // $ExpectType (r: Readonly>) => Option diff --git a/dtslint/ts3.5/Record.ts b/dtslint/ts3.5/Record.ts index d736fdf18..3154572e7 100644 --- a/dtslint/ts3.5/Record.ts +++ b/dtslint/ts3.5/Record.ts @@ -182,3 +182,10 @@ _.fromFoldable(getFirstSemigroup(), fromFoldableF1)(fromFoldableInput1) _.isSubrecord(eqNumber)(recordString, recordString) // $ExpectType boolean _.isSubrecord(eqNumber)(recordString) // $ExpectType (me: Record) => boolean + +// +// lookup +// + +_.lookup('a', recordString) // $ExpectType Option +_.lookup('a') // $ExpectType (r: Record) => Option diff --git a/src/ReadonlyRecord.ts b/src/ReadonlyRecord.ts index e27be82ee..7f23775d6 100644 --- a/src/ReadonlyRecord.ts +++ b/src/ReadonlyRecord.ts @@ -324,7 +324,15 @@ export function getMonoid(S: Semigroup): Monoid> * * @since 2.5.0 */ -export function lookup(k: string, r: ReadonlyRecord): Option { +export function lookup(k: string): (r: ReadonlyRecord) => Option +export function lookup(k: string, r: ReadonlyRecord): Option +export function lookup( + k: string, + r?: ReadonlyRecord +): Option | ((r: ReadonlyRecord) => Option) { + if (r === undefined) { + return (r) => lookup(k, r) + } return _hasOwnProperty.call(r, k) ? optionSome(r[k]) : none } diff --git a/src/Record.ts b/src/Record.ts index 8533e99e6..a7b08250f 100644 --- a/src/Record.ts +++ b/src/Record.ts @@ -180,7 +180,10 @@ export function getMonoid(S: Semigroup): Monoid> { * * @since 2.0.0 */ -export const lookup: (k: string, r: Record) => Option = RR.lookup +export const lookup: { + (k: string): (r: Record) => Option + (k: string, r: Record): Option +} = RR.lookup /** * @since 2.0.0 diff --git a/test/ReadonlyRecord.ts b/test/ReadonlyRecord.ts index 0a109c907..b5022a7ff 100644 --- a/test/ReadonlyRecord.ts +++ b/test/ReadonlyRecord.ts @@ -244,6 +244,10 @@ describe('ReadonlyRecord', () => { assert.deepStrictEqual(_.lookup('a', { a: 1 }), some(1)) assert.deepStrictEqual(_.lookup('b', { a: 1 }), none) assert.deepStrictEqual(_.lookup('b', noPrototype), none) + + assert.deepStrictEqual(_.lookup('a')({ a: 1 }), some(1)) + assert.deepStrictEqual(_.lookup('b')({ a: 1 }), none) + assert.deepStrictEqual(_.lookup('b')(noPrototype), none) }) it('fromFoldable', () => { diff --git a/test/Record.ts b/test/Record.ts index e23d39159..dc46ac125 100644 --- a/test/Record.ts +++ b/test/Record.ts @@ -111,6 +111,10 @@ describe('Record', () => { assert.deepStrictEqual(_.lookup('a', { a: 1 }), some(1)) assert.deepStrictEqual(_.lookup('b', { a: 1 }), none) assert.deepStrictEqual(_.lookup('b', noPrototype), none) + + assert.deepStrictEqual(_.lookup('a')({ a: 1 }), some(1)) + assert.deepStrictEqual(_.lookup('b')({ a: 1 }), none) + assert.deepStrictEqual(_.lookup('b')(noPrototype), none) }) it('fromFoldable', () => { From 18c552bbd2d01068d8cf0f6037273c68387f542f Mon Sep 17 00:00:00 2001 From: gcanti Date: Tue, 16 Jun 2020 17:20:02 +0200 Subject: [PATCH 026/106] make Record#elem / ReadonlyRecord#elem data-last --- CHANGELOG.md | 2 ++ docs/modules/ReadonlyRecord.ts.md | 7 ++++++- docs/modules/Record.ts.md | 4 +++- dtslint/ts3.5/ReadonlyRecord.ts | 7 +++++++ dtslint/ts3.5/Record.ts | 7 +++++++ src/ReadonlyRecord.ts | 18 ++++++++++++++++-- src/Record.ts | 9 ++++++++- test/ReadonlyRecord.ts | 3 +++ test/Record.ts | 3 +++ 9 files changed, 55 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 40fa40711..cd1ecba9c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -54,9 +54,11 @@ high state of flux, you're at risk of it changing without notice. - `ReadonlyRecord` - make `isSubrecord` data-last (@gcanti) - make `lookup` data-last (@gcanti) + - make `elem` data-last (@gcanti) - `Record` - make `isSubrecord` data-last (@gcanti) - make `lookup` data-last (@gcanti) + - make `elem` data-last (@gcanti) - `Semigroup` - make `fold` data-last (@gcanti) diff --git a/docs/modules/ReadonlyRecord.ts.md b/docs/modules/ReadonlyRecord.ts.md index 5386f6b3d..96636352a 100644 --- a/docs/modules/ReadonlyRecord.ts.md +++ b/docs/modules/ReadonlyRecord.ts.md @@ -469,7 +469,12 @@ Added in v2.5.0 **Signature** ```ts -export declare function elem(E: Eq): (a: A, fa: ReadonlyRecord) => boolean +export declare function elem( + E: Eq +): { + (a: A): (fa: ReadonlyRecord) => boolean + (a: A, fa: ReadonlyRecord): boolean +} ``` Added in v2.5.0 diff --git a/docs/modules/Record.ts.md b/docs/modules/Record.ts.md index b8cf845aa..45716a6e9 100644 --- a/docs/modules/Record.ts.md +++ b/docs/modules/Record.ts.md @@ -268,7 +268,9 @@ Added in v2.0.0 **Signature** ```ts -export declare const elem: (E: Eq) => (a: A, fa: Record) => boolean +export declare const elem: ( + E: Eq +) => { (a: A): (fa: Record) => boolean; (a: A, fa: Record): boolean } ``` Added in v2.0.0 diff --git a/dtslint/ts3.5/ReadonlyRecord.ts b/dtslint/ts3.5/ReadonlyRecord.ts index 991854726..cd902a9cf 100644 --- a/dtslint/ts3.5/ReadonlyRecord.ts +++ b/dtslint/ts3.5/ReadonlyRecord.ts @@ -180,3 +180,10 @@ _.isSubrecord(eqNumber)(recordString) // $ExpectType (me: Readonly _.lookup('a') // $ExpectType (r: Readonly>) => Option + +// +// elem +// + +_.elem(eqNumber)(1, recordString) // $ExpectType boolean +_.elem(eqNumber)(1) // $ExpectType (fa: Readonly>) => boolean diff --git a/dtslint/ts3.5/Record.ts b/dtslint/ts3.5/Record.ts index 3154572e7..cedc3daf9 100644 --- a/dtslint/ts3.5/Record.ts +++ b/dtslint/ts3.5/Record.ts @@ -189,3 +189,10 @@ _.isSubrecord(eqNumber)(recordString) // $ExpectType (me: Record _.lookup('a', recordString) // $ExpectType Option _.lookup('a') // $ExpectType (r: Record) => Option + +// +// elem +// + +_.elem(eqNumber)(1, recordString) // $ExpectType boolean +_.elem(eqNumber)(1) // $ExpectType (fa: Record) => boolean diff --git a/src/ReadonlyRecord.ts b/src/ReadonlyRecord.ts index 7f23775d6..c49c5d12c 100644 --- a/src/ReadonlyRecord.ts +++ b/src/ReadonlyRecord.ts @@ -319,6 +319,7 @@ export function getMonoid(S: Semigroup): Monoid> } } +// TODO: remove non-curried overloading in v3 /** * Lookup the value for a key in a record * @@ -719,11 +720,24 @@ export function some(predicate: (a: A) => boolean): (r: ReadonlyRecord(E: Eq): (a: A, fa: ReadonlyRecord) => boolean { - return (a, fa) => { +export function elem( + E: Eq +): { + (a: A): (fa: ReadonlyRecord) => boolean + (a: A, fa: ReadonlyRecord): boolean +} +export function elem( + E: Eq +): (a: A, fa?: ReadonlyRecord) => boolean | ((fa: ReadonlyRecord) => boolean) { + return (a, fa?) => { + if (fa === undefined) { + const elemE = elem(E) + return (fa) => elemE(a, fa) + } for (const k in fa) { if (E.equals(fa[k], a)) { return true diff --git a/src/Record.ts b/src/Record.ts index a7b08250f..0a7636ee7 100644 --- a/src/Record.ts +++ b/src/Record.ts @@ -175,6 +175,7 @@ export function getMonoid(S: Semigroup): Monoid> { return RR.getMonoid(S) } +// TODO: remove non-curried overloading in v3 /** * Lookup the value for a key in a record * @@ -483,10 +484,16 @@ export const every: (predicate: Predicate) => (r: Record) => bo */ export const some: (predicate: (a: A) => boolean) => (r: Record) => boolean = RR.some +// TODO: remove non-curried overloading in v3 /** * @since 2.0.0 */ -export const elem: (E: Eq) => (a: A, fa: Record) => boolean = RR.elem +export const elem: ( + E: Eq +) => { + (a: A): (fa: Record) => boolean + (a: A, fa: Record): boolean +} = RR.elem // ------------------------------------------------------------------------------------- // pipeables diff --git a/test/ReadonlyRecord.ts b/test/ReadonlyRecord.ts index b5022a7ff..7b42ca9a6 100644 --- a/test/ReadonlyRecord.ts +++ b/test/ReadonlyRecord.ts @@ -357,6 +357,9 @@ describe('ReadonlyRecord', () => { it('elem', () => { assert.deepStrictEqual(_.elem(eqNumber)(1, { a: 1, b: 2 }), true) assert.deepStrictEqual(_.elem(eqNumber)(3, { a: 1, b: 2 }), false) + + assert.deepStrictEqual(_.elem(eqNumber)(1)({ a: 1, b: 2 }), true) + assert.deepStrictEqual(_.elem(eqNumber)(3)({ a: 1, b: 2 }), false) }) it('fromFoldableMap', () => { diff --git a/test/Record.ts b/test/Record.ts index dc46ac125..68e3af98c 100644 --- a/test/Record.ts +++ b/test/Record.ts @@ -282,6 +282,9 @@ describe('Record', () => { it('elem', () => { assert.deepStrictEqual(_.elem(eqNumber)(1, { a: 1, b: 2 }), true) assert.deepStrictEqual(_.elem(eqNumber)(3, { a: 1, b: 2 }), false) + + assert.deepStrictEqual(_.elem(eqNumber)(1)({ a: 1, b: 2 }), true) + assert.deepStrictEqual(_.elem(eqNumber)(3)({ a: 1, b: 2 }), false) }) it('fromFoldableMap', () => { From c9fbe9a6f1a123c909a5813ba4ec24608f79a408 Mon Sep 17 00:00:00 2001 From: gcanti Date: Tue, 16 Jun 2020 17:31:06 +0200 Subject: [PATCH 027/106] make Set#subset / ReadonlySet#isSubset data-last --- CHANGELOG.md | 4 ++++ docs/modules/ReadonlySet.ts.md | 7 ++++++- docs/modules/Set.ts.md | 4 +++- dtslint/ts3.5/ReadonlySet.ts | 11 +++++++++++ dtslint/ts3.5/Set.ts | 11 +++++++++++ src/ReadonlySet.ts | 19 +++++++++++++++++-- src/Set.ts | 8 +++++++- test/ReadonlySet.ts | 4 ++++ test/Set.ts | 4 ++++ 9 files changed, 67 insertions(+), 5 deletions(-) create mode 100644 dtslint/ts3.5/ReadonlySet.ts create mode 100644 dtslint/ts3.5/Set.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index cd1ecba9c..1cfc6ccdb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -55,10 +55,14 @@ high state of flux, you're at risk of it changing without notice. - make `isSubrecord` data-last (@gcanti) - make `lookup` data-last (@gcanti) - make `elem` data-last (@gcanti) + - `ReadonlySet` + - make `isSubset` data-last (@gcanti) - `Record` - make `isSubrecord` data-last (@gcanti) - make `lookup` data-last (@gcanti) - make `elem` data-last (@gcanti) + - `Set` + - make `subset` data-last (@gcanti) - `Semigroup` - make `fold` data-last (@gcanti) diff --git a/docs/modules/ReadonlySet.ts.md b/docs/modules/ReadonlySet.ts.md index f4941a84e..3049dd813 100644 --- a/docs/modules/ReadonlySet.ts.md +++ b/docs/modules/ReadonlySet.ts.md @@ -324,7 +324,12 @@ Added in v2.5.0 **Signature** ```ts -export declare function isSubset(E: Eq): (x: ReadonlySet, y: ReadonlySet) => boolean +export declare function isSubset( + E: Eq +): { + (that: ReadonlySet): (me: ReadonlySet) => boolean + (me: ReadonlySet, that: ReadonlySet): boolean +} ``` Added in v2.5.0 diff --git a/docs/modules/Set.ts.md b/docs/modules/Set.ts.md index b87a1968a..2234503c5 100644 --- a/docs/modules/Set.ts.md +++ b/docs/modules/Set.ts.md @@ -371,7 +371,9 @@ Added in v2.0.0 **Signature** ```ts -export declare const subset: (E: Eq) => (x: Set, y: Set) => boolean +export declare const subset: ( + E: Eq +) => { (that: Set): (me: Set) => boolean; (me: Set, that: Set): boolean } ``` Added in v2.0.0 diff --git a/dtslint/ts3.5/ReadonlySet.ts b/dtslint/ts3.5/ReadonlySet.ts new file mode 100644 index 000000000..934152dd3 --- /dev/null +++ b/dtslint/ts3.5/ReadonlySet.ts @@ -0,0 +1,11 @@ +import * as _ from '../../src/ReadonlySet' +import { eqNumber } from '../../src/Eq' + +declare const me: ReadonlySet + +// +// isSubset +// + +_.isSubset(eqNumber)(me, me) // $ExpectType boolean +_.isSubset(eqNumber)(me) // $ExpectType (me: ReadonlySet) => boolean diff --git a/dtslint/ts3.5/Set.ts b/dtslint/ts3.5/Set.ts new file mode 100644 index 000000000..4c104dc9f --- /dev/null +++ b/dtslint/ts3.5/Set.ts @@ -0,0 +1,11 @@ +import * as _ from '../../src/Set' +import { eqNumber } from '../../src/Eq' + +declare const me: Set + +// +// subset +// + +_.subset(eqNumber)(me, me) // $ExpectType boolean +_.subset(eqNumber)(me) // $ExpectType (me: Set) => boolean diff --git a/src/ReadonlySet.ts b/src/ReadonlySet.ts index a6ea342e6..5288be8bf 100644 --- a/src/ReadonlySet.ts +++ b/src/ReadonlySet.ts @@ -140,14 +140,29 @@ export function chain(E: Eq): (f: (x: A) => ReadonlySet) => (set: Re } } +// TODO: remove non-curried overloading in v3 /** * `true` if and only if every element in the first set is an element of the second set * * @since 2.5.0 */ -export function isSubset(E: Eq): (x: ReadonlySet, y: ReadonlySet) => boolean { +export function isSubset( + E: Eq +): { + (that: ReadonlySet): (me: ReadonlySet) => boolean + (me: ReadonlySet, that: ReadonlySet): boolean +} +export function isSubset( + E: Eq +): (me: ReadonlySet, that?: ReadonlySet) => boolean | ((me: ReadonlySet) => boolean) { const elemE = elem(E) - return (x, y) => every((a: A) => elemE(a, y))(x) + return (me, that?) => { + if (that === undefined) { + const isSubsetE = isSubset(E) + return (that) => isSubsetE(that, me) + } + return every((a: A) => elemE(a, that))(me) + } } /** diff --git a/src/Set.ts b/src/Set.ts index e2c8b120d..4df052fc4 100644 --- a/src/Set.ts +++ b/src/Set.ts @@ -61,12 +61,18 @@ export const every: (predicate: Predicate) => (set: Set) => boolean = R */ export const chain: (E: Eq) => (f: (x: A) => Set) => (set: Set) => Set = RS.chain as any +// TODO: remove non-curried overloading in v3 /** * `true` if and only if every element in the first set is an element of the second set * * @since 2.0.0 */ -export const subset: (E: Eq) => (x: Set, y: Set) => boolean = RS.isSubset +export const subset: ( + E: Eq +) => { + (that: Set): (me: Set) => boolean + (me: Set, that: Set): boolean +} = RS.isSubset /** * @category combinators diff --git a/test/ReadonlySet.ts b/test/ReadonlySet.ts index ac33e2f77..0f14889d6 100644 --- a/test/ReadonlySet.ts +++ b/test/ReadonlySet.ts @@ -6,6 +6,7 @@ import { Eq, eqNumber, eqString, eq, getStructEq } from '../src/Eq' import { none, some as optionSome } from '../src/Option' import { showString } from '../src/Show' import { getMonoid } from '../src/Array' +import { pipe } from '../src/function' const gte2 = (n: number) => n >= 2 @@ -60,6 +61,9 @@ describe('ReadonlySet', () => { it('isSubset', () => { assert.deepStrictEqual(_.isSubset(eqNumber)(new Set([1, 2]), new Set([1, 2, 3])), true) assert.deepStrictEqual(_.isSubset(eqNumber)(new Set([1, 2, 4]), new Set([1, 2, 3])), false) + + assert.deepStrictEqual(pipe(new Set([1, 2]), _.isSubset(eqNumber)(new Set([1, 2, 3]))), true) + assert.deepStrictEqual(pipe(new Set([1, 2, 4]), _.isSubset(eqNumber)(new Set([1, 2, 3]))), false) }) it('filter', () => { diff --git a/test/Set.ts b/test/Set.ts index 170419ff3..4c732a3d2 100644 --- a/test/Set.ts +++ b/test/Set.ts @@ -34,6 +34,7 @@ import { Eq, eqNumber, eqString, eq, getStructEq } from '../src/Eq' import { none, some as optionSome } from '../src/Option' import { showString } from '../src/Show' import { getMonoid } from '../src/Array' +import { pipe } from '../src/function' const gte2 = (n: number) => n >= 2 @@ -88,6 +89,9 @@ describe('Set', () => { it('subset', () => { assert.deepStrictEqual(subset(eqNumber)(new Set([1, 2]), new Set([1, 2, 3])), true) assert.deepStrictEqual(subset(eqNumber)(new Set([1, 2, 4]), new Set([1, 2, 3])), false) + + assert.deepStrictEqual(pipe(new Set([1, 2]), subset(eqNumber)(new Set([1, 2, 3]))), true) + assert.deepStrictEqual(pipe(new Set([1, 2, 4]), subset(eqNumber)(new Set([1, 2, 3]))), false) }) it('filter', () => { From 3bb08d2b3e362cb84a545d2893ae7f4256cf958c Mon Sep 17 00:00:00 2001 From: gcanti Date: Tue, 16 Jun 2020 17:37:17 +0200 Subject: [PATCH 028/106] make Set#elem / ReadonlySet#elem data-last --- CHANGELOG.md | 2 ++ docs/modules/ReadonlySet.ts.md | 7 ++++++- docs/modules/Set.ts.md | 2 +- dtslint/ts3.5/ReadonlySet.ts | 7 +++++++ dtslint/ts3.5/Set.ts | 7 +++++++ src/ReadonlySet.ts | 16 +++++++++++++--- src/Set.ts | 7 ++++++- 7 files changed, 42 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1cfc6ccdb..e2e7522e3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -57,12 +57,14 @@ high state of flux, you're at risk of it changing without notice. - make `elem` data-last (@gcanti) - `ReadonlySet` - make `isSubset` data-last (@gcanti) + - make `elem` data-last (@gcanti) - `Record` - make `isSubrecord` data-last (@gcanti) - make `lookup` data-last (@gcanti) - make `elem` data-last (@gcanti) - `Set` - make `subset` data-last (@gcanti) + - make `elem` data-last (@gcanti) - `Semigroup` - make `fold` data-last (@gcanti) diff --git a/docs/modules/ReadonlySet.ts.md b/docs/modules/ReadonlySet.ts.md index 3049dd813..ae9a748ac 100644 --- a/docs/modules/ReadonlySet.ts.md +++ b/docs/modules/ReadonlySet.ts.md @@ -282,7 +282,12 @@ Test if a value is a member of a set **Signature** ```ts -export declare function elem(E: Eq): (a: A, set: ReadonlySet) => boolean +export declare function elem( + E: Eq +): { + (a: A): (set: ReadonlySet) => boolean + (a: A, set: ReadonlySet): boolean +} ``` Added in v2.5.0 diff --git a/docs/modules/Set.ts.md b/docs/modules/Set.ts.md index 2234503c5..225f84f2e 100644 --- a/docs/modules/Set.ts.md +++ b/docs/modules/Set.ts.md @@ -273,7 +273,7 @@ Test if a value is a member of a set **Signature** ```ts -export declare const elem: (E: Eq) => (a: A, set: Set) => boolean +export declare const elem: (E: Eq) => { (a: A): (set: Set) => boolean; (a: A, set: Set): boolean } ``` Added in v2.0.0 diff --git a/dtslint/ts3.5/ReadonlySet.ts b/dtslint/ts3.5/ReadonlySet.ts index 934152dd3..4c48cf302 100644 --- a/dtslint/ts3.5/ReadonlySet.ts +++ b/dtslint/ts3.5/ReadonlySet.ts @@ -9,3 +9,10 @@ declare const me: ReadonlySet _.isSubset(eqNumber)(me, me) // $ExpectType boolean _.isSubset(eqNumber)(me) // $ExpectType (me: ReadonlySet) => boolean + +// +// elem +// + +_.elem(eqNumber)(1, me) // $ExpectType boolean +_.elem(eqNumber)(1) // $ExpectType (set: ReadonlySet) => boolean diff --git a/dtslint/ts3.5/Set.ts b/dtslint/ts3.5/Set.ts index 4c104dc9f..5934cb3fa 100644 --- a/dtslint/ts3.5/Set.ts +++ b/dtslint/ts3.5/Set.ts @@ -9,3 +9,10 @@ declare const me: Set _.subset(eqNumber)(me, me) // $ExpectType boolean _.subset(eqNumber)(me) // $ExpectType (me: Set) => boolean + +// +// elem +// + +_.elem(eqNumber)(1, me) // $ExpectType boolean +_.elem(eqNumber)(1) // $ExpectType (set: Set) => boolean diff --git a/src/ReadonlySet.ts b/src/ReadonlySet.ts index 5288be8bf..c1b5ddbad 100644 --- a/src/ReadonlySet.ts +++ b/src/ReadonlySet.ts @@ -222,8 +222,18 @@ export function partition( * * @since 2.5.0 */ -export function elem(E: Eq): (a: A, set: ReadonlySet) => boolean { - return (a, set) => { +export function elem( + E: Eq +): { + (a: A): (set: ReadonlySet) => boolean + (a: A, set: ReadonlySet): boolean +} +export function elem(E: Eq): (a: A, set?: ReadonlySet) => boolean | ((set: ReadonlySet) => boolean) { + return (a, set?) => { + if (set === undefined) { + const elemE = elem(E) + return (set) => elemE(a, set) + } const values = set.values() let e: Next let found = false @@ -389,7 +399,7 @@ export function singleton(a: A): ReadonlySet { export function insert(E: Eq): (a: A) => (set: ReadonlySet) => ReadonlySet { const elemE = elem(E) return (a) => (set) => { - if (!elemE(a, set)) { + if (!elemE(a)(set)) { const r = new Set(set) r.add(a) return r diff --git a/src/Set.ts b/src/Set.ts index 4df052fc4..33de66dae 100644 --- a/src/Set.ts +++ b/src/Set.ts @@ -98,7 +98,12 @@ export function partition(predicate: Predicate): (set: Set) => Separate * * @since 2.0.0 */ -export const elem: (E: Eq) => (a: A, set: Set) => boolean = RS.elem +export const elem: ( + E: Eq +) => { + (a: A): (set: Set) => boolean + (a: A, set: Set): boolean +} = RS.elem /** * Form the union of two sets From c02e0b6a2f70be066201ee54b044c306f5a65874 Mon Sep 17 00:00:00 2001 From: gcanti Date: Tue, 16 Jun 2020 17:44:01 +0200 Subject: [PATCH 029/106] make Set#union / ReadonlySet#union data-last --- CHANGELOG.md | 2 ++ docs/modules/ReadonlySet.ts.md | 7 ++++++- docs/modules/Set.ts.md | 4 +++- dtslint/ts3.5/ReadonlySet.ts | 7 +++++++ dtslint/ts3.5/Set.ts | 7 +++++++ src/ReadonlySet.ts | 30 ++++++++++++++++++++++-------- src/Set.ts | 9 ++++++++- test/ReadonlySet.ts | 2 ++ test/Set.ts | 2 ++ 9 files changed, 59 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e2e7522e3..e80c1d37b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -58,6 +58,7 @@ high state of flux, you're at risk of it changing without notice. - `ReadonlySet` - make `isSubset` data-last (@gcanti) - make `elem` data-last (@gcanti) + - make `union` data-last (@gcanti) - `Record` - make `isSubrecord` data-last (@gcanti) - make `lookup` data-last (@gcanti) @@ -65,6 +66,7 @@ high state of flux, you're at risk of it changing without notice. - `Set` - make `subset` data-last (@gcanti) - make `elem` data-last (@gcanti) + - make `union` data-last (@gcanti) - `Semigroup` - make `fold` data-last (@gcanti) diff --git a/docs/modules/ReadonlySet.ts.md b/docs/modules/ReadonlySet.ts.md index ae9a748ac..c73cc19b9 100644 --- a/docs/modules/ReadonlySet.ts.md +++ b/docs/modules/ReadonlySet.ts.md @@ -168,7 +168,12 @@ Form the union of two sets **Signature** ```ts -export declare function union(E: Eq): (set: ReadonlySet, y: ReadonlySet) => ReadonlySet +export declare function union( + E: Eq +): { + (that: ReadonlySet): (me: ReadonlySet) => ReadonlySet + (me: ReadonlySet, that: ReadonlySet): ReadonlySet +} ``` Added in v2.5.0 diff --git a/docs/modules/Set.ts.md b/docs/modules/Set.ts.md index 225f84f2e..11d9d4de5 100644 --- a/docs/modules/Set.ts.md +++ b/docs/modules/Set.ts.md @@ -181,7 +181,9 @@ Form the union of two sets **Signature** ```ts -export declare const union: (E: Eq) => (set: Set, y: Set) => Set +export declare const union: ( + E: Eq +) => { (that: Set): (me: Set) => Set; (me: Set, that: Set): Set } ``` Added in v2.0.0 diff --git a/dtslint/ts3.5/ReadonlySet.ts b/dtslint/ts3.5/ReadonlySet.ts index 4c48cf302..fbc3154e8 100644 --- a/dtslint/ts3.5/ReadonlySet.ts +++ b/dtslint/ts3.5/ReadonlySet.ts @@ -16,3 +16,10 @@ _.isSubset(eqNumber)(me) // $ExpectType (me: ReadonlySet) => boolean _.elem(eqNumber)(1, me) // $ExpectType boolean _.elem(eqNumber)(1) // $ExpectType (set: ReadonlySet) => boolean + +// +// union +// + +_.union(eqNumber)(me, me) // $ExpectType ReadonlySet +_.union(eqNumber)(me) // $ExpectType (me: ReadonlySet) => ReadonlySet diff --git a/dtslint/ts3.5/Set.ts b/dtslint/ts3.5/Set.ts index 5934cb3fa..873a95e4c 100644 --- a/dtslint/ts3.5/Set.ts +++ b/dtslint/ts3.5/Set.ts @@ -16,3 +16,10 @@ _.subset(eqNumber)(me) // $ExpectType (me: Set) => boolean _.elem(eqNumber)(1, me) // $ExpectType boolean _.elem(eqNumber)(1) // $ExpectType (set: Set) => boolean + +// +// union +// + +_.union(eqNumber)(me, me) // $ExpectType Set +_.union(eqNumber)(me) // $ExpectType (me: Set) => Set diff --git a/src/ReadonlySet.ts b/src/ReadonlySet.ts index c1b5ddbad..48eaa9c2a 100644 --- a/src/ReadonlySet.ts +++ b/src/ReadonlySet.ts @@ -217,6 +217,7 @@ export function partition( } } +// TODO: remove non-curried overloading in v3 /** * Test if a value is a member of a set * @@ -245,23 +246,36 @@ export function elem(E: Eq): (a: A, set?: ReadonlySet) => boolean | ((s } } +// TODO: remove non-curried overloading in v3 /** * Form the union of two sets * * @category combinators * @since 2.5.0 */ -export function union(E: Eq): (set: ReadonlySet, y: ReadonlySet) => ReadonlySet { +export function union( + E: Eq +): { + (that: ReadonlySet): (me: ReadonlySet) => ReadonlySet + (me: ReadonlySet, that: ReadonlySet): ReadonlySet +} +export function union( + E: Eq +): (me: ReadonlySet, that?: ReadonlySet) => ReadonlySet | ((me: ReadonlySet) => ReadonlySet) { const elemE = elem(E) - return (x, y) => { - if (x === empty) { - return y + return (me, that?) => { + if (that === undefined) { + const unionE = union(E) + return (that) => unionE(me, that) + } + if (me === empty) { + return that } - if (y === empty) { - return x + if (that === empty) { + return me } - const r = new Set(x) - y.forEach((e) => { + const r = new Set(me) + that.forEach((e) => { if (!elemE(e, r)) { r.add(e) } diff --git a/src/Set.ts b/src/Set.ts index 33de66dae..15afc680c 100644 --- a/src/Set.ts +++ b/src/Set.ts @@ -93,6 +93,7 @@ export function partition(predicate: Predicate): (set: Set) => Separate return RS.partition(predicate) as any } +// TODO: remove non-curried overloading in v3 /** * Test if a value is a member of a set * @@ -105,13 +106,19 @@ export const elem: ( (a: A, set: Set): boolean } = RS.elem +// TODO: remove non-curried overloading in v3 /** * Form the union of two sets * * @category combinators * @since 2.0.0 */ -export const union: (E: Eq) => (set: Set, y: Set) => Set = RS.union as any +export const union: ( + E: Eq +) => { + (that: Set): (me: Set) => Set + (me: Set, that: Set): Set +} = RS.union as any /** * The set of elements which are in both the first and second set diff --git a/test/ReadonlySet.ts b/test/ReadonlySet.ts index 0f14889d6..fa9f7862a 100644 --- a/test/ReadonlySet.ts +++ b/test/ReadonlySet.ts @@ -95,6 +95,8 @@ describe('ReadonlySet', () => { it('union', () => { assert.deepStrictEqual(_.union(eqNumber)(new Set([1, 2]), new Set([1, 3])), new Set([1, 2, 3])) + + assert.deepStrictEqual(pipe(new Set([1, 2]), _.union(eqNumber)(new Set([1, 3]))), new Set([1, 2, 3])) }) it('intersection', () => { diff --git a/test/Set.ts b/test/Set.ts index 4c732a3d2..3954b1298 100644 --- a/test/Set.ts +++ b/test/Set.ts @@ -123,6 +123,8 @@ describe('Set', () => { it('union', () => { assert.deepStrictEqual(union(eqNumber)(new Set([1, 2]), new Set([1, 3])), new Set([1, 2, 3])) + + assert.deepStrictEqual(pipe(new Set([1, 2]), union(eqNumber)(new Set([1, 3]))), new Set([1, 2, 3])) }) it('intersection', () => { From 9e263c0ac7d11fcd67b9011208b3a7ee6d687422 Mon Sep 17 00:00:00 2001 From: gcanti Date: Tue, 16 Jun 2020 17:49:22 +0200 Subject: [PATCH 030/106] make Set#intersection / ReadonlySet#intersection data-last --- CHANGELOG.md | 2 ++ docs/modules/ReadonlySet.ts.md | 7 ++++++- docs/modules/Set.ts.md | 4 +++- dtslint/ts3.5/ReadonlySet.ts | 7 +++++++ dtslint/ts3.5/Set.ts | 7 +++++++ src/ReadonlySet.ts | 23 ++++++++++++++++++----- src/Set.ts | 8 +++++++- test/ReadonlySet.ts | 2 ++ test/Set.ts | 2 ++ 9 files changed, 54 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e80c1d37b..1524db7ed 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -59,6 +59,7 @@ high state of flux, you're at risk of it changing without notice. - make `isSubset` data-last (@gcanti) - make `elem` data-last (@gcanti) - make `union` data-last (@gcanti) + - make `intersection` data-last (@gcanti) - `Record` - make `isSubrecord` data-last (@gcanti) - make `lookup` data-last (@gcanti) @@ -67,6 +68,7 @@ high state of flux, you're at risk of it changing without notice. - make `subset` data-last (@gcanti) - make `elem` data-last (@gcanti) - make `union` data-last (@gcanti) + - make `intersection` data-last (@gcanti) - `Semigroup` - make `fold` data-last (@gcanti) diff --git a/docs/modules/ReadonlySet.ts.md b/docs/modules/ReadonlySet.ts.md index c73cc19b9..e7153d685 100644 --- a/docs/modules/ReadonlySet.ts.md +++ b/docs/modules/ReadonlySet.ts.md @@ -132,7 +132,12 @@ The set of elements which are in both the first and second set **Signature** ```ts -export declare function intersection(E: Eq): (set: ReadonlySet, y: ReadonlySet) => ReadonlySet +export declare function intersection( + E: Eq +): { + (that: ReadonlySet): (me: ReadonlySet) => ReadonlySet + (me: ReadonlySet, that: ReadonlySet): ReadonlySet +} ``` Added in v2.5.0 diff --git a/docs/modules/Set.ts.md b/docs/modules/Set.ts.md index 11d9d4de5..357d1c5c6 100644 --- a/docs/modules/Set.ts.md +++ b/docs/modules/Set.ts.md @@ -130,7 +130,9 @@ The set of elements which are in both the first and second set **Signature** ```ts -export declare const intersection: (E: Eq) => (set: Set, y: Set) => Set +export declare const intersection: ( + E: Eq +) => { (that: Set): (me: Set) => Set; (me: Set, that: Set): Set } ``` Added in v2.0.0 diff --git a/dtslint/ts3.5/ReadonlySet.ts b/dtslint/ts3.5/ReadonlySet.ts index fbc3154e8..434c82d93 100644 --- a/dtslint/ts3.5/ReadonlySet.ts +++ b/dtslint/ts3.5/ReadonlySet.ts @@ -23,3 +23,10 @@ _.elem(eqNumber)(1) // $ExpectType (set: ReadonlySet) => boolean _.union(eqNumber)(me, me) // $ExpectType ReadonlySet _.union(eqNumber)(me) // $ExpectType (me: ReadonlySet) => ReadonlySet + +// +// intersection +// + +_.intersection(eqNumber)(me, me) // $ExpectType ReadonlySet +_.intersection(eqNumber)(me) // $ExpectType (me: ReadonlySet) => ReadonlySet diff --git a/dtslint/ts3.5/Set.ts b/dtslint/ts3.5/Set.ts index 873a95e4c..e1946343c 100644 --- a/dtslint/ts3.5/Set.ts +++ b/dtslint/ts3.5/Set.ts @@ -23,3 +23,10 @@ _.elem(eqNumber)(1) // $ExpectType (set: Set) => boolean _.union(eqNumber)(me, me) // $ExpectType Set _.union(eqNumber)(me) // $ExpectType (me: Set) => Set + +// +// intersection +// + +_.intersection(eqNumber)(me, me) // $ExpectType Set +_.intersection(eqNumber)(me) // $ExpectType (me: Set) => Set diff --git a/src/ReadonlySet.ts b/src/ReadonlySet.ts index 48eaa9c2a..cedf6b3e6 100644 --- a/src/ReadonlySet.ts +++ b/src/ReadonlySet.ts @@ -284,21 +284,34 @@ export function union( } } +// TODO: remove non-curried overloading in v3 /** * The set of elements which are in both the first and second set * * @category combinators * @since 2.5.0 */ -export function intersection(E: Eq): (set: ReadonlySet, y: ReadonlySet) => ReadonlySet { +export function intersection( + E: Eq +): { + (that: ReadonlySet): (me: ReadonlySet) => ReadonlySet + (me: ReadonlySet, that: ReadonlySet): ReadonlySet +} +export function intersection( + E: Eq +): (me: ReadonlySet, that?: ReadonlySet) => ReadonlySet | ((that: ReadonlySet) => ReadonlySet) { const elemE = elem(E) - return (x, y) => { - if (x === empty || y === empty) { + return (me, that?) => { + if (that === undefined) { + const intersectionE = intersection(E) + return (that) => intersectionE(that, me) + } + if (me === empty || that === empty) { return empty } const r = new Set() - x.forEach((e) => { - if (elemE(e, y)) { + me.forEach((e) => { + if (elemE(e, that)) { r.add(e) } }) diff --git a/src/Set.ts b/src/Set.ts index 15afc680c..c8f996d5c 100644 --- a/src/Set.ts +++ b/src/Set.ts @@ -120,13 +120,19 @@ export const union: ( (me: Set, that: Set): Set } = RS.union as any +// TODO: remove non-curried overloading in v3 /** * The set of elements which are in both the first and second set * * @category combinators * @since 2.0.0 */ -export const intersection: (E: Eq) => (set: Set, y: Set) => Set = RS.intersection as any +export const intersection: ( + E: Eq +) => { + (that: Set): (me: Set) => Set + (me: Set, that: Set): Set +} = RS.intersection as any /** * @since 2.0.0 diff --git a/test/ReadonlySet.ts b/test/ReadonlySet.ts index fa9f7862a..d301c2864 100644 --- a/test/ReadonlySet.ts +++ b/test/ReadonlySet.ts @@ -101,6 +101,8 @@ describe('ReadonlySet', () => { it('intersection', () => { assert.deepStrictEqual(_.intersection(eqNumber)(new Set([1, 2]), new Set([1, 3])), new Set([1])) + + assert.deepStrictEqual(pipe(new Set([1, 2]), _.intersection(eqNumber)(new Set([1, 3]))), new Set([1])) }) it('partitionMap', () => { diff --git a/test/Set.ts b/test/Set.ts index 3954b1298..86f686d8b 100644 --- a/test/Set.ts +++ b/test/Set.ts @@ -129,6 +129,8 @@ describe('Set', () => { it('intersection', () => { assert.deepStrictEqual(intersection(eqNumber)(new Set([1, 2]), new Set([1, 3])), new Set([1])) + + assert.deepStrictEqual(pipe(new Set([1, 2]), intersection(eqNumber)(new Set([1, 3]))), new Set([1])) }) it('partitionMap', () => { From d75f9e35ce2f6f3a9d4aa9f6c793e65fbe8d90b9 Mon Sep 17 00:00:00 2001 From: gcanti Date: Tue, 16 Jun 2020 17:54:29 +0200 Subject: [PATCH 031/106] make Set#difference / ReadonlySet#difference data-last --- CHANGELOG.md | 2 ++ docs/modules/ReadonlySet.ts.md | 10 ++++++++-- docs/modules/Set.ts.md | 7 +++++-- dtslint/ts3.5/ReadonlySet.ts | 7 +++++++ dtslint/ts3.5/Set.ts | 7 +++++++ src/ReadonlySet.ts | 22 +++++++++++++++++++--- src/Set.ts | 11 +++++++++-- test/ReadonlySet.ts | 2 ++ test/Set.ts | 2 ++ 9 files changed, 61 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1524db7ed..805e8e73c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -60,6 +60,7 @@ high state of flux, you're at risk of it changing without notice. - make `elem` data-last (@gcanti) - make `union` data-last (@gcanti) - make `intersection` data-last (@gcanti) + - make `difference` data-last (@gcanti) - `Record` - make `isSubrecord` data-last (@gcanti) - make `lookup` data-last (@gcanti) @@ -69,6 +70,7 @@ high state of flux, you're at risk of it changing without notice. - make `elem` data-last (@gcanti) - make `union` data-last (@gcanti) - make `intersection` data-last (@gcanti) + - make `difference` data-last (@gcanti) - `Semigroup` - make `fold` data-last (@gcanti) diff --git a/docs/modules/ReadonlySet.ts.md b/docs/modules/ReadonlySet.ts.md index e7153d685..a57e43c81 100644 --- a/docs/modules/ReadonlySet.ts.md +++ b/docs/modules/ReadonlySet.ts.md @@ -78,7 +78,12 @@ Form the set difference (`x` - `y`) **Signature** ```ts -export declare function difference(E: Eq): (x: ReadonlySet, y: ReadonlySet) => ReadonlySet +export declare function difference( + E: Eq +): { + (that: ReadonlySet): (me: ReadonlySet) => ReadonlySet + (me: ReadonlySet, that: ReadonlySet): ReadonlySet +} ``` **Example** @@ -86,8 +91,9 @@ export declare function difference(E: Eq): (x: ReadonlySet, y: Readonly ```ts import { difference } from 'fp-ts/lib/ReadonlySet' import { eqNumber } from 'fp-ts/lib/Eq' +import { pipe } from 'fp-ts/lib/function' -assert.deepStrictEqual(difference(eqNumber)(new Set([1, 2]), new Set([1, 3])), new Set([2])) +assert.deepStrictEqual(pipe(new Set([1, 2]), difference(eqNumber)(new Set([1, 3]))), new Set([2])) ``` Added in v2.5.0 diff --git a/docs/modules/Set.ts.md b/docs/modules/Set.ts.md index 357d1c5c6..75330f578 100644 --- a/docs/modules/Set.ts.md +++ b/docs/modules/Set.ts.md @@ -76,7 +76,9 @@ Form the set difference (`x` - `y`) **Signature** ```ts -export declare const difference: (E: Eq) => (x: Set, y: Set) => Set +export declare const difference: ( + E: Eq +) => { (that: Set): (me: Set) => Set; (me: Set, that: Set): Set } ``` **Example** @@ -84,8 +86,9 @@ export declare const difference: (E: Eq) => (x: Set, y: Set) => Set< ```ts import { difference } from 'fp-ts/lib/Set' import { eqNumber } from 'fp-ts/lib/Eq' +import { pipe } from 'fp-ts/lib/function' -assert.deepStrictEqual(difference(eqNumber)(new Set([1, 2]), new Set([1, 3])), new Set([2])) +assert.deepStrictEqual(pipe(new Set([1, 2]), difference(eqNumber)(new Set([1, 3]))), new Set([2])) ``` Added in v2.0.0 diff --git a/dtslint/ts3.5/ReadonlySet.ts b/dtslint/ts3.5/ReadonlySet.ts index 434c82d93..deeacd42f 100644 --- a/dtslint/ts3.5/ReadonlySet.ts +++ b/dtslint/ts3.5/ReadonlySet.ts @@ -30,3 +30,10 @@ _.union(eqNumber)(me) // $ExpectType (me: ReadonlySet) => ReadonlySet _.intersection(eqNumber)(me) // $ExpectType (me: ReadonlySet) => ReadonlySet + +// +// difference +// + +_.difference(eqNumber)(me, me) // $ExpectType ReadonlySet +_.difference(eqNumber)(me) // $ExpectType (me: ReadonlySet) => ReadonlySet diff --git a/dtslint/ts3.5/Set.ts b/dtslint/ts3.5/Set.ts index e1946343c..392af6534 100644 --- a/dtslint/ts3.5/Set.ts +++ b/dtslint/ts3.5/Set.ts @@ -30,3 +30,10 @@ _.union(eqNumber)(me) // $ExpectType (me: Set) => Set _.intersection(eqNumber)(me, me) // $ExpectType Set _.intersection(eqNumber)(me) // $ExpectType (me: Set) => Set + +// +// difference +// + +_.difference(eqNumber)(me, me) // $ExpectType Set +_.difference(eqNumber)(me) // $ExpectType (me: Set) => Set diff --git a/src/ReadonlySet.ts b/src/ReadonlySet.ts index cedf6b3e6..59564bd0a 100644 --- a/src/ReadonlySet.ts +++ b/src/ReadonlySet.ts @@ -353,21 +353,37 @@ export function partitionMap( } } +// TODO: remove non-curried overloading in v3 /** * Form the set difference (`x` - `y`) * * @example * import { difference } from 'fp-ts/lib/ReadonlySet' * import { eqNumber } from 'fp-ts/lib/Eq' + * import { pipe } from 'fp-ts/lib/function' * - * assert.deepStrictEqual(difference(eqNumber)(new Set([1, 2]), new Set([1, 3])), new Set([2])) + * assert.deepStrictEqual(pipe(new Set([1, 2]), difference(eqNumber)(new Set([1, 3]))), new Set([2])) * * @category combinators * @since 2.5.0 */ -export function difference(E: Eq): (x: ReadonlySet, y: ReadonlySet) => ReadonlySet { +export function difference( + E: Eq +): { + (that: ReadonlySet): (me: ReadonlySet) => ReadonlySet + (me: ReadonlySet, that: ReadonlySet): ReadonlySet +} +export function difference( + E: Eq +): (me: ReadonlySet, that?: ReadonlySet) => ReadonlySet | ((me: ReadonlySet) => ReadonlySet) { const elemE = elem(E) - return (x, y) => filter((a: A) => !elemE(a, y))(x) + return (me, that?) => { + if (that === undefined) { + const differenceE = difference(E) + return (that) => differenceE(that, me) + } + return filter((a: A) => !elemE(a, that))(me) + } } /** diff --git a/src/Set.ts b/src/Set.ts index c8f996d5c..40b0af7f2 100644 --- a/src/Set.ts +++ b/src/Set.ts @@ -142,19 +142,26 @@ export const partitionMap: ( EC: Eq ) => (f: (a: A) => Either) => (set: Set) => Separated, Set> = RS.partitionMap as any +// TODO: remove non-curried overloading in v3 /** * Form the set difference (`x` - `y`) * * @example * import { difference } from 'fp-ts/lib/Set' * import { eqNumber } from 'fp-ts/lib/Eq' + * import { pipe } from 'fp-ts/lib/function' * - * assert.deepStrictEqual(difference(eqNumber)(new Set([1, 2]), new Set([1, 3])), new Set([2])) + * assert.deepStrictEqual(pipe(new Set([1, 2]), difference(eqNumber)(new Set([1, 3]))), new Set([2])) * * @category combinators * @since 2.0.0 */ -export const difference: (E: Eq) => (x: Set, y: Set) => Set = RS.difference as any +export const difference: ( + E: Eq +) => { + (that: Set): (me: Set) => Set + (me: Set, that: Set): Set +} = RS.difference as any /** * @category instances diff --git a/test/ReadonlySet.ts b/test/ReadonlySet.ts index d301c2864..4988bfd4b 100644 --- a/test/ReadonlySet.ts +++ b/test/ReadonlySet.ts @@ -149,6 +149,8 @@ describe('ReadonlySet', () => { it('difference', () => { assert.deepStrictEqual(_.difference(eqNumber)(new Set([1, 2]), new Set([1, 3])), new Set([2])) + + assert.deepStrictEqual(pipe(new Set([1, 2]), _.difference(eqNumber)(new Set([1, 3]))), new Set([2])) }) it('reduce', () => { diff --git a/test/Set.ts b/test/Set.ts index 86f686d8b..4b94fc7ea 100644 --- a/test/Set.ts +++ b/test/Set.ts @@ -177,6 +177,8 @@ describe('Set', () => { it('difference', () => { assert.deepStrictEqual(difference(eqNumber)(new Set([1, 2]), new Set([1, 3])), new Set([2])) + + assert.deepStrictEqual(pipe(new Set([1, 2]), difference(eqNumber)(new Set([1, 3]))), new Set([2])) }) it('reduce', () => { From 65887fe07e21855bf19e5f6039a443c7d241bf4b Mon Sep 17 00:00:00 2001 From: gcanti Date: Tue, 16 Jun 2020 18:03:29 +0200 Subject: [PATCH 032/106] add v3 comments --- src/Ord.ts | 6 ++++++ src/ReadonlyArray.ts | 8 ++++---- src/ReadonlyMap.ts | 6 +++--- src/Semigroup.ts | 2 +- src/Tree.ts | 1 + 5 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/Ord.ts b/src/Ord.ts index 6e7b212f8..2f039ae6d 100644 --- a/src/Ord.ts +++ b/src/Ord.ts @@ -63,6 +63,7 @@ export const ordBoolean: Ord = { compare } +// TODO: curry in v3 /** * Test whether one value is _strictly less than_ another * @@ -72,6 +73,7 @@ export function lt(O: Ord): (x: A, y: A) => boolean { return (x, y) => O.compare(x, y) === -1 } +// TODO: curry in v3 /** * Test whether one value is _strictly greater than_ another * @@ -81,6 +83,7 @@ export function gt(O: Ord): (x: A, y: A) => boolean { return (x, y) => O.compare(x, y) === 1 } +// TODO: curry in v3 /** * Test whether one value is _non-strictly less than_ another * @@ -90,6 +93,7 @@ export function leq(O: Ord): (x: A, y: A) => boolean { return (x, y) => O.compare(x, y) !== 1 } +// TODO: curry in v3 /** * Test whether one value is _non-strictly greater than_ another * @@ -99,6 +103,7 @@ export function geq(O: Ord): (x: A, y: A) => boolean { return (x, y) => O.compare(x, y) !== -1 } +// TODO: curry in v3 /** * Take the minimum of two values. If they are considered equal, the first argument is chosen * @@ -108,6 +113,7 @@ export function min(O: Ord): (x: A, y: A) => A { return (x, y) => (O.compare(x, y) === 1 ? y : x) } +// TODO: curry in v3 /** * Take the maximum of two values. If they are considered equal, the first argument is chosen * diff --git a/src/ReadonlyArray.ts b/src/ReadonlyArray.ts index f369e5f67..803b18676 100644 --- a/src/ReadonlyArray.ts +++ b/src/ReadonlyArray.ts @@ -1094,7 +1094,7 @@ export function elem( (a: A, as: ReadonlyArray): boolean } export function elem(E: Eq): (a: A, as?: ReadonlyArray) => boolean | ((as: ReadonlyArray) => boolean) { - return (a, as) => { + return (a, as?) => { if (as === undefined) { const elemE = elem(E) return (as) => elemE(a, as) @@ -1329,7 +1329,7 @@ export function union( E: Eq ): (xs: ReadonlyArray, ys?: ReadonlyArray) => ReadonlyArray | ((ys: ReadonlyArray) => ReadonlyArray) { const elemE = elem(E) - return (xs, ys) => { + return (xs, ys?) => { if (ys === undefined) { const unionE = union(E) return (ys) => unionE(ys, xs) @@ -1366,7 +1366,7 @@ export function intersection( E: Eq ): (xs: ReadonlyArray, ys?: ReadonlyArray) => ReadonlyArray | ((ys: ReadonlyArray) => ReadonlyArray) { const elemE = elem(E) - return (xs, ys) => { + return (xs, ys?) => { if (ys === undefined) { const intersectionE = intersection(E) return (ys) => intersectionE(ys, xs) @@ -1400,7 +1400,7 @@ export function difference( E: Eq ): (xs: ReadonlyArray, ys?: ReadonlyArray) => ReadonlyArray | ((ys: ReadonlyArray) => ReadonlyArray) { const elemE = elem(E) - return (xs, ys) => { + return (xs, ys?) => { if (ys === undefined) { const differenceE = difference(E) return (ys) => differenceE(ys, xs) diff --git a/src/ReadonlyMap.ts b/src/ReadonlyMap.ts index fc94c5d8b..d54e6432e 100644 --- a/src/ReadonlyMap.ts +++ b/src/ReadonlyMap.ts @@ -93,7 +93,7 @@ export function member( } export function member(E: Eq): (k: K, m?: ReadonlyMap) => boolean | ((m: ReadonlyMap) => boolean) { const lookupE = lookup(E) - return (k, m) => { + return (k, m?) => { if (m === undefined) { const memberE = member(E) return (m) => memberE(k, m) @@ -120,7 +120,7 @@ export function elem( (a: A, m: ReadonlyMap): boolean } export function elem(E: Eq): (a: A, m?: ReadonlyMap) => boolean | ((m: ReadonlyMap) => boolean) { - return (a, m) => { + return (a, m?) => { if (m === undefined) { const elemE = elem(E) return (m) => elemE(a, m) @@ -349,7 +349,7 @@ export function lookup( E: Eq ): (k: K, m?: ReadonlyMap) => Option | ((m: ReadonlyMap) => Option) { const lookupWithKeyE = lookupWithKey(E) - return (k, m) => { + return (k, m?) => { if (m === undefined) { const lookupE = lookup(E) return (m) => lookupE(k, m) diff --git a/src/Semigroup.ts b/src/Semigroup.ts index 93f9e54b2..998db1b7c 100644 --- a/src/Semigroup.ts +++ b/src/Semigroup.ts @@ -34,7 +34,7 @@ export function fold( (a: A, as: ReadonlyArray): A } export function fold(S: Semigroup): (a: A, as?: ReadonlyArray) => A | ((as: ReadonlyArray) => A) { - return (a, as) => { + return (a, as?) => { if (as === undefined) { const foldS = fold(S) return (as) => foldS(a, as) diff --git a/src/Tree.ts b/src/Tree.ts index 109f3c182..3ed361b51 100644 --- a/src/Tree.ts +++ b/src/Tree.ts @@ -208,6 +208,7 @@ export function unfoldForestM( ) } +// TODO: curry in v3 /** * @since 2.0.0 */ From 453feef9829057df8ed9fb28216f8f4a1f0d3fff Mon Sep 17 00:00:00 2001 From: gcanti Date: Tue, 16 Jun 2020 19:02:39 +0200 Subject: [PATCH 033/106] fix changelog --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 805e8e73c..8a948978b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,7 +14,7 @@ **Note**: Gaps between patch versions are faulty/broken releases. **Note**: A feature tagged as Experimental is in a high state of flux, you're at risk of it changing without notice. -# 2.6.5 +# 2.6.6 - **Polish** - `Array` From 798d69546b5d1ab4843daa4763f3e36139a4855d Mon Sep 17 00:00:00 2001 From: gcanti Date: Wed, 17 Jun 2020 06:06:27 +0200 Subject: [PATCH 034/106] prefer Lazy in signatures --- docs/modules/Alt.ts.md | 14 ++--- docs/modules/Array.ts.md | 6 +- docs/modules/Either.ts.md | 4 +- docs/modules/EitherT.ts.md | 6 +- docs/modules/IOEither.ts.md | 4 +- docs/modules/NonEmptyArray.ts.md | 2 +- docs/modules/Option.ts.md | 8 +-- docs/modules/OptionT.ts.md | 24 ++++---- docs/modules/ReaderTaskEither.ts.md | 2 +- docs/modules/ReadonlyArray.ts.md | 6 +- docs/modules/ReadonlyNonEmptyArray.ts.md | 2 +- docs/modules/StateReaderTaskEither.ts.md | 4 +- docs/modules/TaskEither.ts.md | 4 +- docs/modules/ValidationT.ts.md | 6 +- docs/modules/boolean.ts.md | 2 +- docs/modules/pipeable.ts.md | 28 ++++----- src/Alt.ts | 19 +++--- src/Array.ts | 8 +-- src/Either.ts | 7 ++- src/EitherT.ts | 10 +-- src/IOEither.ts | 4 +- src/Identity.ts | 6 +- src/NonEmptyArray.ts | 8 +-- src/Option.ts | 10 +-- src/OptionT.ts | 31 +++++----- src/ReaderTaskEither.ts | 14 ++--- src/ReadonlyArray.ts | 17 +++--- src/ReadonlyNonEmptyArray.ts | 8 +-- src/StateReaderTaskEither.ts | 16 ++--- src/TaskEither.ts | 4 +- src/ValidationT.ts | 13 ++-- src/boolean.ts | 4 +- src/pipeable.ts | 78 ++++++++++++------------ 33 files changed, 193 insertions(+), 186 deletions(-) diff --git a/docs/modules/Alt.ts.md b/docs/modules/Alt.ts.md index 4f972b381..4a5fcc4bb 100644 --- a/docs/modules/Alt.ts.md +++ b/docs/modules/Alt.ts.md @@ -40,7 +40,7 @@ Added in v2.0.0 ```ts export interface Alt extends Functor { - readonly alt: (fx: HKT, fy: () => HKT) => HKT + readonly alt: (fa: HKT, that: Lazy>) => HKT } ``` @@ -52,7 +52,7 @@ Added in v2.0.0 ```ts export interface Alt1 extends Functor1 { - readonly alt: (fx: Kind, fy: () => Kind) => Kind + readonly alt: (fa: Kind, that: Lazy>) => Kind } ``` @@ -64,7 +64,7 @@ Added in v2.0.0 ```ts export interface Alt2 extends Functor2 { - readonly alt: (fx: Kind2, fy: () => Kind2) => Kind2 + readonly alt: (fa: Kind2, that: Lazy>) => Kind2 } ``` @@ -76,7 +76,7 @@ Added in v2.0.0 ```ts export interface Alt2C extends Functor2C { - readonly alt: (fx: Kind2, fy: () => Kind2) => Kind2 + readonly alt: (fa: Kind2, that: Lazy>) => Kind2 } ``` @@ -88,7 +88,7 @@ Added in v2.0.0 ```ts export interface Alt3 extends Functor3 { - readonly alt: (fx: Kind3, fy: () => Kind3) => Kind3 + readonly alt: (fa: Kind3, that: Lazy>) => Kind3 } ``` @@ -100,7 +100,7 @@ Added in v2.0.0 ```ts export interface Alt3C extends Functor3C { - readonly alt: (fx: Kind3, fy: () => Kind3) => Kind3 + readonly alt: (fa: Kind3, that: Lazy>) => Kind3 } ``` @@ -112,7 +112,7 @@ Added in v2.2.0 ```ts export interface Alt4 extends Functor4 { - readonly alt: (fx: Kind4, fy: () => Kind4) => Kind4 + readonly alt: (fa: Kind4, that: Lazy>) => Kind4 } ``` diff --git a/docs/modules/Array.ts.md b/docs/modules/Array.ts.md index 67f72b7db..7c6b8b744 100644 --- a/docs/modules/Array.ts.md +++ b/docs/modules/Array.ts.md @@ -144,7 +144,7 @@ types of kind `* -> *`. **Signature** ```ts -export declare const alt: (that: () => A[]) => (fa: A[]) => A[] +export declare const alt: (that: Lazy) => (fa: A[]) => A[] ``` Added in v2.0.0 @@ -1246,7 +1246,7 @@ Break an array into its first element and remaining elements **Signature** ```ts -export declare const foldLeft: (onNil: () => B, onCons: (head: A, tail: A[]) => B) => (as: A[]) => B +export declare const foldLeft: (onNil: Lazy, onCons: (head: A, tail: A[]) => B) => (as: A[]) => B ``` **Example** @@ -1270,7 +1270,7 @@ Break an array into its initial elements and the last element **Signature** ```ts -export declare const foldRight: (onNil: () => B, onCons: (init: A[], last: A) => B) => (as: A[]) => B +export declare const foldRight: (onNil: Lazy, onCons: (init: A[], last: A) => B) => (as: A[]) => B ``` Added in v2.0.0 diff --git a/docs/modules/Either.ts.md b/docs/modules/Either.ts.md index d26a9dd8e..e4ae40791 100644 --- a/docs/modules/Either.ts.md +++ b/docs/modules/Either.ts.md @@ -104,7 +104,7 @@ types of kind `* -> *`. **Signature** ```ts -export declare const alt: (that: () => Either) => (fa: Either) => Either +export declare const alt: (that: Lazy>) => (fa: Either) => Either ``` Added in v2.0.0 @@ -379,7 +379,7 @@ Added in v2.0.0 **Signature** ```ts -export declare const fromOption: (onNone: () => E) => (ma: Option) => Either +export declare const fromOption: (onNone: Lazy) => (ma: Option) => Either ``` Added in v2.0.0 diff --git a/docs/modules/EitherT.ts.md b/docs/modules/EitherT.ts.md index 3eee71889..49a09bcf1 100644 --- a/docs/modules/EitherT.ts.md +++ b/docs/modules/EitherT.ts.md @@ -65,7 +65,7 @@ Added in v2.0.0 ```ts export interface EitherM extends ApplicativeCompositionHKT2 { readonly chain: (ma: EitherT, f: (a: A) => EitherT) => EitherT - readonly alt: (fx: EitherT, f: () => EitherT) => EitherT + readonly alt: (fa: EitherT, that: Lazy>) => EitherT readonly bimap: (ma: EitherT, f: (e: E) => N, g: (a: A) => B) => EitherT readonly mapLeft: (ma: EitherT, f: (e: E) => N) => EitherT readonly fold: (ma: EitherT, onLeft: (e: E) => HKT, onRight: (a: A) => HKT) => HKT @@ -87,7 +87,7 @@ Added in v2.0.0 ```ts export interface EitherM1 extends ApplicativeComposition12 { readonly chain: (ma: EitherT1, f: (a: A) => EitherT1) => EitherT1 - readonly alt: (fx: EitherT1, f: () => EitherT1) => EitherT1 + readonly alt: (fa: EitherT1, that: Lazy>) => EitherT1 readonly bimap: (ma: EitherT1, f: (e: E) => N, g: (a: A) => B) => EitherT1 readonly mapLeft: (ma: EitherT1, f: (e: E) => N) => EitherT1 readonly fold: ( @@ -113,7 +113,7 @@ Added in v2.0.0 ```ts export interface EitherM2 extends ApplicativeComposition22 { readonly chain: (ma: EitherT2, f: (a: A) => EitherT2) => EitherT2 - readonly alt: (fx: EitherT2, f: () => EitherT2) => EitherT2 + readonly alt: (fa: EitherT2, that: Lazy>) => EitherT2 readonly bimap: (ma: EitherT2, f: (e: E) => N, g: (a: A) => B) => EitherT2 readonly mapLeft: (ma: EitherT2, f: (e: E) => N) => EitherT2 readonly fold: ( diff --git a/docs/modules/IOEither.ts.md b/docs/modules/IOEither.ts.md index f6a068413..9ce6ec406 100644 --- a/docs/modules/IOEither.ts.md +++ b/docs/modules/IOEither.ts.md @@ -77,7 +77,7 @@ types of kind `* -> *`. **Signature** ```ts -export declare const alt: (that: () => IOEither) => (fa: IOEither) => IOEither +export declare const alt: (that: Lazy>) => (fa: IOEither) => IOEither ``` Added in v2.0.0 @@ -319,7 +319,7 @@ Added in v2.0.0 **Signature** ```ts -export declare const fromOption: (onNone: () => E) => (ma: Option) => IOEither +export declare const fromOption: (onNone: Lazy) => (ma: Option) => IOEither ``` Added in v2.0.0 diff --git a/docs/modules/NonEmptyArray.ts.md b/docs/modules/NonEmptyArray.ts.md index 5fe96edde..3c5c3ba1d 100644 --- a/docs/modules/NonEmptyArray.ts.md +++ b/docs/modules/NonEmptyArray.ts.md @@ -94,7 +94,7 @@ types of kind `* -> *`. **Signature** ```ts -export declare const alt: (that: () => NonEmptyArray) => (fa: NonEmptyArray) => NonEmptyArray +export declare const alt: (that: Lazy>) => (fa: NonEmptyArray) => NonEmptyArray ``` Added in v2.6.2 diff --git a/docs/modules/Option.ts.md b/docs/modules/Option.ts.md index a02c58600..429c9023e 100644 --- a/docs/modules/Option.ts.md +++ b/docs/modules/Option.ts.md @@ -111,7 +111,7 @@ In case of `Option` returns the left-most non-`None` value. **Signature** ```ts -export declare const alt: (that: () => Option) => (fa: Option) => Option +export declare const alt: (that: Lazy>) => (fa: Option) => Option ``` **Example** @@ -593,7 +593,7 @@ returned, otherwise the function is applied to the value inside the `Some` and t **Signature** ```ts -export declare function fold(onNone: () => B, onSome: (a: A) => B): (ma: Option) => B +export declare function fold(onNone: Lazy, onSome: (a: A) => B): (ma: Option) => B ``` **Example** @@ -634,7 +634,7 @@ Extracts the value out of the structure, if it exists. Otherwise returns the giv **Signature** ```ts -export declare const getOrElse: (onNone: () => A) => (ma: Option) => A +export declare const getOrElse: (onNone: Lazy) => (ma: Option) => A ``` **Example** @@ -668,7 +668,7 @@ Less strict version of [`getOrElse`](#getOrElse). **Signature** ```ts -export declare const getOrElseW: (onNone: () => B) => (ma: Option) => B | A +export declare const getOrElseW: (onNone: Lazy) => (ma: Option) => B | A ``` Added in v2.6.0 diff --git a/docs/modules/OptionT.ts.md b/docs/modules/OptionT.ts.md index e2ea6fb02..4a3777745 100644 --- a/docs/modules/OptionT.ts.md +++ b/docs/modules/OptionT.ts.md @@ -66,9 +66,9 @@ Added in v2.0.0 ```ts export interface OptionM extends ApplicativeCompositionHKT1 { readonly chain: (ma: OptionT, f: (a: A) => OptionT) => OptionT - readonly alt: (fx: OptionT, fy: () => OptionT) => OptionT - readonly fold: (ma: OptionT, onNone: () => HKT, onSome: (a: A) => HKT) => HKT - readonly getOrElse: (ma: OptionT, onNone: () => HKT) => HKT + readonly alt: (fa: OptionT, that: Lazy>) => OptionT + readonly fold: (ma: OptionT, onNone: Lazy>, onSome: (a: A) => HKT) => HKT + readonly getOrElse: (ma: OptionT, onNone: Lazy>) => HKT readonly fromM: (ma: HKT) => OptionT readonly none: () => OptionT } @@ -83,9 +83,9 @@ Added in v2.0.0 ```ts export interface OptionM1 extends ApplicativeComposition11 { readonly chain: (ma: OptionT1, f: (a: A) => OptionT1) => OptionT1 - readonly alt: (fx: OptionT1, fy: () => OptionT1) => OptionT1 - readonly fold: (ma: OptionT1, onNone: () => Kind, onSome: (a: A) => Kind) => Kind - readonly getOrElse: (ma: OptionT1, onNone: () => Kind) => Kind + readonly alt: (fa: OptionT1, that: Lazy>) => OptionT1 + readonly fold: (ma: OptionT1, onNone: Lazy>, onSome: (a: A) => Kind) => Kind + readonly getOrElse: (ma: OptionT1, onNone: Lazy>) => Kind readonly fromM: (ma: Kind) => OptionT1 readonly none: () => OptionT1 } @@ -100,13 +100,13 @@ Added in v2.0.0 ```ts export interface OptionM2 extends ApplicativeComposition21 { readonly chain: (ma: OptionT2, f: (a: A) => OptionT2) => OptionT2 - readonly alt: (fx: OptionT2, fy: () => OptionT2) => OptionT2 + readonly alt: (fa: OptionT2, that: Lazy>) => OptionT2 readonly fold: ( ma: OptionT2, - onNone: () => Kind2, + onNone: Lazy>, onSome: (a: A) => Kind2 ) => Kind2 - readonly getOrElse: (ma: OptionT2, onNone: () => Kind2) => Kind2 + readonly getOrElse: (ma: OptionT2, onNone: Lazy>) => Kind2 readonly fromM: (ma: Kind2) => OptionT2 readonly none: () => OptionT2 } @@ -121,13 +121,13 @@ Added in v2.0.0 ```ts export interface OptionM2C extends ApplicativeComposition2C1 { readonly chain: (ma: OptionT2, f: (a: A) => OptionT2) => OptionT2 - readonly alt: (fx: OptionT2, fy: () => OptionT2) => OptionT2 + readonly alt: (fa: OptionT2, that: Lazy>) => OptionT2 readonly fold: ( ma: OptionT2, - onNone: () => Kind2, + onNone: Lazy>, onSome: (a: A) => Kind2 ) => Kind2 - readonly getOrElse: (ma: OptionT2, onNone: () => Kind2) => Kind2 + readonly getOrElse: (ma: OptionT2, onNone: Lazy>) => Kind2 readonly fromM: (ma: Kind2) => OptionT2 readonly none: () => OptionT2 } diff --git a/docs/modules/ReaderTaskEither.ts.md b/docs/modules/ReaderTaskEither.ts.md index 1d479fa12..42e98995a 100644 --- a/docs/modules/ReaderTaskEither.ts.md +++ b/docs/modules/ReaderTaskEither.ts.md @@ -456,7 +456,7 @@ Added in v2.0.0 **Signature** ```ts -export declare const fromOption: (onNone: () => E) => (ma: Option) => ReaderTaskEither +export declare const fromOption: (onNone: Lazy) => (ma: Option) => ReaderTaskEither ``` Added in v2.0.0 diff --git a/docs/modules/ReadonlyArray.ts.md b/docs/modules/ReadonlyArray.ts.md index db6f7aed8..82f1710b5 100644 --- a/docs/modules/ReadonlyArray.ts.md +++ b/docs/modules/ReadonlyArray.ts.md @@ -146,7 +146,7 @@ types of kind `* -> *`. **Signature** ```ts -export declare const alt: (that: () => readonly A[]) => (fa: readonly A[]) => readonly A[] +export declare const alt: (that: Lazy) => (fa: readonly A[]) => readonly A[] ``` Added in v2.5.0 @@ -1112,7 +1112,7 @@ Break an array into its first element and remaining elements ```ts export declare function foldLeft( - onNil: () => B, + onNil: Lazy, onCons: (head: A, tail: ReadonlyArray) => B ): (as: ReadonlyArray) => B ``` @@ -1139,7 +1139,7 @@ Break an array into its initial elements and the last element ```ts export declare function foldRight( - onNil: () => B, + onNil: Lazy, onCons: (init: ReadonlyArray, last: A) => B ): (as: ReadonlyArray) => B ``` diff --git a/docs/modules/ReadonlyNonEmptyArray.ts.md b/docs/modules/ReadonlyNonEmptyArray.ts.md index 07a70a781..9dacf2cf3 100644 --- a/docs/modules/ReadonlyNonEmptyArray.ts.md +++ b/docs/modules/ReadonlyNonEmptyArray.ts.md @@ -95,7 +95,7 @@ types of kind `* -> *`. ```ts export declare const alt: ( - that: () => ReadonlyNonEmptyArray + that: Lazy> ) => (fa: ReadonlyNonEmptyArray) => ReadonlyNonEmptyArray ``` diff --git a/docs/modules/StateReaderTaskEither.ts.md b/docs/modules/StateReaderTaskEither.ts.md index 1b86c0a7a..67b9dd9ed 100644 --- a/docs/modules/StateReaderTaskEither.ts.md +++ b/docs/modules/StateReaderTaskEither.ts.md @@ -89,7 +89,7 @@ types of kind `* -> *`. ```ts export declare const alt: ( - that: () => StateReaderTaskEither + that: Lazy> ) => (fa: StateReaderTaskEither) => StateReaderTaskEither ``` @@ -439,7 +439,7 @@ Added in v2.0.0 **Signature** ```ts -export declare const fromOption: (onNone: () => E) => (ma: Option) => StateReaderTaskEither +export declare const fromOption: (onNone: Lazy) => (ma: Option) => StateReaderTaskEither ``` Added in v2.0.0 diff --git a/docs/modules/TaskEither.ts.md b/docs/modules/TaskEither.ts.md index e30bc7dfb..130ae4db4 100644 --- a/docs/modules/TaskEither.ts.md +++ b/docs/modules/TaskEither.ts.md @@ -91,7 +91,7 @@ See also [orElse](#orElse). **Signature** ```ts -export declare const alt: (that: () => TaskEither) => (fa: TaskEither) => TaskEither +export declare const alt: (that: Lazy>) => (fa: TaskEither) => TaskEither ``` **Example** @@ -452,7 +452,7 @@ Added in v2.0.0 **Signature** ```ts -export declare const fromOption: (onNone: () => E) => (ma: Option) => TaskEither +export declare const fromOption: (onNone: Lazy) => (ma: Option) => TaskEither ``` Added in v2.0.0 diff --git a/docs/modules/ValidationT.ts.md b/docs/modules/ValidationT.ts.md index 760a0159c..7ac5c9595 100644 --- a/docs/modules/ValidationT.ts.md +++ b/docs/modules/ValidationT.ts.md @@ -32,7 +32,7 @@ Added in v2.0.0 ```ts export interface ValidationM extends ApplicativeCompositionHKT2C { readonly chain: (ma: ValidationT, f: (a: A) => ValidationT) => ValidationT - readonly alt: (fx: ValidationT, f: () => ValidationT) => ValidationT + readonly alt: (fa: ValidationT, that: Lazy>) => ValidationT } ``` @@ -45,7 +45,7 @@ Added in v2.0.0 ```ts export interface ValidationM1 extends ApplicativeComposition12C { readonly chain: (ma: ValidationT1, f: (a: A) => ValidationT1) => ValidationT1 - readonly alt: (fx: ValidationT1, f: () => ValidationT1) => ValidationT1 + readonly alt: (fa: ValidationT1, that: Lazy>) => ValidationT1 } ``` @@ -61,7 +61,7 @@ export interface ValidationM2 extends ApplicativeComposition ma: ValidationT2, f: (a: A) => ValidationT2 ) => ValidationT2 - readonly alt: (fx: ValidationT2, f: () => ValidationT2) => ValidationT2 + readonly alt: (fa: ValidationT2, that: Lazy>) => ValidationT2 } ``` diff --git a/docs/modules/boolean.ts.md b/docs/modules/boolean.ts.md index f8df00b4f..87e9c3e5d 100644 --- a/docs/modules/boolean.ts.md +++ b/docs/modules/boolean.ts.md @@ -28,7 +28,7 @@ If `value` is false, `onFalse()` is returned, otherwise `onTrue()`. **Signature** ```ts -export declare function fold(onFalse: () => A, onTrue: () => A): (value: boolean) => A +export declare function fold(onFalse: Lazy, onTrue: Lazy): (value: boolean) => A ``` **Example** diff --git a/docs/modules/pipeable.ts.md b/docs/modules/pipeable.ts.md index 056730ed5..1a90c540b 100644 --- a/docs/modules/pipeable.ts.md +++ b/docs/modules/pipeable.ts.md @@ -134,7 +134,7 @@ Added in v2.0.0 ```ts export interface PipeableAlt { - readonly alt: (that: () => HKT) => (fa: HKT) => HKT + readonly alt: (that: Lazy>) => (fa: HKT) => HKT } ``` @@ -146,7 +146,7 @@ Added in v2.0.0 ```ts export interface PipeableAlt1 { - readonly alt: (that: () => Kind) => (fa: Kind) => Kind + readonly alt: (that: Lazy>) => (fa: Kind) => Kind } ``` @@ -158,7 +158,7 @@ Added in v2.0.0 ```ts export interface PipeableAlt2 { - readonly alt: (that: () => Kind2) => (fa: Kind2) => Kind2 + readonly alt: (that: Lazy>) => (fa: Kind2) => Kind2 } ``` @@ -170,7 +170,7 @@ Added in v2.0.0 ```ts export interface PipeableAlt2C { - readonly alt: (that: () => Kind2) => (fa: Kind2) => Kind2 + readonly alt: (that: Lazy>) => (fa: Kind2) => Kind2 } ``` @@ -182,7 +182,7 @@ Added in v2.0.0 ```ts export interface PipeableAlt3 { - readonly alt: (that: () => Kind3) => (fa: Kind3) => Kind3 + readonly alt: (that: Lazy>) => (fa: Kind3) => Kind3 } ``` @@ -194,7 +194,7 @@ Added in v2.0.0 ```ts export interface PipeableAlt3C { - readonly alt: (that: () => Kind3) => (fa: Kind3) => Kind3 + readonly alt: (that: Lazy>) => (fa: Kind3) => Kind3 } ``` @@ -206,7 +206,7 @@ Added in v2.2.0 ```ts export interface PipeableAlt4 { - readonly alt: (that: () => Kind4) => (fa: Kind4) => Kind4 + readonly alt: (that: Lazy>) => (fa: Kind4) => Kind4 } ``` @@ -1478,7 +1478,7 @@ Added in v2.0.0 ```ts export interface PipeableMonadThrow { - readonly fromOption: (onNone: () => E) => (ma: Option) => HKT + readonly fromOption: (onNone: Lazy) => (ma: Option) => HKT readonly fromEither: (ma: Either) => HKT readonly fromPredicate: { (refinement: Refinement, onFalse: (a: A) => E): (a: A) => HKT @@ -1499,7 +1499,7 @@ Added in v2.0.0 ```ts export interface PipeableMonadThrow1 { - readonly fromOption: (onNone: () => E) => (ma: Option) => Kind + readonly fromOption: (onNone: Lazy) => (ma: Option) => Kind readonly fromEither: (ma: Either) => Kind readonly fromPredicate: { (refinement: Refinement, onFalse: (a: A) => E): (a: A) => Kind @@ -1520,7 +1520,7 @@ Added in v2.0.0 ```ts export interface PipeableMonadThrow2 { - readonly fromOption: (onNone: () => E) => (ma: Option) => Kind2 + readonly fromOption: (onNone: Lazy) => (ma: Option) => Kind2 readonly fromEither: (ma: Either) => Kind2 readonly fromPredicate: { (refinement: Refinement, onFalse: (a: A) => E): (a: A) => Kind2 @@ -1541,7 +1541,7 @@ Added in v2.0.0 ```ts export interface PipeableMonadThrow2C { - readonly fromOption: (onNone: () => E) => (ma: Option) => Kind2 + readonly fromOption: (onNone: Lazy) => (ma: Option) => Kind2 readonly fromEither: (ma: Either) => Kind2 readonly fromPredicate: { (refinement: Refinement, onFalse: (a: A) => E): (a: A) => Kind2 @@ -1562,7 +1562,7 @@ Added in v2.0.0 ```ts export interface PipeableMonadThrow3 { - readonly fromOption: (onNone: () => E) => (ma: Option) => Kind3 + readonly fromOption: (onNone: Lazy) => (ma: Option) => Kind3 readonly fromEither: (ma: Either) => Kind3 readonly fromPredicate: { (refinement: Refinement, onFalse: (a: A) => E): (a: A) => Kind3 @@ -1585,7 +1585,7 @@ Added in v2.0.0 ```ts export interface PipeableMonadThrow3C { - readonly fromOption: (onNone: () => E) => (ma: Option) => Kind3 + readonly fromOption: (onNone: Lazy) => (ma: Option) => Kind3 readonly fromEither: (ma: Either) => Kind3 readonly fromPredicate: { (refinement: Refinement, onFalse: (a: A) => E): (a: A) => Kind3 @@ -1608,7 +1608,7 @@ Added in v2.2.0 ```ts export interface PipeableMonadThrow4 { - readonly fromOption: (onNone: () => E) => (ma: Option) => Kind4 + readonly fromOption: (onNone: Lazy) => (ma: Option) => Kind4 readonly fromEither: (ma: Either) => Kind4 readonly fromPredicate: { (refinement: Refinement, onFalse: (a: A) => E): (a: A) => Kind4 diff --git a/src/Alt.ts b/src/Alt.ts index 5804d8da3..74ae8c40b 100644 --- a/src/Alt.ts +++ b/src/Alt.ts @@ -10,15 +10,16 @@ * * @since 2.0.0 */ -import { Functor, Functor1, Functor2, Functor2C, Functor3, Functor4, Functor3C } from './Functor' -import { HKT, Kind, Kind2, Kind3, URIS, URIS2, URIS3, URIS4, Kind4 } from './HKT' +import { Lazy } from './function' +import { Functor, Functor1, Functor2, Functor2C, Functor3, Functor3C, Functor4 } from './Functor' +import { HKT, Kind, Kind2, Kind3, Kind4, URIS, URIS2, URIS3, URIS4 } from './HKT' /** * @category type classes * @since 2.0.0 */ export interface Alt extends Functor { - readonly alt: (fx: HKT, fy: () => HKT) => HKT + readonly alt: (fa: HKT, that: Lazy>) => HKT } /** @@ -26,7 +27,7 @@ export interface Alt extends Functor { * @since 2.0.0 */ export interface Alt1 extends Functor1 { - readonly alt: (fx: Kind, fy: () => Kind) => Kind + readonly alt: (fa: Kind, that: Lazy>) => Kind } /** @@ -34,7 +35,7 @@ export interface Alt1 extends Functor1 { * @since 2.0.0 */ export interface Alt2 extends Functor2 { - readonly alt: (fx: Kind2, fy: () => Kind2) => Kind2 + readonly alt: (fa: Kind2, that: Lazy>) => Kind2 } /** @@ -42,7 +43,7 @@ export interface Alt2 extends Functor2 { * @since 2.0.0 */ export interface Alt2C extends Functor2C { - readonly alt: (fx: Kind2, fy: () => Kind2) => Kind2 + readonly alt: (fa: Kind2, that: Lazy>) => Kind2 } /** @@ -50,7 +51,7 @@ export interface Alt2C extends Functor2C { * @since 2.0.0 */ export interface Alt3 extends Functor3 { - readonly alt: (fx: Kind3, fy: () => Kind3) => Kind3 + readonly alt: (fa: Kind3, that: Lazy>) => Kind3 } /** @@ -58,7 +59,7 @@ export interface Alt3 extends Functor3 { * @since 2.2.0 */ export interface Alt3C extends Functor3C { - readonly alt: (fx: Kind3, fy: () => Kind3) => Kind3 + readonly alt: (fa: Kind3, that: Lazy>) => Kind3 } /** @@ -66,5 +67,5 @@ export interface Alt3C extends Functor3C { * @since 2.0.0 */ export interface Alt4 extends Functor4 { - readonly alt: (fx: Kind4, fy: () => Kind4) => Kind4 + readonly alt: (fa: Kind4, that: Lazy>) => Kind4 } diff --git a/src/Array.ts b/src/Array.ts index c585ea328..fb3b4c6cd 100644 --- a/src/Array.ts +++ b/src/Array.ts @@ -9,7 +9,7 @@ import { Extend1 } from './Extend' import { FilterableWithIndex1, PredicateWithIndex, RefinementWithIndex } from './FilterableWithIndex' import { Foldable1 } from './Foldable' import { FoldableWithIndex1 } from './FoldableWithIndex' -import { Predicate, Refinement } from './function' +import { Lazy, Predicate, Refinement } from './function' import { FunctorWithIndex1 } from './FunctorWithIndex' import { Monad1 } from './Monad' import { Monoid } from './Monoid' @@ -157,7 +157,7 @@ export const flatten: (mma: Array>) => Array = RA.flatten as any * @since 2.0.0 */ export const foldLeft: ( - onNil: () => B, + onNil: Lazy, onCons: (head: A, tail: Array) => B ) => (as: Array) => B = RA.foldLeft as any @@ -168,7 +168,7 @@ export const foldLeft: ( * @since 2.0.0 */ export const foldRight: ( - onNil: () => B, + onNil: Lazy, onCons: (init: Array, last: A) => B ) => (as: Array) => B = RA.foldRight as any @@ -1099,7 +1099,7 @@ export const partitionMapWithIndex: ( * @category Alt * @since 2.0.0 */ -export const alt: (that: () => Array) => (fa: Array) => Array = RA.alt as any +export const alt: (that: Lazy>) => (fa: Array) => Array = RA.alt as any /** * @category FilterableWithIndex diff --git a/src/Either.ts b/src/Either.ts index ef9ebe9e7..d8d0adbf2 100644 --- a/src/Either.ts +++ b/src/Either.ts @@ -214,7 +214,7 @@ export function stringifyJSON(u: unknown, onError: (reason: unknown) => E): E * @category constructors * @since 2.0.0 */ -export const fromOption: (onNone: () => E) => (ma: Option) => Either = (onNone) => (ma) => +export const fromOption: (onNone: Lazy) => (ma: Option) => Either = (onNone) => (ma) => ma._tag === 'None' ? left(onNone()) : right(ma.value) /** @@ -416,7 +416,7 @@ export const flatten: (mma: Either>) => Either = (mm * @category Alt * @since 2.0.0 */ -export const alt: (that: () => Either) => (fa: Either) => Either = (that) => (fa) => +export const alt: (that: Lazy>) => (fa: Either) => Either = (that) => (fa) => alt_(fa, that) /** @@ -521,7 +521,8 @@ const bimap_: (fea: Either, f: (e: E) => G, g: (a: A) => B) => isLeft(fea) ? left(f(fea.left)) : right(g(fea.right)) const mapLeft_: (fea: Either, f: (e: E) => G) => Either = (fea, f) => isLeft(fea) ? left(f(fea.left)) : fea -const alt_: (fx: Either, fy: () => Either) => Either = (fx, fy) => (isLeft(fx) ? fy() : fx) +const alt_: (fa: Either, that: Lazy>) => Either = (fa, that) => + isLeft(fa) ? that() : fa const extend_: (wa: Either, f: (wa: Either) => B) => Either = (wa, f) => isLeft(wa) ? wa : right(f(wa)) const chainRec_: (a: A, f: (a: A) => Either>) => Either = (a, f) => diff --git a/src/EitherT.ts b/src/EitherT.ts index 0f6f97ca0..769479e06 100644 --- a/src/EitherT.ts +++ b/src/EitherT.ts @@ -4,7 +4,7 @@ import { ApplicativeComposition12, ApplicativeComposition22, ApplicativeCompositionHKT2 } from './Applicative' import { apComposition } from './Apply' import * as E from './Either' -import { flow, pipe } from './function' +import { flow, Lazy, pipe } from './function' import { HKT, Kind, Kind2, URIS, URIS2 } from './HKT' import { Monad, Monad1, Monad2 } from './Monad' @@ -24,7 +24,7 @@ export interface EitherT extends HKT> {} */ export interface EitherM extends ApplicativeCompositionHKT2 { readonly chain: (ma: EitherT, f: (a: A) => EitherT) => EitherT - readonly alt: (fx: EitherT, f: () => EitherT) => EitherT + readonly alt: (fa: EitherT, that: Lazy>) => EitherT readonly bimap: (ma: EitherT, f: (e: E) => N, g: (a: A) => B) => EitherT readonly mapLeft: (ma: EitherT, f: (e: E) => N) => EitherT readonly fold: (ma: EitherT, onLeft: (e: E) => HKT, onRight: (a: A) => HKT) => HKT @@ -47,7 +47,7 @@ export type EitherT1 = Kind> */ export interface EitherM1 extends ApplicativeComposition12 { readonly chain: (ma: EitherT1, f: (a: A) => EitherT1) => EitherT1 - readonly alt: (fx: EitherT1, f: () => EitherT1) => EitherT1 + readonly alt: (fa: EitherT1, that: Lazy>) => EitherT1 readonly bimap: (ma: EitherT1, f: (e: E) => N, g: (a: A) => B) => EitherT1 readonly mapLeft: (ma: EitherT1, f: (e: E) => N) => EitherT1 readonly fold: ( @@ -74,7 +74,7 @@ export type EitherT2 = Kind2> */ export interface EitherM2 extends ApplicativeComposition22 { readonly chain: (ma: EitherT2, f: (a: A) => EitherT2) => EitherT2 - readonly alt: (fx: EitherT2, f: () => EitherT2) => EitherT2 + readonly alt: (fa: EitherT2, that: Lazy>) => EitherT2 readonly bimap: (ma: EitherT2, f: (e: E) => N, g: (a: A) => B) => EitherT2 readonly mapLeft: (ma: EitherT2, f: (e: E) => N) => EitherT2 readonly fold: ( @@ -108,7 +108,7 @@ export function getEitherM(M: Monad): EitherM { ap: (fab, fa) => pipe(fab, ap(fa)), of, chain: (ma, f) => M.chain(ma, (e) => (E.isLeft(e) ? M.of(E.left(e.left)) : f(e.right))), - alt: (fx, f) => M.chain(fx, (e) => (E.isLeft(e) ? f() : of(e.right))), + alt: (fa, that) => M.chain(fa, (e) => (E.isLeft(e) ? that() : of(e.right))), bimap: (ma, f, g) => M.map(ma, (e) => pipe(e, E.bimap(f, g))), mapLeft: (ma, f) => M.map(ma, (e) => pipe(e, E.mapLeft(f))), fold: (ma, onLeft, onRight) => M.chain(ma, E.fold(onLeft, onRight)), diff --git a/src/IOEither.ts b/src/IOEither.ts index 2c8692143..6c4b8c7c5 100644 --- a/src/IOEither.ts +++ b/src/IOEither.ts @@ -278,7 +278,7 @@ export const flatten: (mma: IOEither>) => IOEither * @category Alt * @since 2.0.0 */ -export const alt: (that: () => IOEither) => (fa: IOEither) => IOEither = (that) => +export const alt: (that: Lazy>) => (fa: IOEither) => IOEither = (that) => I.chain(E.fold(that, right)) /** @@ -314,7 +314,7 @@ export const bracket = ( * @category constructors * @since 2.0.0 */ -export const fromOption: (onNone: () => E) => (ma: Option) => IOEither = (onNone) => (ma) => +export const fromOption: (onNone: Lazy) => (ma: Option) => IOEither = (onNone) => (ma) => ma._tag === 'None' ? left(onNone()) : right(ma.value) /** diff --git a/src/Identity.ts b/src/Identity.ts index 6ae6d5aab..370a10308 100644 --- a/src/Identity.ts +++ b/src/Identity.ts @@ -7,12 +7,12 @@ import { ChainRec1, tailRec } from './ChainRec' import { Comonad1 } from './Comonad' import { Eq } from './Eq' import { Foldable1 } from './Foldable' -import { identity as id } from './function' +import { identity as id, Lazy } from './function' import { HKT } from './HKT' import { Monad1 } from './Monad' import { Monoid } from './Monoid' import { Show } from './Show' -import { Traversable1, PipeableTraverse1 } from './Traversable' +import { PipeableTraverse1, Traversable1 } from './Traversable' // ------------------------------------------------------------------------------------- // model @@ -40,7 +40,7 @@ export const getEq: (E: Eq) => Eq> = id // pipeables // ------------------------------------------------------------------------------------- -const alt_: (fx: A, fy: () => A) => A = id +const alt_: (fa: A, that: Lazy) => A = id const extend_: (wa: A, f: (wa: A) => B) => B = (wa, f) => f(wa) diff --git a/src/NonEmptyArray.ts b/src/NonEmptyArray.ts index 1dc279b92..f6134f5be 100644 --- a/src/NonEmptyArray.ts +++ b/src/NonEmptyArray.ts @@ -7,7 +7,7 @@ import { Alt1 } from './Alt' import { Comonad1 } from './Comonad' import { Eq } from './Eq' import { FoldableWithIndex1 } from './FoldableWithIndex' -import { Predicate, Refinement } from './function' +import { Lazy, Predicate, Refinement } from './function' import { FunctorWithIndex1 } from './FunctorWithIndex' import { Monad1 } from './Monad' import { Option } from './Option' @@ -15,8 +15,8 @@ import { Ord } from './Ord' import * as RNEA from './ReadonlyNonEmptyArray' import { Semigroup } from './Semigroup' import { Show } from './Show' -import { TraversableWithIndex1, PipeableTraverseWithIndex1 } from './TraversableWithIndex' -import { Traversable1, PipeableTraverse1 } from './Traversable' +import { PipeableTraverse1, Traversable1 } from './Traversable' +import { PipeableTraverseWithIndex1, TraversableWithIndex1 } from './TraversableWithIndex' /* tslint:disable:readonly-array */ @@ -334,7 +334,7 @@ export const foldMap: (S: Semigroup) => (f: (a: A) => S) => (fa: NonEmp * @category Alt * @since 2.6.2 */ -export const alt: (that: () => NonEmptyArray) => (fa: NonEmptyArray) => NonEmptyArray = RNEA.alt as any +export const alt: (that: Lazy>) => (fa: NonEmptyArray) => NonEmptyArray = RNEA.alt as any /** * Apply a function to an argument under a type constructor. diff --git a/src/Option.ts b/src/Option.ts index fa9e9b0de..0622857fc 100644 --- a/src/Option.ts +++ b/src/Option.ts @@ -233,7 +233,7 @@ export const fromEither: (ma: Either) => Option = (ma) => (ma._ta * @category destructors * @since 2.0.0 */ -export function fold(onNone: () => B, onSome: (a: A) => B): (ma: Option) => B { +export function fold(onNone: Lazy, onSome: (a: A) => B): (ma: Option) => B { return (ma) => (isNone(ma) ? onNone() : onSome(ma.value)) } @@ -301,7 +301,7 @@ export function toUndefined(ma: Option): A | undefined { * @category destructors * @since 2.6.0 */ -export const getOrElseW = (onNone: () => B) => (ma: Option): A | B => (isNone(ma) ? onNone() : ma.value) +export const getOrElseW = (onNone: Lazy) => (ma: Option): A | B => (isNone(ma) ? onNone() : ma.value) /** * Extracts the value out of the structure, if it exists. Otherwise returns the given default value @@ -328,7 +328,7 @@ export const getOrElseW = (onNone: () => B) => (ma: Option): A | B => ( * @category destructors * @since 2.0.0 */ -export const getOrElse: (onNone: () => A) => (ma: Option) => A = getOrElseW +export const getOrElse: (onNone: Lazy) => (ma: Option) => A = getOrElseW // ------------------------------------------------------------------------------------- // combinators @@ -401,7 +401,7 @@ const reduceRight_: (fa: Option, b: B, f: (a: A, b: B) => B) => B = (fa const traverse_ = (F: Applicative) => (ta: Option, f: (a: A) => HKT): HKT> => { return isNone(ta) ? F.of(none) : F.map(f(ta.value), some) } -const alt_: (fx: Option, fy: () => Option) => Option = (ma, f) => (isNone(ma) ? f() : ma) +const alt_: (fa: Option, that: Lazy>) => Option = (fa, that) => (isNone(fa) ? that() : fa) const filter_ = (fa: Option, predicate: Predicate): Option => isNone(fa) ? none : predicate(fa.value) ? fa : none const filterMap_: (fa: Option, f: (a: A) => Option) => Option = (ma, f) => @@ -526,7 +526,7 @@ export const flatten: (mma: Option>) => Option = (mma) => chain_ * @category Alt * @since 2.0.0 */ -export const alt: (that: () => Option) => (fa: Option) => Option = (that) => (fa) => alt_(fa, that) +export const alt: (that: Lazy>) => (fa: Option) => Option = (that) => (fa) => alt_(fa, that) /** * @category Extend diff --git a/src/OptionT.ts b/src/OptionT.ts index 0535e3c59..774f0bdb6 100644 --- a/src/OptionT.ts +++ b/src/OptionT.ts @@ -11,6 +11,7 @@ import { import { HKT, Kind, Kind2, URIS, URIS2 } from './HKT' import { Monad, Monad1, Monad2, Monad2C } from './Monad' import { fold, none, Option, applicativeOption, some, URI } from './Option' +import { Lazy } from './function' // TODO: remove module in v3 @@ -25,9 +26,9 @@ export interface OptionT extends HKT> {} */ export interface OptionM extends ApplicativeCompositionHKT1 { readonly chain: (ma: OptionT, f: (a: A) => OptionT) => OptionT - readonly alt: (fx: OptionT, fy: () => OptionT) => OptionT - readonly fold: (ma: OptionT, onNone: () => HKT, onSome: (a: A) => HKT) => HKT - readonly getOrElse: (ma: OptionT, onNone: () => HKT) => HKT + readonly alt: (fa: OptionT, that: Lazy>) => OptionT + readonly fold: (ma: OptionT, onNone: Lazy>, onSome: (a: A) => HKT) => HKT + readonly getOrElse: (ma: OptionT, onNone: Lazy>) => HKT readonly fromM: (ma: HKT) => OptionT readonly none: () => OptionT } @@ -43,9 +44,9 @@ export type OptionT1 = Kind> */ export interface OptionM1 extends ApplicativeComposition11 { readonly chain: (ma: OptionT1, f: (a: A) => OptionT1) => OptionT1 - readonly alt: (fx: OptionT1, fy: () => OptionT1) => OptionT1 - readonly fold: (ma: OptionT1, onNone: () => Kind, onSome: (a: A) => Kind) => Kind - readonly getOrElse: (ma: OptionT1, onNone: () => Kind) => Kind + readonly alt: (fa: OptionT1, that: Lazy>) => OptionT1 + readonly fold: (ma: OptionT1, onNone: Lazy>, onSome: (a: A) => Kind) => Kind + readonly getOrElse: (ma: OptionT1, onNone: Lazy>) => Kind readonly fromM: (ma: Kind) => OptionT1 readonly none: () => OptionT1 } @@ -61,13 +62,13 @@ export type OptionT2 = Kind2> */ export interface OptionM2 extends ApplicativeComposition21 { readonly chain: (ma: OptionT2, f: (a: A) => OptionT2) => OptionT2 - readonly alt: (fx: OptionT2, fy: () => OptionT2) => OptionT2 + readonly alt: (fa: OptionT2, that: Lazy>) => OptionT2 readonly fold: ( ma: OptionT2, - onNone: () => Kind2, + onNone: Lazy>, onSome: (a: A) => Kind2 ) => Kind2 - readonly getOrElse: (ma: OptionT2, onNone: () => Kind2) => Kind2 + readonly getOrElse: (ma: OptionT2, onNone: Lazy>) => Kind2 readonly fromM: (ma: Kind2) => OptionT2 readonly none: () => OptionT2 } @@ -77,13 +78,13 @@ export interface OptionM2 extends ApplicativeComposition21 extends ApplicativeComposition2C1 { readonly chain: (ma: OptionT2, f: (a: A) => OptionT2) => OptionT2 - readonly alt: (fx: OptionT2, fy: () => OptionT2) => OptionT2 + readonly alt: (fa: OptionT2, that: Lazy>) => OptionT2 readonly fold: ( ma: OptionT2, - onNone: () => Kind2, + onNone: Lazy>, onSome: (a: A) => Kind2 ) => Kind2 - readonly getOrElse: (ma: OptionT2, onNone: () => Kind2) => Kind2 + readonly getOrElse: (ma: OptionT2, onNone: Lazy>) => Kind2 readonly fromM: (ma: Kind2) => OptionT2 readonly none: () => OptionT2 } @@ -108,10 +109,10 @@ export function getOptionM(M: Monad): OptionM { ma, fold(() => fnone, f) ), - alt: (fx, fy) => + alt: (fa, that) => M.chain( - fx, - fold(fy, (a) => M.of(some(a))) + fa, + fold(that, (a) => M.of(some(a))) ), fold: (ma, onNone, onSome) => M.chain(ma, fold(onNone, onSome)), getOrElse: (ma, onNone) => M.chain(ma, fold(onNone, M.of)), diff --git a/src/ReaderTaskEither.ts b/src/ReaderTaskEither.ts index 30912af6d..2f127a3d6 100644 --- a/src/ReaderTaskEither.ts +++ b/src/ReaderTaskEither.ts @@ -4,7 +4,7 @@ import { Alt3, Alt3C } from './Alt' import { Bifunctor3 } from './Bifunctor' import { Either } from './Either' -import { identity, pipe, Predicate, Refinement, flow } from './function' +import { flow, identity, Lazy, pipe, Predicate, Refinement } from './function' import { IO } from './IO' import { IOEither } from './IOEither' import { Monad3, Monad3C } from './Monad' @@ -164,7 +164,7 @@ export const fromEither: (ma: Either) => ReaderTaskEither(onNone: () => E) => (ma: Option) => ReaderTaskEither = (onNone) => ( +export const fromOption: (onNone: Lazy) => (ma: Option) => ReaderTaskEither = (onNone) => ( ma ) => (ma._tag === 'None' ? left(onNone()) : right(ma.value)) @@ -533,12 +533,12 @@ const ap_: Monad3['ap'] = (fab, fa) => pipe(fab, ap(fa)) const of = right const chain_: Monad3['chain'] = (ma, f) => pipe(ma, chain(f)) const alt_: ( - fx: ReaderTaskEither, - fy: () => ReaderTaskEither -) => ReaderTaskEither = (fx, fy) => (r) => + fa: ReaderTaskEither, + that: Lazy> +) => ReaderTaskEither = (fa, that) => (r) => pipe( - fx(r), - TE.alt(() => fy()(r)) + fa(r), + TE.alt(() => that()(r)) ) const bimap_: ( fea: ReaderTaskEither, diff --git a/src/ReadonlyArray.ts b/src/ReadonlyArray.ts index 803b18676..3cc7f4b40 100644 --- a/src/ReadonlyArray.ts +++ b/src/ReadonlyArray.ts @@ -15,7 +15,7 @@ import { RefinementWithIndex } from './FilterableWithIndex' import { FoldableWithIndex1 } from './FoldableWithIndex' -import { identity, Predicate, Refinement } from './function' +import { identity, Lazy, Predicate, Refinement } from './function' import { FunctorWithIndex1 } from './FunctorWithIndex' import { HKT } from './HKT' import { Monad1 } from './Monad' @@ -24,10 +24,10 @@ import { isSome, none, Option, some } from './Option' import { fromCompare, getMonoid as getOrdMonoid, Ord, ordNumber } from './Ord' import { ReadonlyNonEmptyArray } from './ReadonlyNonEmptyArray' import { Show } from './Show' -import { TraversableWithIndex1, PipeableTraverseWithIndex1 } from './TraversableWithIndex' +import { PipeableTraverse1, Traversable1 } from './Traversable' +import { PipeableTraverseWithIndex1, TraversableWithIndex1 } from './TraversableWithIndex' import { Unfoldable1 } from './Unfoldable' -import { Witherable1, PipeableWither1, PipeableWilt1 } from './Witherable' -import { Traversable1, PipeableTraverse1 } from './Traversable' +import { PipeableWilt1, PipeableWither1, Witherable1 } from './Witherable' // ------------------------------------------------------------------------------------- // model @@ -262,7 +262,7 @@ export function flatten(mma: ReadonlyArray>): ReadonlyArray< * @since 2.5.0 */ export function foldLeft( - onNil: () => B, + onNil: Lazy, onCons: (head: A, tail: ReadonlyArray) => B ): (as: ReadonlyArray) => B { return (as) => (isEmpty(as) ? onNil() : onCons(as[0], as.slice(1))) @@ -275,7 +275,7 @@ export function foldLeft( * @since 2.5.0 */ export function foldRight( - onNil: () => B, + onNil: Lazy, onCons: (init: ReadonlyArray, last: A) => B ): (as: ReadonlyArray) => B { return (as) => (isEmpty(as) ? onNil() : onCons(as.slice(0, as.length - 1), as[as.length - 1])) @@ -1487,7 +1487,8 @@ const partitionMapWithIndex_ = ( } } -const alt_: (fx: ReadonlyArray, fy: () => ReadonlyArray) => ReadonlyArray = (fx, f) => concat(fx, f()) +const alt_: (fa: ReadonlyArray, that: Lazy>) => ReadonlyArray = (fa, that) => + concat(fa, that()) const zero_: () => ReadonlyArray = () => empty @@ -1607,7 +1608,7 @@ const wilt_ = ( * @category Alt * @since 2.5.0 */ -export const alt: (that: () => ReadonlyArray) => (fa: ReadonlyArray) => ReadonlyArray = (that) => (fa) => +export const alt: (that: Lazy>) => (fa: ReadonlyArray) => ReadonlyArray = (that) => (fa) => alt_(fa, that) /** diff --git a/src/ReadonlyNonEmptyArray.ts b/src/ReadonlyNonEmptyArray.ts index 1ebff86f4..603253791 100644 --- a/src/ReadonlyNonEmptyArray.ts +++ b/src/ReadonlyNonEmptyArray.ts @@ -7,7 +7,7 @@ import { Alt1 } from './Alt' import { Comonad1 } from './Comonad' import { Eq } from './Eq' import { FoldableWithIndex1 } from './FoldableWithIndex' -import { Predicate, Refinement } from './function' +import { Lazy, Predicate, Refinement } from './function' import { FunctorWithIndex1 } from './FunctorWithIndex' import { Monad1 } from './Monad' import { NonEmptyArray } from './NonEmptyArray' @@ -17,8 +17,8 @@ import * as RA from './ReadonlyArray' import { ReadonlyRecord } from './ReadonlyRecord' import { getJoinSemigroup, getMeetSemigroup, Semigroup } from './Semigroup' import { Show } from './Show' -import { TraversableWithIndex1, PipeableTraverseWithIndex1 } from './TraversableWithIndex' -import { Traversable1, PipeableTraverse1 } from './Traversable' +import { PipeableTraverse1, Traversable1 } from './Traversable' +import { PipeableTraverseWithIndex1, TraversableWithIndex1 } from './TraversableWithIndex' // ------------------------------------------------------------------------------------- // model @@ -394,7 +394,7 @@ export const foldMap = (S: Semigroup) => (f: (a: A) => S) => (fa: Reado * @since 2.6.2 */ export const alt: ( - that: () => ReadonlyNonEmptyArray + that: Lazy> ) => (fa: ReadonlyNonEmptyArray) => ReadonlyNonEmptyArray = RA.alt as any /** diff --git a/src/StateReaderTaskEither.ts b/src/StateReaderTaskEither.ts index 86f7f1411..f4fa33ae6 100644 --- a/src/StateReaderTaskEither.ts +++ b/src/StateReaderTaskEither.ts @@ -4,7 +4,7 @@ import { Alt4 } from './Alt' import { Bifunctor4 } from './Bifunctor' import { Either } from './Either' -import { identity, pipe, Predicate, Refinement } from './function' +import { identity, Lazy, pipe, Predicate, Refinement } from './function' import { IO } from './IO' import { IOEither } from './IOEither' import { Monad4 } from './Monad' @@ -199,7 +199,7 @@ export const fromEither: (ma: Either) => StateReaderTaskEither * @category constructors * @since 2.0.0 */ -export const fromOption: (onNone: () => E) => (ma: Option) => StateReaderTaskEither = ( +export const fromOption: (onNone: Lazy) => (ma: Option) => StateReaderTaskEither = ( onNone ) => (ma) => (ma._tag === 'None' ? left(onNone()) : right(ma.value)) @@ -499,7 +499,7 @@ export const flatten: ( * @since 2.6.2 */ export const alt: ( - that: () => StateReaderTaskEither + that: Lazy> ) => (fa: StateReaderTaskEither) => StateReaderTaskEither = (that) => (fa) => (s) => pipe( fa(s), @@ -537,12 +537,12 @@ const chain_: Monad4['chain'] = (ma, f) => pipe(ma, chain(f)) const of = right /* istanbul ignore next */ const alt_: ( - fx: StateReaderTaskEither, - fy: () => StateReaderTaskEither -) => StateReaderTaskEither = (fx, fy) => (s) => + fa: StateReaderTaskEither, + that: Lazy> +) => StateReaderTaskEither = (fa, that) => (s) => pipe( - fx(s), - RTE.alt(() => fy()(s)) + fa(s), + RTE.alt(() => that()(s)) ) const bimap_: ( diff --git a/src/TaskEither.ts b/src/TaskEither.ts index 2fd0d6017..1f8d4c426 100644 --- a/src/TaskEither.ts +++ b/src/TaskEither.ts @@ -99,7 +99,7 @@ export const fromEither: (ma: E.Either) => TaskEither = (ma) = * @category constructors * @since 2.0.0 */ -export const fromOption: (onNone: () => E) => (ma: Option) => TaskEither = (onNone) => (ma) => +export const fromOption: (onNone: Lazy) => (ma: Option) => TaskEither = (onNone) => (ma) => ma._tag === 'None' ? left(onNone()) : right(ma.value) /** @@ -433,7 +433,7 @@ export const flatten: (mma: TaskEither>) => TaskEither * @category Alt * @since 2.0.0 */ -export const alt: (that: () => TaskEither) => (fa: TaskEither) => TaskEither = (that) => +export const alt: (that: Lazy>) => (fa: TaskEither) => TaskEither = (that) => T.chain(E.fold(that, right)) /** diff --git a/src/ValidationT.ts b/src/ValidationT.ts index c3b587b98..aaa434111 100644 --- a/src/ValidationT.ts +++ b/src/ValidationT.ts @@ -11,6 +11,7 @@ import { Either, getValidation, isLeft, isRight, left, URI } from './Either' import { HKT, Kind, Kind2, URIS, URIS2 } from './HKT' import { Monad, Monad1, Monad2 } from './Monad' import { Semigroup } from './Semigroup' +import { Lazy } from './function' /** * @since 2.0.0 @@ -22,7 +23,7 @@ export interface ValidationT extends HKT> {} */ export interface ValidationM extends ApplicativeCompositionHKT2C { readonly chain: (ma: ValidationT, f: (a: A) => ValidationT) => ValidationT - readonly alt: (fx: ValidationT, f: () => ValidationT) => ValidationT + readonly alt: (fa: ValidationT, that: Lazy>) => ValidationT } /** @@ -35,7 +36,7 @@ export type ValidationT1 = Kind> */ export interface ValidationM1 extends ApplicativeComposition12C { readonly chain: (ma: ValidationT1, f: (a: A) => ValidationT1) => ValidationT1 - readonly alt: (fx: ValidationT1, f: () => ValidationT1) => ValidationT1 + readonly alt: (fa: ValidationT1, that: Lazy>) => ValidationT1 } /** @@ -51,7 +52,7 @@ export interface ValidationM2 extends ApplicativeComposition ma: ValidationT2, f: (a: A) => ValidationT2 ) => ValidationT2 - readonly alt: (fx: ValidationT2, f: () => ValidationT2) => ValidationT2 + readonly alt: (fa: ValidationT2, that: Lazy>) => ValidationT2 } /** @@ -68,9 +69,9 @@ export function getValidationM(S: Semigroup, M: Monad): ValidationM< ap: A.ap, of: A.of, chain: /* istanbul ignore next */ (ma, f) => M.chain(ma, (e) => (isLeft(e) ? M.of(left(e.left)) : f(e.right))), - alt: (fx, f) => - M.chain(fx, (e1) => - isRight(e1) ? A.of(e1.right) : M.map(f(), (e2) => (isLeft(e2) ? left(S.concat(e1.left, e2.left)) : e2)) + alt: (fa, that) => + M.chain(fa, (e1) => + isRight(e1) ? A.of(e1.right) : M.map(that(), (e2) => (isLeft(e2) ? left(S.concat(e1.left, e2.left)) : e2)) ) } } diff --git a/src/boolean.ts b/src/boolean.ts index abedf84d2..c5797f9f4 100644 --- a/src/boolean.ts +++ b/src/boolean.ts @@ -2,6 +2,8 @@ * @since 2.2.0 */ +import { Lazy } from './function' + /** * Defines the fold over a boolean value. * Takes two thunks `onTrue`, `onFalse` and a `boolean` value. @@ -23,6 +25,6 @@ * @category destructors * @since 2.2.0 */ -export function fold(onFalse: () => A, onTrue: () => A): (value: boolean) => A { +export function fold(onFalse: Lazy, onTrue: Lazy): (value: boolean) => A { return (value) => (value ? onTrue() : onFalse()) } diff --git a/src/pipeable.ts b/src/pipeable.ts index 5f38a565c..2c27b47b6 100644 --- a/src/pipeable.ts +++ b/src/pipeable.ts @@ -1,19 +1,19 @@ /** * @since 2.0.0 */ -import { Alt, Alt1, Alt2, Alt2C, Alt3, Alt4, Alt3C } from './Alt' -import { Apply, Apply1, Apply2, Apply2C, Apply3, Apply4, Apply3C } from './Apply' -import { Bifunctor, Bifunctor2, Bifunctor3, Bifunctor4, Bifunctor3C } from './Bifunctor' -import { Chain, Chain1, Chain2, Chain2C, Chain3, Chain4, Chain3C } from './Chain' +import { Alt, Alt1, Alt2, Alt2C, Alt3, Alt3C, Alt4 } from './Alt' +import { Apply, Apply1, Apply2, Apply2C, Apply3, Apply3C, Apply4 } from './Apply' +import { Bifunctor, Bifunctor2, Bifunctor3, Bifunctor3C, Bifunctor4 } from './Bifunctor' +import { Chain, Chain1, Chain2, Chain2C, Chain3, Chain3C, Chain4 } from './Chain' import { Compactable, Compactable1, Compactable2, Compactable2C, Compactable3, + Compactable3C, Compactable4, - Separated, - Compactable3C + Separated } from './Compactable' import { Contravariant, @@ -21,19 +21,19 @@ import { Contravariant2, Contravariant2C, Contravariant3, - Contravariant4, - Contravariant3C + Contravariant3C, + Contravariant4 } from './Contravariant' import { Either } from './Either' -import { Extend, Extend1, Extend2, Extend2C, Extend3, Extend4, Extend3C } from './Extend' +import { Extend, Extend1, Extend2, Extend2C, Extend3, Extend3C, Extend4 } from './Extend' import { Filterable, Filterable1, Filterable2, Filterable2C, Filterable3, - Filterable4, - Filterable3C + Filterable3C, + Filterable4 } from './Filterable' import { FilterableWithIndex, @@ -41,31 +41,31 @@ import { FilterableWithIndex2, FilterableWithIndex2C, FilterableWithIndex3, + FilterableWithIndex3C, FilterableWithIndex4, PredicateWithIndex, - RefinementWithIndex, - FilterableWithIndex3C + RefinementWithIndex } from './FilterableWithIndex' -import { Foldable, Foldable1, Foldable2, Foldable2C, Foldable3, Foldable4, Foldable3C } from './Foldable' +import { Foldable, Foldable1, Foldable2, Foldable2C, Foldable3, Foldable3C, Foldable4 } from './Foldable' import { FoldableWithIndex, FoldableWithIndex1, FoldableWithIndex2, FoldableWithIndex2C, FoldableWithIndex3, - FoldableWithIndex4, - FoldableWithIndex3C + FoldableWithIndex3C, + FoldableWithIndex4 } from './FoldableWithIndex' -import { identity, pipe as pipeFromFunctionModule, Predicate, Refinement } from './function' -import { Functor, Functor1, Functor2, Functor2C, Functor3, Functor4, Functor3C } from './Functor' +import { identity, Lazy, pipe as pipeFromFunctionModule, Predicate, Refinement } from './function' +import { Functor, Functor1, Functor2, Functor2C, Functor3, Functor3C, Functor4 } from './Functor' import { FunctorWithIndex, FunctorWithIndex1, FunctorWithIndex2, FunctorWithIndex2C, FunctorWithIndex3, - FunctorWithIndex4, - FunctorWithIndex3C + FunctorWithIndex3C, + FunctorWithIndex4 } from './FunctorWithIndex' import { HKT, HKT2, Kind, Kind2, Kind3, Kind4, URIS, URIS2, URIS3, URIS4 } from './HKT' import { @@ -74,19 +74,19 @@ import { MonadThrow2, MonadThrow2C, MonadThrow3, - MonadThrow4, - MonadThrow3C + MonadThrow3C, + MonadThrow4 } from './MonadThrow' import { Monoid } from './Monoid' import { Option } from './Option' -import { Profunctor, Profunctor2, Profunctor2C, Profunctor3, Profunctor4, Profunctor3C } from './Profunctor' +import { Profunctor, Profunctor2, Profunctor2C, Profunctor3, Profunctor3C, Profunctor4 } from './Profunctor' import { Semigroupoid, Semigroupoid2, Semigroupoid2C, Semigroupoid3, - Semigroupoid4, - Semigroupoid3C + Semigroupoid3C, + Semigroupoid4 } from './Semigroupoid' // TODO: remove module in v3 @@ -608,49 +608,49 @@ export interface PipeableFoldableWithIndex4 extends Pipeable * @since 2.0.0 */ export interface PipeableAlt { - readonly alt: (that: () => HKT) => (fa: HKT) => HKT + readonly alt: (that: Lazy>) => (fa: HKT) => HKT } /** * @since 2.0.0 */ export interface PipeableAlt1 { - readonly alt: (that: () => Kind) => (fa: Kind) => Kind + readonly alt: (that: Lazy>) => (fa: Kind) => Kind } /** * @since 2.0.0 */ export interface PipeableAlt2 { - readonly alt: (that: () => Kind2) => (fa: Kind2) => Kind2 + readonly alt: (that: Lazy>) => (fa: Kind2) => Kind2 } /** * @since 2.0.0 */ export interface PipeableAlt2C { - readonly alt: (that: () => Kind2) => (fa: Kind2) => Kind2 + readonly alt: (that: Lazy>) => (fa: Kind2) => Kind2 } /** * @since 2.0.0 */ export interface PipeableAlt3 { - readonly alt: (that: () => Kind3) => (fa: Kind3) => Kind3 + readonly alt: (that: Lazy>) => (fa: Kind3) => Kind3 } /** * @since 2.2.0 */ export interface PipeableAlt3C { - readonly alt: (that: () => Kind3) => (fa: Kind3) => Kind3 + readonly alt: (that: Lazy>) => (fa: Kind3) => Kind3 } /** * @since 2.0.0 */ export interface PipeableAlt4 { - readonly alt: (that: () => Kind4) => (fa: Kind4) => Kind4 + readonly alt: (that: Lazy>) => (fa: Kind4) => Kind4 } /** @@ -1088,7 +1088,7 @@ export interface PipeableSemigroupoid4 { * @since 2.0.0 */ export interface PipeableMonadThrow { - readonly fromOption: (onNone: () => E) => (ma: Option) => HKT + readonly fromOption: (onNone: Lazy) => (ma: Option) => HKT readonly fromEither: (ma: Either) => HKT readonly fromPredicate: { (refinement: Refinement, onFalse: (a: A) => E): (a: A) => HKT @@ -1104,7 +1104,7 @@ export interface PipeableMonadThrow { * @since 2.0.0 */ export interface PipeableMonadThrow1 { - readonly fromOption: (onNone: () => E) => (ma: Option) => Kind + readonly fromOption: (onNone: Lazy) => (ma: Option) => Kind readonly fromEither: (ma: Either) => Kind readonly fromPredicate: { (refinement: Refinement, onFalse: (a: A) => E): (a: A) => Kind @@ -1120,7 +1120,7 @@ export interface PipeableMonadThrow1 { * @since 2.0.0 */ export interface PipeableMonadThrow2 { - readonly fromOption: (onNone: () => E) => (ma: Option) => Kind2 + readonly fromOption: (onNone: Lazy) => (ma: Option) => Kind2 readonly fromEither: (ma: Either) => Kind2 readonly fromPredicate: { (refinement: Refinement, onFalse: (a: A) => E): (a: A) => Kind2 @@ -1136,7 +1136,7 @@ export interface PipeableMonadThrow2 { * @since 2.0.0 */ export interface PipeableMonadThrow2C { - readonly fromOption: (onNone: () => E) => (ma: Option) => Kind2 + readonly fromOption: (onNone: Lazy) => (ma: Option) => Kind2 readonly fromEither: (ma: Either) => Kind2 readonly fromPredicate: { (refinement: Refinement, onFalse: (a: A) => E): (a: A) => Kind2 @@ -1152,7 +1152,7 @@ export interface PipeableMonadThrow2C { * @since 2.0.0 */ export interface PipeableMonadThrow3 { - readonly fromOption: (onNone: () => E) => (ma: Option) => Kind3 + readonly fromOption: (onNone: Lazy) => (ma: Option) => Kind3 readonly fromEither: (ma: Either) => Kind3 readonly fromPredicate: { (refinement: Refinement, onFalse: (a: A) => E): (a: A) => Kind3 @@ -1170,7 +1170,7 @@ export interface PipeableMonadThrow3 { * @since 2.2.0 */ export interface PipeableMonadThrow3C { - readonly fromOption: (onNone: () => E) => (ma: Option) => Kind3 + readonly fromOption: (onNone: Lazy) => (ma: Option) => Kind3 readonly fromEither: (ma: Either) => Kind3 readonly fromPredicate: { (refinement: Refinement, onFalse: (a: A) => E): (a: A) => Kind3 @@ -1188,7 +1188,7 @@ export interface PipeableMonadThrow3C { * @since 2.0.0 */ export interface PipeableMonadThrow4 { - readonly fromOption: (onNone: () => E) => (ma: Option) => Kind4 + readonly fromOption: (onNone: Lazy) => (ma: Option) => Kind4 readonly fromEither: (ma: Either) => Kind4 readonly fromPredicate: { (refinement: Refinement, onFalse: (a: A) => E): (a: A) => Kind4 From 1f6f59cd53227539c8c4f84abf5043eb9a555d26 Mon Sep 17 00:00:00 2001 From: Oliver Joseph Ash Date: Wed, 24 Jun 2020 16:47:08 +0100 Subject: [PATCH 035/106] Refine `Either.parseJSON` return type Fixes https://github.com/gcanti/fp-ts/issues/1251 --- src/Either.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/Either.ts b/src/Either.ts index d8d0adbf2..97d6f69e2 100644 --- a/src/Either.ts +++ b/src/Either.ts @@ -169,6 +169,13 @@ export function tryCatch(f: Lazy, onError: (e: unknown) => E): Either {} + /** * Converts a JavaScript Object Notation (JSON) string into an object. * @@ -181,7 +188,7 @@ export function tryCatch(f: Lazy, onError: (e: unknown) => E): Either(s: string, onError: (reason: unknown) => E): Either { +export function parseJSON(s: string, onError: (reason: unknown) => E): Either { return tryCatch(() => JSON.parse(s), onError) } From a11ec56efaade8ca861773fd654eda86d7f38735 Mon Sep 17 00:00:00 2001 From: Oliver Joseph Ash Date: Wed, 24 Jun 2020 18:41:35 +0100 Subject: [PATCH 036/106] Apply changes --- docs/modules/Either.ts.md | 2 +- src/Either.ts | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/modules/Either.ts.md b/docs/modules/Either.ts.md index e4ae40791..ede009c46 100644 --- a/docs/modules/Either.ts.md +++ b/docs/modules/Either.ts.md @@ -417,7 +417,7 @@ Converts a JavaScript Object Notation (JSON) string into an object. **Signature** ```ts -export declare function parseJSON(s: string, onError: (reason: unknown) => E): Either +export declare function parseJSON(s: string, onError: (reason: unknown) => E): Either ``` **Example** diff --git a/src/Either.ts b/src/Either.ts index 97d6f69e2..b3587242c 100644 --- a/src/Either.ts +++ b/src/Either.ts @@ -170,11 +170,11 @@ export function tryCatch(f: Lazy, onError: (e: unknown) => E): Either {} +interface JsonArray extends ReadonlyArray {} /** * Converts a JavaScript Object Notation (JSON) string into an object. @@ -188,7 +188,7 @@ interface JsonArray extends Array {} * @category constructors * @since 2.0.0 */ -export function parseJSON(s: string, onError: (reason: unknown) => E): Either { +export function parseJSON(s: string, onError: (reason: unknown) => E): Either { return tryCatch(() => JSON.parse(s), onError) } From 54bd0ca95ee7b6abfdb9ddceef2d6d0f3a3d8c3a Mon Sep 17 00:00:00 2001 From: Oliver Joseph Ash Date: Thu, 25 Jun 2020 09:07:58 +0100 Subject: [PATCH 037/106] Export --- src/Either.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Either.ts b/src/Either.ts index b3587242c..aec24cde4 100644 --- a/src/Either.ts +++ b/src/Either.ts @@ -170,11 +170,11 @@ export function tryCatch(f: Lazy, onError: (e: unknown) => E): Either {} +export interface JsonArray extends ReadonlyArray {} /** * Converts a JavaScript Object Notation (JSON) string into an object. From 38c3676997b0c54250a5717c5d0306cf7c57652c Mon Sep 17 00:00:00 2001 From: Oliver Joseph Ash Date: Thu, 25 Jun 2020 09:10:29 +0100 Subject: [PATCH 038/106] Add `since` --- src/Either.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/Either.ts b/src/Either.ts index aec24cde4..c26369ec9 100644 --- a/src/Either.ts +++ b/src/Either.ts @@ -170,10 +170,19 @@ export function tryCatch(f: Lazy, onError: (e: unknown) => E): Either {} /** From 4d3342e97480006f916b10042ec2fe993d3b0116 Mon Sep 17 00:00:00 2001 From: Oliver Joseph Ash Date: Thu, 25 Jun 2020 09:10:32 +0100 Subject: [PATCH 039/106] Update docs --- docs/modules/Either.ts.md | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/docs/modules/Either.ts.md b/docs/modules/Either.ts.md index ede009c46..5142eaddc 100644 --- a/docs/modules/Either.ts.md +++ b/docs/modules/Either.ts.md @@ -88,6 +88,9 @@ Added in v2.0.0 - [Left (interface)](#left-interface) - [Right (interface)](#right-interface) - [utils](#utils) + - [Json (type alias)](#json-type-alias) + - [JsonArray (interface)](#jsonarray-interface) + - [JsonRecord (interface)](#jsonrecord-interface) - [elem](#elem) - [exists](#exists) - [toError](#toerror) @@ -417,7 +420,7 @@ Converts a JavaScript Object Notation (JSON) string into an object. **Signature** ```ts -export declare function parseJSON(s: string, onError: (reason: unknown) => E): Either +export declare function parseJSON(s: string, onError: (reason: unknown) => E): Either ``` **Example** @@ -803,6 +806,38 @@ Added in v2.0.0 # utils +## Json (type alias) + +**Signature** + +```ts +export type Json = boolean | number | string | null | JsonArray | JsonRecord +``` + +Added in v2.6.7 + +## JsonArray (interface) + +**Signature** + +```ts +export interface JsonArray extends ReadonlyArray {} +``` + +Added in v2.6.7 + +## JsonRecord (interface) + +**Signature** + +```ts +export interface JsonRecord { + readonly [key: string]: Json +} +``` + +Added in v2.6.7 + ## elem **Signature** From e6bcc98467b20a6ef5a080977e6b05a0348a5e1e Mon Sep 17 00:00:00 2001 From: Oliver Joseph Ash Date: Thu, 25 Jun 2020 09:10:49 +0100 Subject: [PATCH 040/106] Format --- src/Either.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Either.ts b/src/Either.ts index c26369ec9..501c007d0 100644 --- a/src/Either.ts +++ b/src/Either.ts @@ -169,8 +169,9 @@ export function tryCatch(f: Lazy, onError: (e: unknown) => E): Either Date: Thu, 25 Jun 2020 09:20:03 +0100 Subject: [PATCH 041/106] Format --- src/Either.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Either.ts b/src/Either.ts index 501c007d0..9dc10f36b 100644 --- a/src/Either.ts +++ b/src/Either.ts @@ -171,7 +171,7 @@ export function tryCatch(f: Lazy, onError: (e: unknown) => E): Either Date: Sun, 28 Jun 2020 13:25:43 +0200 Subject: [PATCH 042/106] Added chainW to ReaderTask module. --- docs/modules/ReaderTask.ts.md | 15 +++++++++++++++ src/ReaderTask.ts | 18 +++++++++++++----- 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/docs/modules/ReaderTask.ts.md b/docs/modules/ReaderTask.ts.md index f93dc5989..0d34791b6 100644 --- a/docs/modules/ReaderTask.ts.md +++ b/docs/modules/ReaderTask.ts.md @@ -23,6 +23,7 @@ Added in v2.3.0 - [Monad](#monad) - [chain](#chain) - [chainFirst](#chainfirst) + - [chainW](#chainw) - [flatten](#flatten) - [combinators](#combinators) - [chainIOK](#chainiok) @@ -139,6 +140,20 @@ export declare const chainFirst: (f: (a: A) => ReaderTask) => (ma Added in v2.3.0 +## chainW + +Less strict version of [`chain`](#chain). + +**Signature** + +```ts +export declare const chainW: ( + f: (a: A) => ReaderTask +) => (ma: ReaderTask) => ReaderTask +``` + +Added in v2.6.7 + ## flatten **Signature** diff --git a/src/ReaderTask.ts b/src/ReaderTask.ts index 2b554e866..d326162bc 100644 --- a/src/ReaderTask.ts +++ b/src/ReaderTask.ts @@ -160,19 +160,27 @@ export const apSecond = (fb: ReaderTask) => (fa: ReaderTask export const of: (a: A) => ReaderTask = (a) => () => T.of(a) /** - * Composes computations in sequence, using the return value of one computation to determine the next computation. + * Less strict version of [`chain`](#chain). * * @category Monad - * @since 2.3.0 + * @since 2.6.7 */ -export const chain: (f: (a: A) => ReaderTask) => (ma: ReaderTask) => ReaderTask = (f) => ( - fa -) => (r) => +export const chainW: (f: (a: A) => ReaderTask) => (ma: ReaderTask) => ReaderTask = ( + f +) => (fa) => (r) => pipe( fa(r), T.chain((a) => f(a)(r)) ) +/** + * Composes computations in sequence, using the return value of one computation to determine the next computation. + * + * @category Monad + * @since 2.3.0 + */ +export const chain: (f: (a: A) => ReaderTask) => (ma: ReaderTask) => ReaderTask = chainW + /** * Composes computations in sequence, using the return value of one computation to determine the next computation and * keeping only the result of the first. From bb0f59930311e30663e2aeb902d7a9fc883fccf4 Mon Sep 17 00:00:00 2001 From: gcanti Date: Mon, 29 Jun 2020 07:56:27 +0200 Subject: [PATCH 043/106] version 2.6.7 --- CHANGELOG.md | 6 ++++++ docs/modules/Either.ts.md | 2 ++ package.json | 2 +- src/Either.ts | 2 ++ 4 files changed, 11 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8a948978b..3d65d4ff3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,12 @@ **Note**: Gaps between patch versions are faulty/broken releases. **Note**: A feature tagged as Experimental is in a high state of flux, you're at risk of it changing without notice. +# 2.6.7 + +- **Polish** + - refine `Either.parseJSON` return type, #1252 (@OliverJAsh) + - add missing `chainW` to `ReaderTask`, #1254 (@adameier) + # 2.6.6 - **Polish** diff --git a/docs/modules/Either.ts.md b/docs/modules/Either.ts.md index 5142eaddc..1d0930b44 100644 --- a/docs/modules/Either.ts.md +++ b/docs/modules/Either.ts.md @@ -808,6 +808,8 @@ Added in v2.0.0 ## Json (type alias) +Copied from https://github.com/Microsoft/TypeScript/issues/1897#issuecomment-338650717 + **Signature** ```ts diff --git a/package.json b/package.json index c518c67ac..bcc45bbde 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fp-ts", - "version": "2.6.6", + "version": "2.6.7", "description": "Functional programming in TypeScript", "files": [ "lib", diff --git a/src/Either.ts b/src/Either.ts index 9dc10f36b..a6ba5a109 100644 --- a/src/Either.ts +++ b/src/Either.ts @@ -175,12 +175,14 @@ export function tryCatch(f: Lazy, onError: (e: unknown) => E): Either Date: Wed, 17 Jun 2020 06:45:08 +0200 Subject: [PATCH 044/106] split `readonlyArray` mega instance --- CHANGELOG.md | 22 +++ docs/modules/Array.ts.md | 25 +-- docs/modules/ReadonlyArray.ts.md | 222 ++++++++++++++++++++++-- package.json | 2 +- src/Array.ts | 46 ++--- src/ReadonlyArray.ts | 282 +++++++++++++++++++++++++++---- src/ReadonlyNonEmptyArray.ts | 14 ++ test/Apply.ts | 8 +- test/FoldableWithIndex.ts | 4 +- test/ReadonlyArray.ts | 2 +- test/ReadonlyRecord.ts | 14 +- test/Record.ts | 14 +- 12 files changed, 555 insertions(+), 100 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3d65d4ff3..95cc77165 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,28 @@ **Note**: Gaps between patch versions are faulty/broken releases. **Note**: A feature tagged as Experimental is in a high state of flux, you're at risk of it changing without notice. +# 2.7.0 + +- **New Feature** + - `ReadonlyArray` + - add `functorArray` instance (@gcanti) + - add `functorWithIndexArray` instance (@gcanti) + - add `applyArray` instance (@gcanti) + - add `applicativeArray` instance (@gcanti) + - add `monadArray` instance (@gcanti) + - add `unfoldableArray` instance (@gcanti) + - add `altArray` instance (@gcanti) + - add `alternativeArray` instance (@gcanti) + - add `extendArray` instance (@gcanti) + - add `compactableArray` instance (@gcanti) + - add `filterableArray` instance (@gcanti) + - add `filterableWithIndexArray` instance (@gcanti) + - add `foldableArray` instance (@gcanti) + - add `foldableWithIndexArray` instance (@gcanti) + - add `traversableArray` instance (@gcanti) + - add `traversableWithIndexArray` instance (@gcanti) + - add `witherableArray` instance (@gcanti) + # 2.6.7 - **Polish** diff --git a/docs/modules/Array.ts.md b/docs/modules/Array.ts.md index 7c6b8b744..5e35ebc3d 100644 --- a/docs/modules/Array.ts.md +++ b/docs/modules/Array.ts.md @@ -55,6 +55,8 @@ Added in v2.0.0 - [traverse](#traverse) - [TraversableWithIndex](#traversablewithindex) - [traverseWithIndex](#traversewithindex) +- [Unfoldable](#unfoldable) + - [unfold](#unfold) - [Whitherable](#whitherable) - [wilt](#wilt) - [wither](#wither) @@ -128,7 +130,6 @@ Added in v2.0.0 - [lookup](#lookup) - [modifyAt](#modifyat) - [splitAt](#splitat) - - [unfold](#unfold) - [unzip](#unzip) - [updateAt](#updateat) @@ -501,6 +502,18 @@ export declare const traverseWithIndex: PipeableTraverseWithIndex1<'Array', numb Added in v2.6.3 +# Unfoldable + +## unfold + +**Signature** + +```ts +export declare const unfold: (b: B, f: (b: B) => Option) => A[] +``` + +Added in v2.6.6 + # Whitherable ## wilt @@ -1880,16 +1893,6 @@ assert.deepStrictEqual(splitAt(2)([1, 2, 3, 4, 5]), [ Added in v2.0.0 -## unfold - -**Signature** - -```ts -export declare const unfold: (b: B, f: (b: B) => Option) => A[] -``` - -Added in v2.6.6 - ## unzip The function is reverse of `zip`. Takes an array of pairs and return two corresponding arrays diff --git a/docs/modules/ReadonlyArray.ts.md b/docs/modules/ReadonlyArray.ts.md index 82f1710b5..bdc8fdaa2 100644 --- a/docs/modules/ReadonlyArray.ts.md +++ b/docs/modules/ReadonlyArray.ts.md @@ -55,6 +55,8 @@ Added in v2.5.0 - [traverse](#traverse) - [TraversableWithIndex](#traversablewithindex) - [traverseWithIndex](#traversewithindex) +- [Unfoldable](#unfoldable) + - [unfold](#unfold) - [Whitherable](#whitherable) - [wilt](#wilt) - [wither](#wither) @@ -94,11 +96,28 @@ Added in v2.5.0 - [instances](#instances) - [URI](#uri) - [URI (type alias)](#uri-type-alias) + - [altArray](#altarray) + - [alternativeArray](#alternativearray) + - [applicativeArray](#applicativearray) + - [applyArray](#applyarray) + - [compactableArray](#compactablearray) + - [extendArray](#extendarray) + - [filterableArray](#filterablearray) + - [filterableWithIndexArray](#filterablewithindexarray) + - [foldableArray](#foldablearray) + - [foldableWithIndexArray](#foldablewithindexarray) + - [functorArray](#functorarray) + - [functorWithIndexArray](#functorwithindexarray) - [getEq](#geteq) - [getMonoid](#getmonoid) - [getOrd](#getord) - [getShow](#getshow) + - [monadArray](#monadarray) - [readonlyArray](#readonlyarray) + - [traversableArray](#traversablearray) + - [traversableWithIndexArray](#traversablewithindexarray) + - [unfoldableArray](#unfoldablearray) + - [witherableArray](#witherablearray) - [unsafe](#unsafe) - [unsafeDeleteAt](#unsafedeleteat) - [unsafeInsertAt](#unsafeinsertat) @@ -130,7 +149,6 @@ Added in v2.5.0 - [splitAt](#splitat) - [tail](#tail) - [takeRight](#takeright) - - [unfold](#unfold) - [unzip](#unzip) - [updateAt](#updateat) @@ -507,6 +525,18 @@ export declare const traverseWithIndex: PipeableTraverseWithIndex1<'ReadonlyArra Added in v2.6.3 +# Unfoldable + +## unfold + +**Signature** + +```ts +export declare const unfold: (b: B, f: (b: B) => Option) => readonly A[] +``` + +Added in v2.6.6 + # Whitherable ## wilt @@ -1192,6 +1222,126 @@ export type URI = typeof URI Added in v2.5.0 +## altArray + +**Signature** + +```ts +export declare const altArray: Alt1<'ReadonlyArray'> +``` + +Added in v2.7.0 + +## alternativeArray + +**Signature** + +```ts +export declare const alternativeArray: Alternative1<'ReadonlyArray'> +``` + +Added in v2.7.0 + +## applicativeArray + +**Signature** + +```ts +export declare const applicativeArray: Applicative1<'ReadonlyArray'> +``` + +Added in v2.7.0 + +## applyArray + +**Signature** + +```ts +export declare const applyArray: Apply1<'ReadonlyArray'> +``` + +Added in v2.7.0 + +## compactableArray + +**Signature** + +```ts +export declare const compactableArray: Compactable1<'ReadonlyArray'> +``` + +Added in v2.7.0 + +## extendArray + +**Signature** + +```ts +export declare const extendArray: Extend1<'ReadonlyArray'> +``` + +Added in v2.7.0 + +## filterableArray + +**Signature** + +```ts +export declare const filterableArray: Filterable1<'ReadonlyArray'> +``` + +Added in v2.7.0 + +## filterableWithIndexArray + +**Signature** + +```ts +export declare const filterableWithIndexArray: FilterableWithIndex1<'ReadonlyArray', number> +``` + +Added in v2.7.0 + +## foldableArray + +**Signature** + +```ts +export declare const foldableArray: Foldable1<'ReadonlyArray'> +``` + +Added in v2.7.0 + +## foldableWithIndexArray + +**Signature** + +```ts +export declare const foldableWithIndexArray: FoldableWithIndex1<'ReadonlyArray', number> +``` + +Added in v2.7.0 + +## functorArray + +**Signature** + +```ts +export declare const functorArray: Functor1<'ReadonlyArray'> +``` + +Added in v2.7.0 + +## functorWithIndexArray + +**Signature** + +```ts +export declare const functorWithIndexArray: FunctorWithIndex1<'ReadonlyArray', number> +``` + +Added in v2.7.0 + ## getEq Derives an `Eq` over the `ReadonlyArray` of a given element type from the `Eq` of that type. The derived `Eq` defines two @@ -1275,25 +1425,75 @@ export declare function getShow(S: Show): Show> Added in v2.5.0 +## monadArray + +**Signature** + +```ts +export declare const monadArray: Monad1<'ReadonlyArray'> +``` + +Added in v2.7.0 + ## readonlyArray **Signature** ```ts -export declare const readonlyArray: Monad1<'ReadonlyArray'> & +export declare const readonlyArray: FunctorWithIndex1<'ReadonlyArray', number> & + Monad1<'ReadonlyArray'> & Unfoldable1<'ReadonlyArray'> & - TraversableWithIndex1<'ReadonlyArray', number> & Alternative1<'ReadonlyArray'> & Extend1<'ReadonlyArray'> & Compactable1<'ReadonlyArray'> & FilterableWithIndex1<'ReadonlyArray', number> & - Witherable1<'ReadonlyArray'> & - FunctorWithIndex1<'ReadonlyArray', number> & - FoldableWithIndex1<'ReadonlyArray', number> + FoldableWithIndex1<'ReadonlyArray', number> & + TraversableWithIndex1<'ReadonlyArray', number> & + Witherable1<'ReadonlyArray'> ``` Added in v2.5.0 +## traversableArray + +**Signature** + +```ts +export declare const traversableArray: Traversable1<'ReadonlyArray'> +``` + +Added in v2.7.0 + +## traversableWithIndexArray + +**Signature** + +```ts +export declare const traversableWithIndexArray: TraversableWithIndex1<'ReadonlyArray', number> +``` + +Added in v2.7.0 + +## unfoldableArray + +**Signature** + +```ts +export declare const unfoldableArray: Unfoldable1<'ReadonlyArray'> +``` + +Added in v2.7.0 + +## witherableArray + +**Signature** + +```ts +export declare const witherableArray: Witherable1<'ReadonlyArray'> +``` + +Added in v2.7.0 + # unsafe ## unsafeDeleteAt @@ -1951,16 +2151,6 @@ assert.deepStrictEqual(takeRight(2)([1, 2, 3, 4, 5]), [4, 5]) Added in v2.5.0 -## unfold - -**Signature** - -```ts -export declare const unfold: (b: B, f: (b: B) => Option) => readonly A[] -``` - -Added in v2.6.6 - ## unzip The function is reverse of `zip`. Takes an array of pairs and return two corresponding arrays diff --git a/package.json b/package.json index bcc45bbde..fea09449f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fp-ts", - "version": "2.6.7", + "version": "2.7.0", "description": "Functional programming in TypeScript", "files": [ "lib", diff --git a/src/Array.ts b/src/Array.ts index fb3b4c6cd..d47a88641 100644 --- a/src/Array.ts +++ b/src/Array.ts @@ -1168,28 +1168,6 @@ export const reduceRight: (b: B, f: (a: A, b: B) => B) => (fa: Array) = export const reduceRightWithIndex: (b: B, f: (i: number, a: A, b: B) => B) => (fa: Array) => B = RA.reduceRightWithIndex -// ------------------------------------------------------------------------------------- -// instances -// ------------------------------------------------------------------------------------- - -/** - * @category instances - * @since 2.0.0 - */ -export const URI = 'Array' - -/** - * @category instances - * @since 2.0.0 - */ -export type URI = typeof URI - -declare module './HKT' { - interface URItoKind { - readonly [URI]: Array - } -} - /** * @category Traversable * @since 2.6.3 @@ -1221,10 +1199,33 @@ export const wither: PipeableWither1 = RA.wither as any export const wilt: PipeableWilt1 = RA.wilt as any /** + * @category Unfoldable * @since 2.6.6 */ export const unfold: (b: B, f: (b: B) => Option) => Array = RA.unfold as any +// ------------------------------------------------------------------------------------- +// instances +// ------------------------------------------------------------------------------------- + +/** + * @category instances + * @since 2.0.0 + */ +export const URI = 'Array' + +/** + * @category instances + * @since 2.0.0 + */ +export type URI = typeof URI + +declare module './HKT' { + interface URItoKind { + readonly [URI]: Array + } +} + /** * @category instances * @since 2.0.0 @@ -1242,6 +1243,7 @@ export const array: Monad1 & FoldableWithIndex1 = /*#__PURE__*/ (() => { + // tslint:disable-next-line: deprecation return Object.assign({}, RA.readonlyArray as any, { URI }) })() diff --git a/src/ReadonlyArray.ts b/src/ReadonlyArray.ts index 3cc7f4b40..028466f35 100644 --- a/src/ReadonlyArray.ts +++ b/src/ReadonlyArray.ts @@ -1,21 +1,25 @@ /** * @since 2.5.0 */ +import { Alt1 } from './Alt' import { Alternative1 } from './Alternative' -import { Applicative } from './Applicative' +import { Applicative, Applicative1 } from './Applicative' +import { Apply1 } from './Apply' import { Compactable1, Separated } from './Compactable' import { Either } from './Either' import { Eq } from './Eq' import { Extend1 } from './Extend' -import { Filter1, Partition1 } from './Filterable' +import { Filter1, Filterable1, Partition1 } from './Filterable' import { FilterableWithIndex1, PartitionWithIndex1, PredicateWithIndex, RefinementWithIndex } from './FilterableWithIndex' +import { Foldable1 } from './Foldable' import { FoldableWithIndex1 } from './FoldableWithIndex' import { identity, Lazy, Predicate, Refinement } from './function' +import { Functor1 } from './Functor' import { FunctorWithIndex1 } from './FunctorWithIndex' import { HKT } from './HKT' import { Monad1 } from './Monad' @@ -1851,28 +1855,6 @@ export const reduceRightWithIndex: (b: B, f: (i: number, a: A, b: B) => B) f ) => (fa) => reduceRightWithIndex_(fa, b, f) -// ------------------------------------------------------------------------------------- -// instances -// ------------------------------------------------------------------------------------- - -/** - * @category instances - * @since 2.5.0 - */ -export const URI = 'ReadonlyArray' - -/** - * @category instances - * @since 2.5.0 - */ -export type URI = typeof URI - -declare module './HKT' { - interface URItoKind { - readonly [URI]: ReadonlyArray - } -} - /** * @category Traversable * @since 2.6.3 @@ -1935,6 +1917,7 @@ export const wilt: PipeableWilt1 = ( } /** + * @category Unfoldable * @since 2.6.6 */ export const unfold = (b: B, f: (b: B) => Option): ReadonlyArray => { @@ -1954,20 +1937,261 @@ export const unfold = (b: B, f: (b: B) => Option): Readon return ret } +// ------------------------------------------------------------------------------------- +// instances +// ------------------------------------------------------------------------------------- + +/** + * @category instances + * @since 2.5.0 + */ +export const URI = 'ReadonlyArray' + /** * @category instances * @since 2.5.0 */ -export const readonlyArray: Monad1 & +export type URI = typeof URI + +declare module './HKT' { + interface URItoKind { + readonly [URI]: ReadonlyArray + } +} + +/** + * @category instances + * @since 2.7.0 + */ +export const functorArray: Functor1 = { + URI, + map: map_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const functorWithIndexArray: FunctorWithIndex1 = { + URI, + map: map_, + mapWithIndex: mapWithIndex_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const applyArray: Apply1 = { + URI, + map: map_, + ap: ap_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const applicativeArray: Applicative1 = { + URI, + map: map_, + ap: ap_, + of +} + +/** + * @category instances + * @since 2.7.0 + */ +export const monadArray: Monad1 = { + URI, + map: map_, + ap: ap_, + of, + chain: chain_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const unfoldableArray: Unfoldable1 = { + URI, + unfold +} + +/** + * @category instances + * @since 2.7.0 + */ +export const altArray: Alt1 = { + URI, + map: map_, + alt: alt_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const alternativeArray: Alternative1 = { + URI, + map: map_, + ap: ap_, + of, + alt: alt_, + zero: zero_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const extendArray: Extend1 = { + URI, + map: map_, + extend: extend_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const compactableArray: Compactable1 = { + URI, + compact, + separate +} + +/** + * @category instances + * @since 2.7.0 + */ +export const filterableArray: Filterable1 = { + URI, + map: map_, + compact, + separate, + filter: filter_, + filterMap: filterMap_, + partition: partition_, + partitionMap: partitionMap_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const filterableWithIndexArray: FilterableWithIndex1 = { + URI, + map: map_, + mapWithIndex: mapWithIndex_, + compact, + separate, + filter: filter_, + filterMap: filterMap_, + partition: partition_, + partitionMap: partitionMap_, + partitionMapWithIndex: partitionMapWithIndex_, + partitionWithIndex: partitionWithIndex_, + filterMapWithIndex: filterMapWithIndex_, + filterWithIndex: filterWithIndex_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const foldableArray: Foldable1 = { + URI, + reduce: reduce_, + foldMap: foldMap_, + reduceRight: reduceRight_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const foldableWithIndexArray: FoldableWithIndex1 = { + URI, + reduce: reduce_, + foldMap: foldMap_, + reduceRight: reduceRight_, + reduceWithIndex: reduceWithIndex_, + foldMapWithIndex: foldMapWithIndex_, + reduceRightWithIndex: reduceRightWithIndex_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const traversableArray: Traversable1 = { + URI, + map: map_, + reduce: reduce_, + foldMap: foldMap_, + reduceRight: reduceRight_, + traverse: traverse_, + sequence +} + +/** + * @category instances + * @since 2.7.0 + */ +export const traversableWithIndexArray: TraversableWithIndex1 = { + URI, + map: map_, + mapWithIndex: mapWithIndex_, + reduce: reduce_, + foldMap: foldMap_, + reduceRight: reduceRight_, + reduceWithIndex: reduceWithIndex_, + foldMapWithIndex: foldMapWithIndex_, + reduceRightWithIndex: reduceRightWithIndex_, + traverse: traverse_, + sequence, + traverseWithIndex: traverseWithIndex_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const witherableArray: Witherable1 = { + URI, + map: map_, + compact, + separate, + filter: filter_, + filterMap: filterMap_, + partition: partition_, + partitionMap: partitionMap_, + reduce: reduce_, + foldMap: foldMap_, + reduceRight: reduceRight_, + traverse: traverse_, + sequence, + wither: wither_, + wilt: wilt_ +} + +/** + * @category instances + * @since 2.5.0 + */ +export const readonlyArray: FunctorWithIndex1 & + Monad1 & Unfoldable1 & - TraversableWithIndex1 & Alternative1 & Extend1 & Compactable1 & FilterableWithIndex1 & - Witherable1 & - FunctorWithIndex1 & - FoldableWithIndex1 = { + FoldableWithIndex1 & + TraversableWithIndex1 & + Witherable1 = { URI, compact, separate, diff --git a/src/ReadonlyNonEmptyArray.ts b/src/ReadonlyNonEmptyArray.ts index 603253791..bd65bafa4 100644 --- a/src/ReadonlyNonEmptyArray.ts +++ b/src/ReadonlyNonEmptyArray.ts @@ -565,19 +565,33 @@ export const readonlyNonEmptyArray: Monad1 & URI, of, extract: head, + // tslint:disable-next-line: deprecation map: RA.readonlyArray.map as any, + // tslint:disable-next-line: deprecation mapWithIndex: RA.readonlyArray.mapWithIndex as any, + // tslint:disable-next-line: deprecation ap: RA.readonlyArray.ap as any, + // tslint:disable-next-line: deprecation chain: RA.readonlyArray.chain as any, + // tslint:disable-next-line: deprecation extend: RA.readonlyArray.extend as any, + // tslint:disable-next-line: deprecation reduce: RA.readonlyArray.reduce, + // tslint:disable-next-line: deprecation foldMap: RA.readonlyArray.foldMap, + // tslint:disable-next-line: deprecation reduceRight: RA.readonlyArray.reduceRight, + // tslint:disable-next-line: deprecation traverse: RA.readonlyArray.traverse as any, sequence, + // tslint:disable-next-line: deprecation reduceWithIndex: RA.readonlyArray.reduceWithIndex, + // tslint:disable-next-line: deprecation foldMapWithIndex: RA.readonlyArray.foldMapWithIndex, + // tslint:disable-next-line: deprecation reduceRightWithIndex: RA.readonlyArray.reduceRightWithIndex, + // tslint:disable-next-line: deprecation traverseWithIndex: RA.readonlyArray.traverseWithIndex as any, + // tslint:disable-next-line: deprecation alt: RA.readonlyArray.alt as any } diff --git a/test/Apply.ts b/test/Apply.ts index 2b3647fe6..de48a2691 100644 --- a/test/Apply.ts +++ b/test/Apply.ts @@ -1,6 +1,6 @@ import * as assert from 'assert' import { sequenceS, sequenceT } from '../src/Apply' -import { readonlyArray, getMonoid } from '../src/ReadonlyArray' +import * as A from '../src/ReadonlyArray' import { either, getValidation, left, right } from '../src/Either' import { none, option, some } from '../src/Option' import { pipe } from '../src/function' @@ -17,7 +17,7 @@ describe('Apply', () => { const a2: ReadonlyArray = ['a', 'b', 'c'] const a3: ReadonlyArray = [true, false] assert.deepStrictEqual( - pipe(sequenceT(readonlyArray)(a1, a2, a3), (arr) => arr.map(([x, y, z]) => `(${x}, ${y}, ${z})`)), + pipe(sequenceT(A.applyArray)(a1, a2, a3), (arr) => arr.map(([x, y, z]) => `(${x}, ${y}, ${z})`)), [ '(1, a, true)', '(1, a, false)', @@ -52,7 +52,7 @@ describe('Apply', () => { assert.deepStrictEqual(adoEither({ a: right(1), b: right(2) }), right({ a: 1, b: 2 })) assert.deepStrictEqual(adoEither({ a: right(1), b: left('error') }), left('error')) - const adoValidation = sequenceS(getValidation(getMonoid())) + const adoValidation = sequenceS(getValidation(A.getMonoid())) assert.deepStrictEqual(adoValidation({ a: right(1) }), right({ a: 1 })) assert.deepStrictEqual(adoValidation({ a: right(1), b: right(2) }), right({ a: 1, b: 2 })) assert.deepStrictEqual(adoValidation({ a: right(1), b: left(['error']) }), left(['error'])) @@ -63,7 +63,7 @@ describe('Apply', () => { const a2: ReadonlyArray = ['a', 'b', 'c'] const a3: ReadonlyArray = [true, false] assert.deepStrictEqual( - pipe(sequenceS(readonlyArray)({ a1, a2, a3 }), (arr) => arr.map(({ a1, a2, a3 }) => `(${a1}, ${a2}, ${a3})`)), + pipe(sequenceS(A.applyArray)({ a1, a2, a3 }), (arr) => arr.map(({ a1, a2, a3 }) => `(${a1}, ${a2}, ${a3})`)), [ '(1, a, true)', '(1, a, false)', diff --git a/test/FoldableWithIndex.ts b/test/FoldableWithIndex.ts index 0af0b025c..283b1ae8f 100644 --- a/test/FoldableWithIndex.ts +++ b/test/FoldableWithIndex.ts @@ -1,11 +1,11 @@ import * as assert from 'assert' -import { readonlyArray } from '../src/ReadonlyArray' +import * as A from '../src/ReadonlyArray' import { getFoldableWithIndexComposition } from '../src/FoldableWithIndex' import { monoidString } from '../src/Monoid' describe('FoldableWithIndex', () => { it('getFoldableWithIndexComposition', () => { - const arrayOfArray = getFoldableWithIndexComposition(readonlyArray, readonlyArray) + const arrayOfArray = getFoldableWithIndexComposition(A.foldableWithIndexArray, A.foldableWithIndexArray) const fa: ReadonlyArray> = [ ['a', 'b'], ['c', 'd'] diff --git a/test/ReadonlyArray.ts b/test/ReadonlyArray.ts index 5d36b79d0..405cc44e4 100644 --- a/test/ReadonlyArray.ts +++ b/test/ReadonlyArray.ts @@ -903,7 +903,7 @@ describe('ReadonlyArray', () => { readonly bar: () => number } const f = (a: number, x?: Foo) => (x !== undefined ? `${a}${x.bar()}` : `${a}`) - assert.deepStrictEqual(_.readonlyArray.map([1, 2], f), ['1', '2']) + assert.deepStrictEqual(_.functorArray.map([1, 2], f), ['1', '2']) assert.deepStrictEqual(pipe([1, 2], _.map(f)), ['1', '2']) }) diff --git a/test/ReadonlyRecord.ts b/test/ReadonlyRecord.ts index 7b42ca9a6..e27b21530 100644 --- a/test/ReadonlyRecord.ts +++ b/test/ReadonlyRecord.ts @@ -5,7 +5,7 @@ import { identity, pipe } from '../src/function' import * as IO from '../src/IO' import { monoidString } from '../src/Monoid' import { isSome, none, option, Option, some } from '../src/Option' -import { readonlyArray, zip } from '../src/ReadonlyArray' +import * as A from '../src/ReadonlyArray' import * as _ from '../src/ReadonlyRecord' import { getFirstSemigroup, getLastSemigroup, semigroupSum } from '../src/Semigroup' import { showString } from '../src/Show' @@ -252,11 +252,11 @@ describe('ReadonlyRecord', () => { it('fromFoldable', () => { const First = getFirstSemigroup() - assert.deepStrictEqual(_.fromFoldable(First, readonlyArray)([['a', 1]]), { a: 1 }) + assert.deepStrictEqual(_.fromFoldable(First, A.foldableArray)([['a', 1]]), { a: 1 }) assert.deepStrictEqual( _.fromFoldable( First, - readonlyArray + A.foldableArray )([ ['a', 1], ['a', 2] @@ -269,7 +269,7 @@ describe('ReadonlyRecord', () => { assert.deepStrictEqual( _.fromFoldable( Last, - readonlyArray + A.foldableArray )([ ['a', 1], ['a', 2] @@ -292,7 +292,7 @@ describe('ReadonlyRecord', () => { }) it('toUnfoldable', () => { - assert.deepStrictEqual(_.toUnfoldable(readonlyArray)({ a: 1 }), [['a', 1]]) + assert.deepStrictEqual(_.toUnfoldable(A.unfoldableArray)({ a: 1 }), [['a', 1]]) }) it('traverseWithIndex should sort the keys', () => { @@ -364,7 +364,7 @@ describe('ReadonlyRecord', () => { it('fromFoldableMap', () => { const zipObject = (keys: ReadonlyArray, values: ReadonlyArray): _.ReadonlyRecord => - _.fromFoldableMap(getLastSemigroup(), readonlyArray)(zip(keys, values), identity) + _.fromFoldableMap(getLastSemigroup(), A.foldableArray)(A.zip(keys, values), identity) assert.deepStrictEqual(zipObject(['a', 'b'], [1, 2, 3]), { a: 1, b: 2 }) @@ -380,7 +380,7 @@ describe('ReadonlyRecord', () => { ] assert.deepStrictEqual( - _.fromFoldableMap(getLastSemigroup(), readonlyArray)(users, (user) => [user.id, user]), + _.fromFoldableMap(getLastSemigroup(), A.foldableArray)(users, (user) => [user.id, user]), { id1: { id: 'id1', name: 'name3' }, id2: { id: 'id2', name: 'name2' } diff --git a/test/Record.ts b/test/Record.ts index 68e3af98c..af1cd7123 100644 --- a/test/Record.ts +++ b/test/Record.ts @@ -4,7 +4,7 @@ import { eqNumber } from '../src/Eq' import { identity, pipe } from '../src/function' import { monoidString } from '../src/Monoid' import { isSome, none, option, Option, some } from '../src/Option' -import { readonlyArray, zip } from '../src/ReadonlyArray' +import * as A from '../src/ReadonlyArray' import * as _ from '../src/Record' import { getFirstSemigroup, getLastSemigroup, semigroupSum } from '../src/Semigroup' import { showString } from '../src/Show' @@ -119,11 +119,11 @@ describe('Record', () => { it('fromFoldable', () => { const First = getFirstSemigroup() - assert.deepStrictEqual(_.fromFoldable(First, readonlyArray)([['a', 1]]), { a: 1 }) + assert.deepStrictEqual(_.fromFoldable(First, A.foldableArray)([['a', 1]]), { a: 1 }) assert.deepStrictEqual( _.fromFoldable( First, - readonlyArray + A.foldableArray )([ ['a', 1], ['a', 2] @@ -136,7 +136,7 @@ describe('Record', () => { assert.deepStrictEqual( _.fromFoldable( Last, - readonlyArray + A.foldableArray )([ ['a', 1], ['a', 2] @@ -159,7 +159,7 @@ describe('Record', () => { }) it('toUnfoldable', () => { - assert.deepStrictEqual(_.toUnfoldable(readonlyArray)({ a: 1 }), [['a', 1]]) + assert.deepStrictEqual(_.toUnfoldable(A.unfoldableArray)({ a: 1 }), [['a', 1]]) }) it('size', () => { @@ -289,7 +289,7 @@ describe('Record', () => { it('fromFoldableMap', () => { const zipObject = (keys: ReadonlyArray, values: ReadonlyArray): Record => - _.fromFoldableMap(getLastSemigroup(), readonlyArray)(zip(keys, values), ([k, a]) => [k, a]) + _.fromFoldableMap(getLastSemigroup(), A.foldableArray)(A.zip(keys, values), ([k, a]) => [k, a]) assert.deepStrictEqual(zipObject(['a', 'b'], [1, 2, 3]), { a: 1, b: 2 }) @@ -305,7 +305,7 @@ describe('Record', () => { ] assert.deepStrictEqual( - _.fromFoldableMap(getLastSemigroup(), readonlyArray)(users, (user) => [user.id, user]), + _.fromFoldableMap(getLastSemigroup(), A.foldableArray)(users, (user) => [user.id, user]), { id1: { id: 'id1', name: 'name3' }, id2: { id: 'id2', name: 'name2' } From 387cd4aaf947a7eb44780cdf5b65e8a9a1ec635e Mon Sep 17 00:00:00 2001 From: gcanti Date: Wed, 17 Jun 2020 07:21:17 +0200 Subject: [PATCH 045/106] split `array` mega instance --- CHANGELOG.md | 18 ++ docs/modules/Array.ts.md | 199 +++++++++++++++++++- docs/modules/ReadonlyArray.ts.md | 1 - src/Array.ts | 306 +++++++++++++++++++++++++++++-- src/ReadonlyArray.ts | 1 - test/Applicative.ts | 4 +- test/Array.ts | 2 +- test/Compactable.ts | 4 +- test/Filterable.ts | 4 +- test/Foldable.ts | 14 +- test/Functor.ts | 4 +- test/FunctorWithIndex.ts | 4 +- test/Map.ts | 10 +- test/Monoid.ts | 12 +- test/Option.ts | 10 +- test/ReadonlyMap.ts | 10 +- test/Store.ts | 4 +- test/Traversable.ts | 4 +- test/pipeable.ts | 24 +-- 19 files changed, 561 insertions(+), 74 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 95cc77165..05e601034 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,24 @@ high state of flux, you're at risk of it changing without notice. # 2.7.0 - **New Feature** + - `Array` + - add `functorArray` instance (@gcanti) + - add `functorWithIndexArray` instance (@gcanti) + - add `applyArray` instance (@gcanti) + - add `applicativeArray` instance (@gcanti) + - add `monadArray` instance (@gcanti) + - add `unfoldableArray` instance (@gcanti) + - add `altArray` instance (@gcanti) + - add `alternativeArray` instance (@gcanti) + - add `extendArray` instance (@gcanti) + - add `compactableArray` instance (@gcanti) + - add `filterableArray` instance (@gcanti) + - add `filterableWithIndexArray` instance (@gcanti) + - add `foldableArray` instance (@gcanti) + - add `foldableWithIndexArray` instance (@gcanti) + - add `traversableArray` instance (@gcanti) + - add `traversableWithIndexArray` instance (@gcanti) + - add `witherableArray` instance (@gcanti) - `ReadonlyArray` - add `functorArray` instance (@gcanti) - add `functorWithIndexArray` instance (@gcanti) diff --git a/docs/modules/Array.ts.md b/docs/modules/Array.ts.md index 5e35ebc3d..3e44d2248 100644 --- a/docs/modules/Array.ts.md +++ b/docs/modules/Array.ts.md @@ -107,11 +107,28 @@ Added in v2.0.0 - [instances](#instances) - [URI](#uri) - [URI (type alias)](#uri-type-alias) + - [altArray](#altarray) + - [alternativeArray](#alternativearray) + - [applicativeArray](#applicativearray) + - [applyArray](#applyarray) - [array](#array) + - [compactableArray](#compactablearray) + - [extendArray](#extendarray) + - [filterableArray](#filterablearray) + - [filterableWithIndexArray](#filterablewithindexarray) + - [foldableArray](#foldablearray) + - [foldableWithIndexArray](#foldablewithindexarray) + - [functorArray](#functorarray) + - [functorWithIndexArray](#functorwithindexarray) - [getEq](#geteq) - [getMonoid](#getmonoid) - [getOrd](#getord) - [getShow](#getshow) + - [monadArray](#monadarray) + - [traversableArray](#traversablearray) + - [traversableWithIndexArray](#traversablewithindexarray) + - [unfoldableArray](#unfoldablearray) + - [witherableArray](#witherablearray) - [unsafe](#unsafe) - [unsafeDeleteAt](#unsafedeleteat) - [unsafeInsertAt](#unsafeinsertat) @@ -1438,26 +1455,144 @@ export type URI = typeof URI Added in v2.0.0 +## altArray + +**Signature** + +```ts +export declare const altArray: Alt1<'Array'> +``` + +Added in v2.7.0 + +## alternativeArray + +**Signature** + +```ts +export declare const alternativeArray: Alternative1<'Array'> +``` + +Added in v2.7.0 + +## applicativeArray + +**Signature** + +```ts +export declare const applicativeArray: Applicative1<'Array'> +``` + +Added in v2.7.0 + +## applyArray + +**Signature** + +```ts +export declare const applyArray: Apply1<'Array'> +``` + +Added in v2.7.0 + ## array **Signature** ```ts -export declare const array: Monad1<'Array'> & - Foldable1<'Array'> & +export declare const array: FunctorWithIndex1<'Array', number> & + Monad1<'Array'> & Unfoldable1<'Array'> & - TraversableWithIndex1<'Array', number> & Alternative1<'Array'> & Extend1<'Array'> & - Compactable1<'Array'> & FilterableWithIndex1<'Array', number> & - Witherable1<'Array'> & - FunctorWithIndex1<'Array', number> & - FoldableWithIndex1<'Array', number> + FoldableWithIndex1<'Array', number> & + TraversableWithIndex1<'Array', number> & + Witherable1<'Array'> ``` Added in v2.0.0 +## compactableArray + +**Signature** + +```ts +export declare const compactableArray: Compactable1<'Array'> +``` + +Added in v2.7.0 + +## extendArray + +**Signature** + +```ts +export declare const extendArray: Extend1<'Array'> +``` + +Added in v2.7.0 + +## filterableArray + +**Signature** + +```ts +export declare const filterableArray: Filterable1<'Array'> +``` + +Added in v2.7.0 + +## filterableWithIndexArray + +**Signature** + +```ts +export declare const filterableWithIndexArray: FilterableWithIndex1<'Array', number> +``` + +Added in v2.7.0 + +## foldableArray + +**Signature** + +```ts +export declare const foldableArray: Foldable1<'Array'> +``` + +Added in v2.7.0 + +## foldableWithIndexArray + +**Signature** + +```ts +export declare const foldableWithIndexArray: FoldableWithIndex1<'Array', number> +``` + +Added in v2.7.0 + +## functorArray + +**Signature** + +```ts +export declare const functorArray: Functor1<'Array'> +``` + +Added in v2.7.0 + +## functorWithIndexArray + +**Signature** + +```ts +export declare const functorWithIndexArray: FunctorWithIndex1<'Array', number> +``` + +Added in v2.7.0 + ## getEq Derives an `Eq` over the `Array` of a given element type from the `Eq` of that type. The derived `Eq` defines two @@ -1541,6 +1676,56 @@ export declare const getShow: (S: Show) => Show Added in v2.0.0 +## monadArray + +**Signature** + +```ts +export declare const monadArray: Monad1<'Array'> +``` + +Added in v2.7.0 + +## traversableArray + +**Signature** + +```ts +export declare const traversableArray: Traversable1<'Array'> +``` + +Added in v2.7.0 + +## traversableWithIndexArray + +**Signature** + +```ts +export declare const traversableWithIndexArray: TraversableWithIndex1<'Array', number> +``` + +Added in v2.7.0 + +## unfoldableArray + +**Signature** + +```ts +export declare const unfoldableArray: Unfoldable1<'Array'> +``` + +Added in v2.7.0 + +## witherableArray + +**Signature** + +```ts +export declare const witherableArray: Witherable1<'Array'> +``` + +Added in v2.7.0 + # unsafe ## unsafeDeleteAt diff --git a/docs/modules/ReadonlyArray.ts.md b/docs/modules/ReadonlyArray.ts.md index bdc8fdaa2..6c6dbc8a6 100644 --- a/docs/modules/ReadonlyArray.ts.md +++ b/docs/modules/ReadonlyArray.ts.md @@ -1445,7 +1445,6 @@ export declare const readonlyArray: FunctorWithIndex1<'ReadonlyArray', number> & Unfoldable1<'ReadonlyArray'> & Alternative1<'ReadonlyArray'> & Extend1<'ReadonlyArray'> & - Compactable1<'ReadonlyArray'> & FilterableWithIndex1<'ReadonlyArray', number> & FoldableWithIndex1<'ReadonlyArray', number> & TraversableWithIndex1<'ReadonlyArray', number> & diff --git a/src/Array.ts b/src/Array.ts index d47a88641..f16e3dc07 100644 --- a/src/Array.ts +++ b/src/Array.ts @@ -1,15 +1,20 @@ /** * @since 2.0.0 */ +import { Alt1 } from './Alt' import { Alternative1 } from './Alternative' +import { Applicative1 } from './Applicative' +import { Apply1 } from './Apply' import { Compactable1, Separated } from './Compactable' import { Either } from './Either' import { Eq } from './Eq' import { Extend1 } from './Extend' +import { Filterable1 } from './Filterable' import { FilterableWithIndex1, PredicateWithIndex, RefinementWithIndex } from './FilterableWithIndex' import { Foldable1 } from './Foldable' import { FoldableWithIndex1 } from './FoldableWithIndex' import { Lazy, Predicate, Refinement } from './function' +import { Functor1 } from './Functor' import { FunctorWithIndex1 } from './FunctorWithIndex' import { Monad1 } from './Monad' import { Monoid } from './Monoid' @@ -1208,6 +1213,39 @@ export const unfold: (b: B, f: (b: B) => Option) => Array // instances // ------------------------------------------------------------------------------------- +const map_: Functor1['map'] = RA.monadArray.map as any +const ap_: Apply1['ap'] = RA.monadArray.ap as any +const chain_: Monad1['chain'] = RA.monadArray.chain as any +const mapWithIndex_: FunctorWithIndex1['mapWithIndex'] = RA.functorWithIndexArray.mapWithIndex as any +const filter_: Filterable1['filter'] = RA.filterableArray.filter as any +const filterMap_: Filterable1['filterMap'] = RA.filterableArray.filterMap as any +const partition_: Filterable1['partition'] = RA.filterableArray.partition as any +const partitionMap_: Filterable1['partitionMap'] = RA.filterableArray.partitionMap as any +const filterWithIndex_: FilterableWithIndex1['filterWithIndex'] = RA.filterableWithIndexArray + .filterWithIndex as any +const filterMapWithIndex_: FilterableWithIndex1['filterMapWithIndex'] = RA.filterableWithIndexArray + .filterMapWithIndex as any +const partitionWithIndex_: FilterableWithIndex1['partitionWithIndex'] = RA.filterableWithIndexArray + .partitionWithIndex as any +const partitionMapWithIndex_: FilterableWithIndex1['partitionMapWithIndex'] = RA.filterableWithIndexArray + .partitionMapWithIndex as any +const reduce_: Foldable1['reduce'] = RA.foldableArray.reduce +const foldMap_: Foldable1['foldMap'] = RA.foldableArray.foldMap +const reduceRight_: Foldable1['reduceRight'] = RA.foldableArray.reduceRight +const traverse_: Traversable1['traverse'] = RA.traversableArray.traverse as any +const alt_: Alternative1['alt'] = RA.alternativeArray.alt as any +const zero_: Alternative1['zero'] = RA.alternativeArray.zero as any +const reduceWithIndex_: FoldableWithIndex1['reduceWithIndex'] = RA.foldableWithIndexArray.reduceWithIndex +const foldMapWithIndex_: FoldableWithIndex1['foldMapWithIndex'] = + RA.foldableWithIndexArray.foldMapWithIndex +const reduceRightWithIndex_: FoldableWithIndex1['reduceRightWithIndex'] = + RA.foldableWithIndexArray.reduceRightWithIndex +const traverseWithIndex_: TraversableWithIndex1['traverseWithIndex'] = RA.traversableWithIndexArray + .traverseWithIndex as any +const extend_: Extend1['extend'] = RA.extendArray.extend as any +const wither_: Witherable1['wither'] = RA.witherableArray.wither as any +const wilt_: Witherable1['wilt'] = RA.witherableArray.wilt as any + /** * @category instances * @since 2.0.0 @@ -1226,26 +1264,270 @@ declare module './HKT' { } } +/** + * @category instances + * @since 2.7.0 + */ +export const functorArray: Functor1 = { + URI, + map: map_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const functorWithIndexArray: FunctorWithIndex1 = { + URI, + map: map_, + mapWithIndex: mapWithIndex_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const applyArray: Apply1 = { + URI, + map: map_, + ap: ap_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const applicativeArray: Applicative1 = { + URI, + map: map_, + ap: ap_, + of +} + +/** + * @category instances + * @since 2.7.0 + */ +export const monadArray: Monad1 = { + URI, + map: map_, + ap: ap_, + of, + chain: chain_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const unfoldableArray: Unfoldable1 = { + URI, + unfold +} + +/** + * @category instances + * @since 2.7.0 + */ +export const altArray: Alt1 = { + URI, + map: map_, + alt: alt_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const alternativeArray: Alternative1 = { + URI, + map: map_, + ap: ap_, + of, + alt: alt_, + zero: zero_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const extendArray: Extend1 = { + URI, + map: map_, + extend: extend_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const compactableArray: Compactable1 = { + URI, + compact, + separate +} + +/** + * @category instances + * @since 2.7.0 + */ +export const filterableArray: Filterable1 = { + URI, + map: map_, + compact, + separate, + filter: filter_, + filterMap: filterMap_, + partition: partition_, + partitionMap: partitionMap_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const filterableWithIndexArray: FilterableWithIndex1 = { + URI, + map: map_, + mapWithIndex: mapWithIndex_, + compact, + separate, + filter: filter_, + filterMap: filterMap_, + partition: partition_, + partitionMap: partitionMap_, + partitionMapWithIndex: partitionMapWithIndex_, + partitionWithIndex: partitionWithIndex_, + filterMapWithIndex: filterMapWithIndex_, + filterWithIndex: filterWithIndex_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const foldableArray: Foldable1 = { + URI, + reduce: reduce_, + foldMap: foldMap_, + reduceRight: reduceRight_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const foldableWithIndexArray: FoldableWithIndex1 = { + URI, + reduce: reduce_, + foldMap: foldMap_, + reduceRight: reduceRight_, + reduceWithIndex: reduceWithIndex_, + foldMapWithIndex: foldMapWithIndex_, + reduceRightWithIndex: reduceRightWithIndex_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const traversableArray: Traversable1 = { + URI, + map: map_, + reduce: reduce_, + foldMap: foldMap_, + reduceRight: reduceRight_, + traverse: traverse_, + sequence +} + +/** + * @category instances + * @since 2.7.0 + */ +export const traversableWithIndexArray: TraversableWithIndex1 = { + URI, + map: map_, + mapWithIndex: mapWithIndex_, + reduce: reduce_, + foldMap: foldMap_, + reduceRight: reduceRight_, + reduceWithIndex: reduceWithIndex_, + foldMapWithIndex: foldMapWithIndex_, + reduceRightWithIndex: reduceRightWithIndex_, + traverse: traverse_, + sequence, + traverseWithIndex: traverseWithIndex_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const witherableArray: Witherable1 = { + URI, + map: map_, + compact, + separate, + filter: filter_, + filterMap: filterMap_, + partition: partition_, + partitionMap: partitionMap_, + reduce: reduce_, + foldMap: foldMap_, + reduceRight: reduceRight_, + traverse: traverse_, + sequence, + wither: wither_, + wilt: wilt_ +} + /** * @category instances * @since 2.0.0 */ -export const array: Monad1 & - Foldable1 & +export const array: FunctorWithIndex1 & + Monad1 & Unfoldable1 & - TraversableWithIndex1 & Alternative1 & Extend1 & - Compactable1 & FilterableWithIndex1 & - Witherable1 & - FunctorWithIndex1 & - FoldableWithIndex1 = - /*#__PURE__*/ - (() => { - // tslint:disable-next-line: deprecation - return Object.assign({}, RA.readonlyArray as any, { URI }) - })() + FoldableWithIndex1 & + TraversableWithIndex1 & + Witherable1 = { + URI, + compact, + separate, + map: map_, + ap: ap_, + of, + chain: chain_, + filter: filter_, + filterMap: filterMap_, + partition: partition_, + partitionMap: partitionMap_, + mapWithIndex: mapWithIndex_, + partitionMapWithIndex: partitionMapWithIndex_, + partitionWithIndex: partitionWithIndex_, + filterMapWithIndex: filterMapWithIndex_, + filterWithIndex: filterWithIndex_, + alt: alt_, + zero: zero_, + unfold, + reduce: reduce_, + foldMap: foldMap_, + reduceRight: reduceRight_, + traverse: traverse_, + sequence, + reduceWithIndex: reduceWithIndex_, + foldMapWithIndex: foldMapWithIndex_, + reduceRightWithIndex: reduceRightWithIndex_, + traverseWithIndex: traverseWithIndex_, + extend: extend_, + wither: wither_, + wilt: wilt_ +} // ------------------------------------------------------------------------------------- // unsafe diff --git a/src/ReadonlyArray.ts b/src/ReadonlyArray.ts index 028466f35..d05d75637 100644 --- a/src/ReadonlyArray.ts +++ b/src/ReadonlyArray.ts @@ -2187,7 +2187,6 @@ export const readonlyArray: FunctorWithIndex1 & Unfoldable1 & Alternative1 & Extend1 & - Compactable1 & FilterableWithIndex1 & FoldableWithIndex1 & TraversableWithIndex1 & diff --git a/test/Applicative.ts b/test/Applicative.ts index ea398f1af..1da618f39 100644 --- a/test/Applicative.ts +++ b/test/Applicative.ts @@ -1,11 +1,11 @@ import * as assert from 'assert' import { getApplicativeComposition } from '../src/Applicative' -import { array } from '../src/Array' +import * as A from '../src/ReadonlyArray' import { none, option, some } from '../src/Option' describe('Applicative', () => { it('getApplicativeComposition', () => { - const arrayOption = getApplicativeComposition(array, option) + const arrayOption = getApplicativeComposition(A.applicativeArray, option) const double = (n: number) => n * 2 const inc = (n: number) => n + 1 assert.deepStrictEqual(arrayOption.ap([some(double), some(inc)], [some(1), some(2)]), [ diff --git a/test/Array.ts b/test/Array.ts index 389897914..3b48c3b85 100644 --- a/test/Array.ts +++ b/test/Array.ts @@ -905,7 +905,7 @@ describe('Array', () => { readonly bar: () => number } const f = (a: number, x?: Foo) => (x !== undefined ? `${a}${x.bar()}` : `${a}`) - assert.deepStrictEqual(_.array.map([1, 2], f), ['1', '2']) + assert.deepStrictEqual(_.functorArray.map([1, 2], f), ['1', '2']) assert.deepStrictEqual(pipe([1, 2], _.map(f)), ['1', '2']) }) diff --git a/test/Compactable.ts b/test/Compactable.ts index 3f016884c..d4c7617c3 100644 --- a/test/Compactable.ts +++ b/test/Compactable.ts @@ -1,12 +1,12 @@ import * as assert from 'assert' -import { array } from '../src/Array' +import * as A from '../src/ReadonlyArray' import { getCompactableComposition } from '../src/Compactable' import { none, some } from '../src/Option' import { left, right } from '../src/Either' describe('Compactable', () => { it('getCompactableComposition', () => { - const C = getCompactableComposition(array, array) + const C = getCompactableComposition(A.functorArray, { ...A.functorArray, ...A.compactableArray }) assert.deepStrictEqual( C.compact([ [some(1), none], diff --git a/test/Filterable.ts b/test/Filterable.ts index 9fbf5211b..2b6bb6a13 100644 --- a/test/Filterable.ts +++ b/test/Filterable.ts @@ -1,12 +1,12 @@ import * as assert from 'assert' -import { array } from '../src/Array' +import * as A from '../src/ReadonlyArray' import { getFilterableComposition } from '../src/Filterable' import { some, none } from '../src/Option' import { right, left } from '../src/Either' describe('Filterable', () => { it('getFilterableComposition', () => { - const F = getFilterableComposition(array, array) + const F = getFilterableComposition(A.functorArray, A.filterableArray) assert.deepStrictEqual( F.filter( [ diff --git a/test/Foldable.ts b/test/Foldable.ts index c6ae978ca..951df2c55 100644 --- a/test/Foldable.ts +++ b/test/Foldable.ts @@ -1,5 +1,5 @@ import * as assert from 'assert' -import { array } from '../src/Array' +import * as A from '../src/ReadonlyArray' import { foldM, getFoldableComposition, intercalate, traverse_ } from '../src/Foldable' import { io } from '../src/IO' import { monoidString } from '../src/Monoid' @@ -11,7 +11,7 @@ export type ArrayOptionURI = typeof ArrayOptionURI describe('Foldable', () => { it('getFoldableComposition', () => { - const F = getFoldableComposition(array, option.option) + const F = getFoldableComposition(A.foldableArray, option.option) // reduce assert.deepStrictEqual( F.reduce([option.some('a'), option.some('b'), option.some('c')], '', monoidString.concat), @@ -48,27 +48,27 @@ describe('Foldable', () => { }) it('intercalate', () => { - assert.deepStrictEqual(intercalate(monoidString, array)(',', ['a', 'b', 'c']), 'a,b,c') + assert.deepStrictEqual(intercalate(monoidString, A.foldableArray)(',', ['a', 'b', 'c']), 'a,b,c') }) it('traverse_', () => { let log = '' const append = (s: String) => () => (log += s) - traverse_(io, array)(['a', 'b', 'c'], append)() + traverse_(io, A.foldableArray)(['a', 'b', 'c'], append)() assert.deepStrictEqual(log, 'abc') }) it('foldM', () => { assert.deepStrictEqual( - foldM(option.option, array)([], 1, () => option.none), + foldM(option.option, A.foldableArray)([], 1, () => option.none), option.some(1) ) assert.deepStrictEqual( - foldM(option.option, array)([2], 1, () => option.none), + foldM(option.option, A.foldableArray)([2], 1, () => option.none), option.none ) assert.deepStrictEqual( - foldM(option.option, array)([2], 1, (b, a) => option.some(b + a)), + foldM(option.option, A.foldableArray)([2], 1, (b, a) => option.some(b + a)), option.some(3) ) }) diff --git a/test/Functor.ts b/test/Functor.ts index bed937767..2398c47cf 100644 --- a/test/Functor.ts +++ b/test/Functor.ts @@ -1,11 +1,11 @@ import * as assert from 'assert' -import { array } from '../src/Array' +import * as A from '../src/ReadonlyArray' import { getFunctorComposition } from '../src/Functor' import * as option from '../src/Option' describe('Functor', () => { it('getFunctorComposition', () => { - const arrayOption = getFunctorComposition(array, option.option) + const arrayOption = getFunctorComposition(A.functorArray, option.option) const double = (a: number) => a * 2 assert.deepStrictEqual(arrayOption.map([option.some(1)], double), [option.some(2)]) }) diff --git a/test/FunctorWithIndex.ts b/test/FunctorWithIndex.ts index 72b9ab988..52ddf48d0 100644 --- a/test/FunctorWithIndex.ts +++ b/test/FunctorWithIndex.ts @@ -1,10 +1,10 @@ import * as assert from 'assert' -import { array } from '../src/Array' +import * as A from '../src/ReadonlyArray' import { getFunctorWithIndexComposition } from '../src/FunctorWithIndex' describe('FunctorWithIndex', () => { it('getFunctorComposition', () => { - const arrayOfArray = getFunctorWithIndexComposition(array, array) + const arrayOfArray = getFunctorWithIndexComposition(A.functorWithIndexArray, A.functorWithIndexArray) const f = ([i, j]: readonly [number, number], a: string) => a + i + j assert.deepStrictEqual( arrayOfArray.mapWithIndex( diff --git a/test/Map.ts b/test/Map.ts index 321991748..753be4738 100644 --- a/test/Map.ts +++ b/test/Map.ts @@ -1,5 +1,5 @@ import * as assert from 'assert' -import { array } from '../src/Array' +import * as A from '../src/ReadonlyArray' import { Either, left, right } from '../src/Either' import { Eq, eqNumber, fromEquals } from '../src/Eq' import { identity, Refinement, pipe } from '../src/function' @@ -292,10 +292,10 @@ describe('Map', () => { it('toUnfoldable', () => { const a1 = new Map([[{ id: 'a' }, 1]]) - const toUnfoldableO = _.toUnfoldable(ordUser, array) + const toUnfoldableO = _.toUnfoldable(ordUser, A.unfoldableArray) assert.deepStrictEqual(toUnfoldableO(a1), [[{ id: 'a' }, 1]]) - const toUnfoldable = _.toUnfoldable(ordKey, array) + const toUnfoldable = _.toUnfoldable(ordKey, A.unfoldableArray) assert.deepStrictEqual( toUnfoldable( new Map([ @@ -1032,7 +1032,7 @@ describe('Map', () => { it('fromFoldable', () => { const a1 = new Map([[{ id: 'a' }, 1]]) const a2 = new Map([[{ id: 'a' }, 2]]) - const fromFoldableS1 = _.fromFoldable(eqUser, getFirstSemigroup(), array) + const fromFoldableS1 = _.fromFoldable(eqUser, getFirstSemigroup(), A.foldableArray) assert.deepStrictEqual(fromFoldableS1([[{ id: 'a' }, 1]]), a1) assert.deepStrictEqual( fromFoldableS1([ @@ -1041,7 +1041,7 @@ describe('Map', () => { ]), a1 ) - const fromFoldableS2 = _.fromFoldable(eqUser, getLastSemigroup(), array) + const fromFoldableS2 = _.fromFoldable(eqUser, getLastSemigroup(), A.foldableArray) assert.deepStrictEqual( fromFoldableS2([ [{ id: 'a' }, 1], diff --git a/test/Monoid.ts b/test/Monoid.ts index 692503b81..f2effee76 100644 --- a/test/Monoid.ts +++ b/test/Monoid.ts @@ -1,5 +1,5 @@ import * as assert from 'assert' -import { array } from '../src/Array' +import * as A from '../src/ReadonlyArray' import { boundedNumber } from '../src/Bounded' import { fold, @@ -14,6 +14,7 @@ import { monoidSum, getDualMonoid } from '../src/Monoid' +import { pipe } from '../src/function' describe('Monoid', () => { it('getTupleMonoid', () => { @@ -34,11 +35,12 @@ describe('Monoid', () => { const isLessThan10 = (n: number) => n <= 10 const isEven = (n: number) => n % 2 === 0 - assert.deepStrictEqual(array.filter([1, 2, 3, 40], fold(getPredicateMonoidAll())([isLessThan10, isEven])), [ - 2 - ]) assert.deepStrictEqual( - array.filter([1, 2, 3, 40, 41], fold(getPredicateMonoidAny())([isLessThan10, isEven])), + pipe([1, 2, 3, 40], A.filter(fold(getPredicateMonoidAll())([isLessThan10, isEven]))), + [2] + ) + assert.deepStrictEqual( + pipe([1, 2, 3, 40, 41], A.filter(fold(getPredicateMonoidAny())([isLessThan10, isEven]))), [1, 2, 3, 40] ) }) diff --git a/test/Option.ts b/test/Option.ts index 118f9233a..91c6ab916 100644 --- a/test/Option.ts +++ b/test/Option.ts @@ -1,5 +1,5 @@ import * as assert from 'assert' -import { array } from '../src/Array' +import * as A from '../src/ReadonlyArray' import { left, right } from '../src/Either' import { eqNumber } from '../src/Eq' import { identity, pipe } from '../src/function' @@ -166,28 +166,28 @@ describe('Option', () => { assert.deepStrictEqual( pipe( _.some('hello'), - _.traverse(array)(() => []) + _.traverse(A.applicativeArray)(() => []) ), [] ) assert.deepStrictEqual( pipe( _.some('hello'), - _.traverse(array)((s) => [s.length]) + _.traverse(A.applicativeArray)((s) => [s.length]) ), [_.some(5)] ) assert.deepStrictEqual( pipe( _.none, - _.traverse(array)((s) => [s]) + _.traverse(A.applicativeArray)((s) => [s]) ), [_.none] ) }) it('sequence', () => { - const sequence = _.sequence(array) + const sequence = _.sequence(A.applicativeArray) assert.deepStrictEqual(sequence(_.some([1, 2])), [_.some(1), _.some(2)]) assert.deepStrictEqual(sequence(_.none), [_.none]) }) diff --git a/test/ReadonlyMap.ts b/test/ReadonlyMap.ts index d1db7733b..2860569c3 100644 --- a/test/ReadonlyMap.ts +++ b/test/ReadonlyMap.ts @@ -1,5 +1,5 @@ import * as assert from 'assert' -import { array } from '../src/Array' +import * as A from '../src/ReadonlyArray' import { Either, left, right } from '../src/Either' import { Eq, eqNumber, fromEquals } from '../src/Eq' import { identity, pipe, Refinement } from '../src/function' @@ -387,10 +387,10 @@ describe('ReadonlyMap', () => { it('toUnfoldable', () => { const a1 = new Map([[{ id: 'a' }, 1]]) - const toUnfoldableO = _.toUnfoldable(ordUser, array) + const toUnfoldableO = _.toUnfoldable(ordUser, A.unfoldableArray) assert.deepStrictEqual(toUnfoldableO(a1), [[{ id: 'a' }, 1]]) - const toUnfoldable = _.toUnfoldable(ordKey, array) + const toUnfoldable = _.toUnfoldable(ordKey, A.unfoldableArray) assert.deepStrictEqual( toUnfoldable( new Map([ @@ -1063,7 +1063,7 @@ describe('ReadonlyMap', () => { it('fromFoldable', () => { const a1 = new Map([[{ id: 'a' }, 1]]) const a2 = new Map([[{ id: 'a' }, 2]]) - const fromFoldableS1 = _.fromFoldable(eqUser, getFirstSemigroup(), array) + const fromFoldableS1 = _.fromFoldable(eqUser, getFirstSemigroup(), A.foldableArray) assert.deepStrictEqual(fromFoldableS1([[{ id: 'a' }, 1]]), a1) assert.deepStrictEqual( fromFoldableS1([ @@ -1072,7 +1072,7 @@ describe('ReadonlyMap', () => { ]), a1 ) - const fromFoldableS2 = _.fromFoldable(eqUser, getLastSemigroup(), array) + const fromFoldableS2 = _.fromFoldable(eqUser, getLastSemigroup(), A.foldableArray) assert.deepStrictEqual( fromFoldableS2([ [{ id: 'a' }, 1], diff --git a/test/Store.ts b/test/Store.ts index 63999ab17..ad3887903 100644 --- a/test/Store.ts +++ b/test/Store.ts @@ -1,6 +1,6 @@ import * as assert from 'assert' import * as _ from '../src/Store' -import { array } from '../src/Array' +import * as A from '../src/ReadonlyArray' import { pipe } from '../src/function' const len = (s: string): number => s.length @@ -80,7 +80,7 @@ describe('Store', () => { assert.deepStrictEqual( pipe( wa, - _.experiment(array)((s) => [s, s + 'a']) + _.experiment(A.functorArray)((s) => [s, s + 'a']) ), [1, 2] ) diff --git a/test/Traversable.ts b/test/Traversable.ts index 08fcffce8..fc2e38718 100644 --- a/test/Traversable.ts +++ b/test/Traversable.ts @@ -1,5 +1,5 @@ import * as assert from 'assert' -import { array } from '../src/Array' +import * as A from '../src/ReadonlyArray' import { none, option, some } from '../src/Option' import { getTraversableComposition } from '../src/Traversable' @@ -9,7 +9,7 @@ export type ArrayOptionURI = typeof ArrayOptionURI describe('Traversable', () => { it('getTraversableComposition', () => { - const T = getTraversableComposition(array, option) + const T = getTraversableComposition(A.traversableArray, option) assert.deepStrictEqual( T.traverse(option)([some(1), some(2)], (n: number) => (n <= 2 ? some(n * 2) : none)), some([some(2), some(4)]) diff --git a/test/pipeable.ts b/test/pipeable.ts index e87fa0993..a080db2a3 100644 --- a/test/pipeable.ts +++ b/test/pipeable.ts @@ -1,5 +1,5 @@ import * as assert from 'assert' -import { array } from '../src/Array' +import * as A from '../src/ReadonlyArray' import * as C from '../src/Const' import { either, left, right } from '../src/Either' import { fold, monoidSum } from '../src/Monoid' @@ -14,7 +14,7 @@ describe('pipeable', () => { }) it('Functor', () => { - const { map } = pipeable(array) + const { map } = pipeable(A.functorArray) assert.deepStrictEqual(map((n: number) => n * 2)([1, 2, 3]), [2, 4, 6]) }) @@ -24,19 +24,19 @@ describe('pipeable', () => { }) it('FunctorWithIndex', () => { - const { mapWithIndex } = pipeable(array) + const { mapWithIndex } = pipeable(A.functorWithIndexArray) assert.deepStrictEqual(mapWithIndex((i, n: number) => n * 2 + i)([1, 2, 3]), [2, 5, 8]) }) it('Apply', () => { - const { ap, apFirst, apSecond } = pipeable(array) + const { ap, apFirst, apSecond } = pipeable(A.applyArray) assert.deepStrictEqual(ap([1, 2, 3])([(n) => n * 2]), [2, 4, 6]) assert.deepStrictEqual(apFirst([2])([1]), [1]) assert.deepStrictEqual(apSecond([2])([1]), [2]) }) it('Chain', () => { - const { chain, chainFirst, flatten } = pipeable(array) + const { chain, chainFirst, flatten } = pipeable(A.monadArray) assert.deepStrictEqual(chain((n: number) => [n * 2])([1, 2, 3]), [2, 4, 6]) assert.deepStrictEqual(chainFirst((n: number) => [n * 2])([1, 2, 3]), [1, 2, 3]) assert.deepStrictEqual(flatten([[1], [2], [3]]), [1, 2, 3]) @@ -63,32 +63,32 @@ describe('pipeable', () => { }) it('Extend', () => { - const { extend, duplicate } = pipeable(array) + const { extend, duplicate } = pipeable(A.extendArray) assert.deepStrictEqual(extend((as: ReadonlyArray) => fold(monoidSum)(as))([1, 2, 3]), [6, 5, 3]) assert.deepStrictEqual(duplicate([1, 2, 3]), [[1, 2, 3], [2, 3], [3]]) }) it('Foldable', () => { - const { reduce, foldMap, reduceRight } = pipeable(array) + const { reduce, foldMap, reduceRight } = pipeable(A.foldableArray) assert.deepStrictEqual(reduce(0, (acc, n: number) => acc + n)([1, 2, 3]), 6) assert.deepStrictEqual(foldMap(monoidSum)((n: number) => n)([1, 2, 3]), 6) assert.deepStrictEqual(reduceRight(0, (n: number, acc) => -acc + n)([1, 2, 3]), 2) }) it('FoldableWithIndex', () => { - const { reduceWithIndex, foldMapWithIndex, reduceRightWithIndex } = pipeable(array) + const { reduceWithIndex, foldMapWithIndex, reduceRightWithIndex } = pipeable(A.foldableWithIndexArray) assert.deepStrictEqual(reduceWithIndex(0, (i, acc, n: number) => acc + n + i)([1, 2, 3]), 9) assert.deepStrictEqual(foldMapWithIndex(monoidSum)((i, n: number) => n + i)([1, 2, 3]), 9) assert.deepStrictEqual(reduceRightWithIndex(0, (i, n: number, acc) => -acc + n + i)([1, 2, 3]), 3) }) it('Alt', () => { - const { alt } = pipeable(array) + const { alt } = pipeable(A.altArray) assert.deepStrictEqual(alt(() => [4, 5, 6])([1, 2, 3]), [1, 2, 3, 4, 5, 6]) }) it('Filterable', () => { - const { filter, filterMap, partition, partitionMap } = pipeable(array) + const { filter, filterMap, partition, partitionMap } = pipeable(A.filterableArray) assert.deepStrictEqual(filter(isSome)([some(1), none, some(2)]), [some(1), some(2)]) assert.deepStrictEqual(filterMap((a: Option) => a)([some(1), none, some(2)]), [1, 2]) assert.deepStrictEqual(partition(isSome)([some(1), none, some(2)]), { left: [none], right: [some(1), some(2)] }) @@ -99,7 +99,9 @@ describe('pipeable', () => { }) it('FilterableWithIndex', () => { - const { filterWithIndex, filterMapWithIndex, partitionWithIndex, partitionMapWithIndex } = pipeable(array) + const { filterWithIndex, filterMapWithIndex, partitionWithIndex, partitionMapWithIndex } = pipeable( + A.filterableWithIndexArray + ) assert.deepStrictEqual(filterWithIndex((i, a: Option) => i > 1 && isSome(a))([some(1), none, some(2)]), [ some(2) ]) From 23d71275b94623d2a147a7354a82f4eb1f5d08c6 Mon Sep 17 00:00:00 2001 From: gcanti Date: Wed, 17 Jun 2020 07:28:48 +0200 Subject: [PATCH 046/106] split `const_` mega instance --- CHANGELOG.md | 4 ++++ docs/modules/Const.ts.md | 33 +++++++++++++++++++++++++++++++++ src/Const.ts | 28 ++++++++++++++++++++++++++++ test/pipeable.ts | 2 +- 4 files changed, 66 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 05e601034..9df4cb00f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -35,6 +35,10 @@ high state of flux, you're at risk of it changing without notice. - add `traversableArray` instance (@gcanti) - add `traversableWithIndexArray` instance (@gcanti) - add `witherableArray` instance (@gcanti) + - `Const` + - add `functorConst` instance (@gcanti) + - add `contravariantConst` instance (@gcanti) + - add `bifunctorConst` instance (@gcanti) - `ReadonlyArray` - add `functorArray` instance (@gcanti) - add `functorWithIndexArray` instance (@gcanti) diff --git a/docs/modules/Const.ts.md b/docs/modules/Const.ts.md index edb547184..90d9e798c 100644 --- a/docs/modules/Const.ts.md +++ b/docs/modules/Const.ts.md @@ -30,7 +30,10 @@ Added in v2.0.0 - [instances](#instances) - [URI](#uri) - [URI (type alias)](#uri-type-alias) + - [bifunctorConst](#bifunctorconst) - [const\_](#const_) + - [contravariantConst](#contravariantconst) + - [functorConst](#functorconst) - [getApplicative](#getapplicative) - [getApply](#getapply) - [getBooleanAlgebra](#getbooleanalgebra) @@ -135,6 +138,16 @@ export type URI = typeof URI Added in v2.0.0 +## bifunctorConst + +**Signature** + +```ts +export declare const bifunctorConst: Bifunctor2<'Const'> +``` + +Added in v2.7.0 + ## const\_ **Signature** @@ -145,6 +158,26 @@ export declare const const_: Functor2<'Const'> & Contravariant2<'Const'> & Bifun Added in v2.0.0 +## contravariantConst + +**Signature** + +```ts +export declare const contravariantConst: Contravariant2<'Const'> +``` + +Added in v2.7.0 + +## functorConst + +**Signature** + +```ts +export declare const functorConst: Functor2<'Const'> +``` + +Added in v2.7.0 + ## getApplicative **Signature** diff --git a/src/Const.ts b/src/Const.ts index b85520f76..56a2cfbc5 100644 --- a/src/Const.ts +++ b/src/Const.ts @@ -198,6 +198,34 @@ declare module './HKT' { } } +/** + * @category instances + * @since 2.7.0 + */ +export const functorConst: Functor2 = { + URI, + map: map_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const contravariantConst: Contravariant2 = { + URI, + contramap: contramap_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const bifunctorConst: Bifunctor2 = { + URI, + bimap: bimap_, + mapLeft: mapLeft_ +} + /** * @category instances * @since 2.0.0 diff --git a/test/pipeable.ts b/test/pipeable.ts index a080db2a3..ce1ff52c6 100644 --- a/test/pipeable.ts +++ b/test/pipeable.ts @@ -19,7 +19,7 @@ describe('pipeable', () => { }) it('Contravariant', () => { - const { contramap } = pipeable(C.const_) + const { contramap } = pipeable(C.contravariantConst) assert.deepStrictEqual(contramap((s: string) => s.length * 2)(C.make(1)), 1) }) From b0de281efe7fbd512d2a6c55db08b0dcf653df1c Mon Sep 17 00:00:00 2001 From: gcanti Date: Wed, 17 Jun 2020 07:44:15 +0200 Subject: [PATCH 047/106] split `either` mega instance --- CHANGELOG.md | 12 +++ docs/modules/Either.ts.md | 121 ++++++++++++++++++++++++++++ src/Either.ts | 162 ++++++++++++++++++++++++++++++++------ test/Apply.ts | 23 +++--- test/Either.ts | 16 ++-- test/pipeable.ts | 20 ++--- 6 files changed, 301 insertions(+), 53 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9df4cb00f..b47daa47f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -39,6 +39,18 @@ high state of flux, you're at risk of it changing without notice. - add `functorConst` instance (@gcanti) - add `contravariantConst` instance (@gcanti) - add `bifunctorConst` instance (@gcanti) + - `Either` + - add `functorEither` instance (@gcanti) + - add `applyEither` instance (@gcanti) + - add `applicativeEither` instance (@gcanti) + - add `monadEither` instance (@gcanti) + - add `foldableEither` instance (@gcanti) + - add `traversableEither` instance (@gcanti) + - add `bifunctorEither` instance (@gcanti) + - add `altEither` instance (@gcanti) + - add `extendEither` instance (@gcanti) + - add `chainRecEither` instance (@gcanti) + - add `monadThrowEither` instance (@gcanti) - `ReadonlyArray` - add `functorArray` instance (@gcanti) - add `functorWithIndexArray` instance (@gcanti) diff --git a/docs/modules/Either.ts.md b/docs/modules/Either.ts.md index 1d0930b44..3a4de4707 100644 --- a/docs/modules/Either.ts.md +++ b/docs/modules/Either.ts.md @@ -73,7 +73,15 @@ Added in v2.0.0 - [instances](#instances) - [URI](#uri) - [URI (type alias)](#uri-type-alias) + - [altEither](#alteither) + - [applicativeEither](#applicativeeither) + - [applyEither](#applyeither) + - [bifunctorEither](#bifunctoreither) + - [chainRecEither](#chainreceither) - [either](#either) + - [extendEither](#extendeither) + - [foldableEither](#foldableeither) + - [functorEither](#functoreither) - [getApplyMonoid](#getapplymonoid) - [getApplySemigroup](#getapplysemigroup) - [getEq](#geteq) @@ -83,6 +91,9 @@ Added in v2.0.0 - [getValidationMonoid](#getvalidationmonoid) - [getValidationSemigroup](#getvalidationsemigroup) - [getWitherable](#getwitherable) + - [monadEither](#monadeither) + - [monadThrowEither](#monadthroweither) + - [traversableEither](#traversableeither) - [model](#model) - [Either (type alias)](#either-type-alias) - [Left (interface)](#left-interface) @@ -616,6 +627,56 @@ export type URI = typeof URI Added in v2.0.0 +## altEither + +**Signature** + +```ts +export declare const altEither: Alt2<'Either'> +``` + +Added in v2.7.0 + +## applicativeEither + +**Signature** + +```ts +export declare const applicativeEither: Applicative2<'Either'> +``` + +Added in v2.7.0 + +## applyEither + +**Signature** + +```ts +export declare const applyEither: Apply2<'Either'> +``` + +Added in v2.7.0 + +## bifunctorEither + +**Signature** + +```ts +export declare const bifunctorEither: Bifunctor2<'Either'> +``` + +Added in v2.7.0 + +## chainRecEither + +**Signature** + +```ts +export declare const chainRecEither: ChainRec2<'Either'> +``` + +Added in v2.7.0 + ## either **Signature** @@ -633,6 +694,36 @@ export declare const either: Monad2<'Either'> & Added in v2.0.0 +## extendEither + +**Signature** + +```ts +export declare const extendEither: Extend2<'Either'> +``` + +Added in v2.7.0 + +## foldableEither + +**Signature** + +```ts +export declare const foldableEither: Foldable2<'Either'> +``` + +Added in v2.7.0 + +## functorEither + +**Signature** + +```ts +export declare const functorEither: Functor2<'Either'> +``` + +Added in v2.7.0 + ## getApplyMonoid **Signature** @@ -766,6 +857,36 @@ export declare function getWitherable(M: Monoid): Witherable2C Added in v2.0.0 +## monadEither + +**Signature** + +```ts +export declare const monadEither: Monad2<'Either'> +``` + +Added in v2.7.0 + +## monadThrowEither + +**Signature** + +```ts +export declare const monadThrowEither: MonadThrow2<'Either'> +``` + +Added in v2.7.0 + +## traversableEither + +**Signature** + +```ts +export declare const traversableEither: Traversable2<'Either'> +``` + +Added in v2.7.0 + # model ## Either (type alias) diff --git a/src/Either.ts b/src/Either.ts index a6ba5a109..35231f3a1 100644 --- a/src/Either.ts +++ b/src/Either.ts @@ -14,7 +14,7 @@ * @since 2.0.0 */ import { Alt2, Alt2C } from './Alt' -import { Applicative } from './Applicative' +import { Applicative, Applicative2 } from './Applicative' import { Apply2 } from './Apply' import { Bifunctor2 } from './Bifunctor' import { ChainRec2, ChainRec2C, tailRec } from './ChainRec' @@ -23,6 +23,7 @@ import { Eq } from './Eq' import { Extend2 } from './Extend' import { Foldable2 } from './Foldable' import { identity, Lazy, Predicate, Refinement } from './function' +import { Functor2 } from './Functor' import { HKT } from './HKT' import { Monad2, Monad2C } from './Monad' import { MonadThrow2, MonadThrow2C } from './MonadThrow' @@ -499,24 +500,6 @@ export const sequence: Traversable2['sequence'] = (F: Applicative) => // instances // ------------------------------------------------------------------------------------- -/** - * @category instances - * @since 2.0.0 - */ -export const URI = 'Either' - -/** - * @category instances - * @since 2.0.0 - */ -export type URI = typeof URI - -declare module './HKT' { - interface URItoKind2 { - readonly [URI]: Either - } -} - const map_: (fa: Either, f: (a: A) => B) => Either = (ma, f) => isLeft(ma) ? ma : right(f(ma.right)) const ap_: (fab: Either B>, fa: Either) => Either = (mab, ma) => @@ -551,12 +534,21 @@ const chainRec_: (a: A, f: (a: A) => Either>) => Either const throwError_ = left /** - * @internal + * @category instances + * @since 2.0.0 */ -export const applyEither: Apply2 = { - URI, - map: map_, - ap: ap_ +export const URI = 'Either' + +/** + * @category instances + * @since 2.0.0 + */ +export type URI = typeof URI + +declare module './HKT' { + interface URItoKind2 { + readonly [URI]: Either + } } /** @@ -791,6 +783,128 @@ export function getValidationSemigroup(SE: Semigroup, SA: Semigroup) } } +/** + * @category instances + * @since 2.7.0 + */ +export const functorEither: Functor2 = { + URI, + map: map_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const applyEither: Apply2 = { + URI, + map: map_, + ap: ap_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const applicativeEither: Applicative2 = { + URI, + map: map_, + ap: ap_, + of +} + +/** + * @category instances + * @since 2.7.0 + */ +export const monadEither: Monad2 = { + URI, + map: map_, + ap: ap_, + of, + chain: chain_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const foldableEither: Foldable2 = { + URI, + reduce: reduce_, + foldMap: foldMap_, + reduceRight: reduceRight_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const traversableEither: Traversable2 = { + URI, + map: map_, + reduce: reduce_, + foldMap: foldMap_, + reduceRight: reduceRight_, + traverse: traverse_, + sequence +} + +/** + * @category instances + * @since 2.7.0 + */ +export const bifunctorEither: Bifunctor2 = { + URI, + bimap: bimap_, + mapLeft: mapLeft_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const altEither: Alt2 = { + URI, + map: map_, + alt: alt_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const extendEither: Extend2 = { + URI, + map: map_, + extend: extend_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const chainRecEither: ChainRec2 = { + URI, + map: map_, + ap: ap_, + chain: chain_, + chainRec: chainRec_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const monadThrowEither: MonadThrow2 = { + URI, + map: map_, + ap: ap_, + of, + chain: chain_, + throwError: throwError_ +} + /** * @category instances * @since 2.0.0 diff --git a/test/Apply.ts b/test/Apply.ts index de48a2691..5ce2e92ca 100644 --- a/test/Apply.ts +++ b/test/Apply.ts @@ -1,7 +1,7 @@ import * as assert from 'assert' import { sequenceS, sequenceT } from '../src/Apply' import * as A from '../src/ReadonlyArray' -import { either, getValidation, left, right } from '../src/Either' +import * as E from '../src/Either' import { none, option, some } from '../src/Option' import { pipe } from '../src/function' @@ -47,16 +47,19 @@ describe('Apply', () => { assert.deepStrictEqual(adoOption({ a: some(1), b: some(2) }), some({ a: 1, b: 2 })) assert.deepStrictEqual(adoOption({ a: some(1), b: none }), none) - const adoEither = sequenceS(either) - assert.deepStrictEqual(adoEither({ a: right(1) }), right({ a: 1 })) - assert.deepStrictEqual(adoEither({ a: right(1), b: right(2) }), right({ a: 1, b: 2 })) - assert.deepStrictEqual(adoEither({ a: right(1), b: left('error') }), left('error')) + const adoEither = sequenceS(E.applyEither) + assert.deepStrictEqual(adoEither({ a: E.right(1) }), E.right({ a: 1 })) + assert.deepStrictEqual(adoEither({ a: E.right(1), b: E.right(2) }), E.right({ a: 1, b: 2 })) + assert.deepStrictEqual(adoEither({ a: E.right(1), b: E.left('error') }), E.left('error')) - const adoValidation = sequenceS(getValidation(A.getMonoid())) - assert.deepStrictEqual(adoValidation({ a: right(1) }), right({ a: 1 })) - assert.deepStrictEqual(adoValidation({ a: right(1), b: right(2) }), right({ a: 1, b: 2 })) - assert.deepStrictEqual(adoValidation({ a: right(1), b: left(['error']) }), left(['error'])) - assert.deepStrictEqual(adoValidation({ a: left(['error1']), b: left(['error2']) }), left(['error1', 'error2'])) + const adoValidation = sequenceS(E.getValidation(A.getMonoid())) + assert.deepStrictEqual(adoValidation({ a: E.right(1) }), E.right({ a: 1 })) + assert.deepStrictEqual(adoValidation({ a: E.right(1), b: E.right(2) }), E.right({ a: 1, b: 2 })) + assert.deepStrictEqual(adoValidation({ a: E.right(1), b: E.left(['error']) }), E.left(['error'])) + assert.deepStrictEqual( + adoValidation({ a: E.left(['error1']), b: E.left(['error2']) }), + E.left(['error1', 'error2']) + ) // #914 const a1: ReadonlyArray = [1, 2, 3] diff --git a/test/Either.ts b/test/Either.ts index e5214623c..3155e580b 100644 --- a/test/Either.ts +++ b/test/Either.ts @@ -10,6 +10,12 @@ import * as T from '../src/Task' describe('Either', () => { describe('pipeables', () => { + it('mapLeft', () => { + const double = (n: number): number => n * 2 + assert.deepStrictEqual(pipe(_.right('bar'), _.mapLeft(double)), _.right('bar')) + assert.deepStrictEqual(pipe(_.left(2), _.mapLeft(double)), _.left(4)) + }) + it('alt', () => { assert.deepStrictEqual( pipe( @@ -303,14 +309,6 @@ describe('Either', () => { assert.deepStrictEqual(_.stringifyJSON(person, _.toError), _.right('{"name":"Giulio","age":45}')) }) - describe('Bifunctor', () => { - it('mapLeft', () => { - const double = (n: number): number => n * 2 - assert.deepStrictEqual(_.either.mapLeft(_.right('bar'), double), _.right('bar')) - assert.deepStrictEqual(_.either.mapLeft(_.left(2), double), _.left(4)) - }) - }) - describe('lifting functions', () => { it('fromPredicate', () => { const gt2 = _.fromPredicate( @@ -366,7 +364,7 @@ describe('Either', () => { describe('ChainRec', () => { it('chainRec', () => { - const chainRec = _.either.chainRec + const chainRec = _.chainRecEither.chainRec assert.deepStrictEqual( chainRec(1, () => _.left('foo')), _.left('foo') diff --git a/test/pipeable.ts b/test/pipeable.ts index ce1ff52c6..5f61e673a 100644 --- a/test/pipeable.ts +++ b/test/pipeable.ts @@ -1,7 +1,7 @@ import * as assert from 'assert' import * as A from '../src/ReadonlyArray' import * as C from '../src/Const' -import { either, left, right } from '../src/Either' +import * as E from '../src/Either' import { fold, monoidSum } from '../src/Monoid' import { isSome, none, Option, option, some } from '../src/Option' import { pipeable } from '../src/pipeable' @@ -43,23 +43,23 @@ describe('pipeable', () => { }) it('Bifunctor', () => { - const { bimap, mapLeft } = pipeable(either) + const { bimap, mapLeft } = pipeable(E.bifunctorEither) assert.deepStrictEqual( bimap( (s: string) => s.length, (n: number) => n * 2 - )(right(1)), - right(2) + )(E.right(1)), + E.right(2) ) assert.deepStrictEqual( bimap( (s: string) => s.length, (n: number) => n * 2 - )(left('aa')), - left(2) + )(E.left('aa')), + E.left(2) ) - assert.deepStrictEqual(mapLeft((s: string) => s.length)(right(1)), right(1)) - assert.deepStrictEqual(mapLeft((s: string) => s.length)(left('aa')), left(2)) + assert.deepStrictEqual(mapLeft((s: string) => s.length)(E.right(1)), E.right(1)) + assert.deepStrictEqual(mapLeft((s: string) => s.length)(E.left('aa')), E.left(2)) }) it('Extend', () => { @@ -92,7 +92,7 @@ describe('pipeable', () => { assert.deepStrictEqual(filter(isSome)([some(1), none, some(2)]), [some(1), some(2)]) assert.deepStrictEqual(filterMap((a: Option) => a)([some(1), none, some(2)]), [1, 2]) assert.deepStrictEqual(partition(isSome)([some(1), none, some(2)]), { left: [none], right: [some(1), some(2)] }) - assert.deepStrictEqual(partitionMap((n: number) => (n > 2 ? right(n) : left(String(n))))([1, 2, 3]), { + assert.deepStrictEqual(partitionMap((n: number) => (n > 2 ? E.right(n) : E.left(String(n))))([1, 2, 3]), { left: ['1', '2'], right: [3] }) @@ -114,7 +114,7 @@ describe('pipeable', () => { right: [some(2)] }) assert.deepStrictEqual( - partitionMapWithIndex((i, n: number) => (i < 2 && n > 1 ? right(n) : left(String(n))))([1, 2, 3]), + partitionMapWithIndex((i, n: number) => (i < 2 && n > 1 ? E.right(n) : E.left(String(n))))([1, 2, 3]), { left: ['1', '3'], right: [2] From 867f36c969ed66352b38bb48c990ad406213cee4 Mon Sep 17 00:00:00 2001 From: gcanti Date: Wed, 17 Jun 2020 08:31:58 +0200 Subject: [PATCH 048/106] rename `eq` to `contravariantEq` for consistency --- CHANGELOG.md | 2 + docs/modules/Eq.ts.md | 11 +++++ src/Array.ts | 1 + src/Either.ts | 1 + src/Eq.ts | 17 +++++--- src/ReadonlyArray.ts | 1 + test/Array.ts | 5 ++- test/ReadonlyArray.ts | 5 ++- test/ReadonlySet.ts | 96 ++++++++++++++++++++++++------------------ test/Set.ts | 98 ++++++++++++++++++++++++------------------- test/Tree.ts | 9 ++-- 11 files changed, 154 insertions(+), 92 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b47daa47f..a3c7cd46f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -51,6 +51,8 @@ high state of flux, you're at risk of it changing without notice. - add `extendEither` instance (@gcanti) - add `chainRecEither` instance (@gcanti) - add `monadThrowEither` instance (@gcanti) + - `Eq` + - add `contravariantEq` instance (@gcanti) - `ReadonlyArray` - add `functorArray` instance (@gcanti) - add `functorWithIndexArray` instance (@gcanti) diff --git a/docs/modules/Eq.ts.md b/docs/modules/Eq.ts.md index 36ae5f1ea..26e7d8ebc 100644 --- a/docs/modules/Eq.ts.md +++ b/docs/modules/Eq.ts.md @@ -27,6 +27,7 @@ Added in v2.0.0 - [instances](#instances) - [URI](#uri) - [URI (type alias)](#uri-type-alias) + - [contravariantEq](#contravarianteq) - [eq](#eq) - [eqBoolean](#eqboolean) - [eqDate](#eqdate) @@ -89,6 +90,16 @@ export type URI = typeof URI Added in v2.0.0 +## contravariantEq + +**Signature** + +```ts +export declare const contravariantEq: Contravariant1<'Eq'> +``` + +Added in v2.7.0 + ## eq **Signature** diff --git a/src/Array.ts b/src/Array.ts index f16e3dc07..034bb66ab 100644 --- a/src/Array.ts +++ b/src/Array.ts @@ -1483,6 +1483,7 @@ export const witherableArray: Witherable1 = { wilt: wilt_ } +// TODO: remove in v3 /** * @category instances * @since 2.0.0 diff --git a/src/Either.ts b/src/Either.ts index 35231f3a1..f64953ca6 100644 --- a/src/Either.ts +++ b/src/Either.ts @@ -905,6 +905,7 @@ export const monadThrowEither: MonadThrow2 = { throwError: throwError_ } +// TODO: remove in v3 /** * @category instances * @since 2.0.0 diff --git a/src/Eq.ts b/src/Eq.ts index e64ca29cf..676fba005 100644 --- a/src/Eq.ts +++ b/src/Eq.ts @@ -53,6 +53,8 @@ export const contramap: (f: (b: B) => A) => (fa: Eq) => Eq = (f) => // instances // ------------------------------------------------------------------------------------- +const contramap_: (fa: Eq, f: (b: B) => A) => Eq = (fa, f) => fromEquals((x, y) => fa.equals(f(x), f(y))) + /** * @category instances * @since 2.0.0 @@ -71,8 +73,6 @@ declare module './HKT' { } } -const contramap_: (fa: Eq, f: (b: B) => A) => Eq = (fa, f) => fromEquals((x, y) => fa.equals(f(x), f(y))) - /** * @category instances * @since 2.5.0 @@ -171,9 +171,16 @@ export function getMonoid(): Monoid> { /** * @category instances - * @since 2.0.0 + * @since 2.7.0 */ -export const eq: Contravariant1 = { +export const contravariantEq: Contravariant1 = { URI, - contramap: (fa, f) => fromEquals((x, y) => fa.equals(f(x), f(y))) + contramap: contramap_ } + +// TODO: remove in v3 +/** + * @category instances + * @since 2.0.0 + */ +export const eq: Contravariant1 = contravariantEq diff --git a/src/ReadonlyArray.ts b/src/ReadonlyArray.ts index d05d75637..4b78dadd3 100644 --- a/src/ReadonlyArray.ts +++ b/src/ReadonlyArray.ts @@ -2178,6 +2178,7 @@ export const witherableArray: Witherable1 = { wilt: wilt_ } +// TODO: remove in v3 /** * @category instances * @since 2.5.0 diff --git a/test/Array.ts b/test/Array.ts index 3b48c3b85..67c671d04 100644 --- a/test/Array.ts +++ b/test/Array.ts @@ -693,7 +693,10 @@ describe('Array', () => { readonly b: number } - const eqA = Eq.eq.contramap(Ord.ordNumber, (f: A) => f.b) + const eqA = pipe( + Ord.ordNumber, + Eq.contramap((f: A) => f.b) + ) const arrA: A = { a: 'a', b: 1 } const arrB: A = { a: 'b', b: 1 } const arrC: A = { a: 'c', b: 2 } diff --git a/test/ReadonlyArray.ts b/test/ReadonlyArray.ts index 405cc44e4..fd75e52e2 100644 --- a/test/ReadonlyArray.ts +++ b/test/ReadonlyArray.ts @@ -691,7 +691,10 @@ describe('ReadonlyArray', () => { readonly b: number } - const eqA = Eq.eq.contramap(Ord.ordNumber, (f: A) => f.b) + const eqA = pipe( + Ord.ordNumber, + Eq.contramap((f: A) => f.b) + ) const arrA: A = { a: 'a', b: 1 } const arrB: A = { a: 'b', b: 1 } const arrC: A = { a: 'c', b: 2 } diff --git a/test/ReadonlySet.ts b/test/ReadonlySet.ts index 4988bfd4b..e6b03c08d 100644 --- a/test/ReadonlySet.ts +++ b/test/ReadonlySet.ts @@ -2,7 +2,7 @@ import * as assert from 'assert' import { left, right } from '../src/Either' import { ordNumber } from '../src/Ord' import * as _ from '../src/ReadonlySet' -import { Eq, eqNumber, eqString, eq, getStructEq } from '../src/Eq' +import * as Eq from '../src/Eq' import { none, some as optionSome } from '../src/Option' import { showString } from '../src/Show' import { getMonoid } from '../src/Array' @@ -14,7 +14,7 @@ interface Foo { readonly x: string } const foo = (x: string): Foo => ({ x }) -const fooEq: Eq = { +const fooEq: Eq.Eq = { equals: (a: Foo, b: Foo) => a.x === b.x } @@ -26,7 +26,7 @@ describe('ReadonlySet', () => { }) it('getEq', () => { - const S = _.getEq(eqNumber) + const S = _.getEq(Eq.eqNumber) assert.deepStrictEqual(S.equals(new Set([1, 2, 3]), new Set([1, 2, 3])), true) assert.deepStrictEqual(S.equals(new Set([1, 2, 3]), new Set([1, 2])), false) assert.deepStrictEqual(S.equals(new Set([1, 2]), new Set([1, 2, 3])), false) @@ -39,9 +39,9 @@ describe('ReadonlySet', () => { }) it('map', () => { - assert.deepStrictEqual(_.map(eqNumber)((n: number) => n % 2)(new Set([])), new Set([])) - assert.deepStrictEqual(_.map(eqNumber)((n: number) => n % 2)(new Set([1, 2, 3, 4])), new Set([0, 1])) - assert.deepStrictEqual(_.map(eqString)((n: number) => `${n % 2}`)(new Set([1, 2, 3, 4])), new Set(['0', '1'])) + assert.deepStrictEqual(_.map(Eq.eqNumber)((n: number) => n % 2)(new Set([])), new Set([])) + assert.deepStrictEqual(_.map(Eq.eqNumber)((n: number) => n % 2)(new Set([1, 2, 3, 4])), new Set([0, 1])) + assert.deepStrictEqual(_.map(Eq.eqString)((n: number) => `${n % 2}`)(new Set([1, 2, 3, 4])), new Set(['0', '1'])) }) it('every', () => { @@ -50,20 +50,20 @@ describe('ReadonlySet', () => { }) it('chain', () => { - assert.deepStrictEqual(_.chain(eqString)((n: number) => new Set([n.toString()]))(new Set([])), new Set([])) - assert.deepStrictEqual(_.chain(eqString)(() => new Set([]))(new Set([1, 2])), new Set([])) + assert.deepStrictEqual(_.chain(Eq.eqString)((n: number) => new Set([n.toString()]))(new Set([])), new Set([])) + assert.deepStrictEqual(_.chain(Eq.eqString)(() => new Set([]))(new Set([1, 2])), new Set([])) assert.deepStrictEqual( - _.chain(eqString)((n: number) => new Set([`${n}`, `${n + 1}`]))(new Set([1, 2])), + _.chain(Eq.eqString)((n: number) => new Set([`${n}`, `${n + 1}`]))(new Set([1, 2])), new Set(['1', '2', '3']) ) }) it('isSubset', () => { - assert.deepStrictEqual(_.isSubset(eqNumber)(new Set([1, 2]), new Set([1, 2, 3])), true) - assert.deepStrictEqual(_.isSubset(eqNumber)(new Set([1, 2, 4]), new Set([1, 2, 3])), false) + assert.deepStrictEqual(_.isSubset(Eq.eqNumber)(new Set([1, 2]), new Set([1, 2, 3])), true) + assert.deepStrictEqual(_.isSubset(Eq.eqNumber)(new Set([1, 2, 4]), new Set([1, 2, 3])), false) - assert.deepStrictEqual(pipe(new Set([1, 2]), _.isSubset(eqNumber)(new Set([1, 2, 3]))), true) - assert.deepStrictEqual(pipe(new Set([1, 2, 4]), _.isSubset(eqNumber)(new Set([1, 2, 3]))), false) + assert.deepStrictEqual(pipe(new Set([1, 2]), _.isSubset(Eq.eqNumber)(new Set([1, 2, 3]))), true) + assert.deepStrictEqual(pipe(new Set([1, 2, 4]), _.isSubset(Eq.eqNumber)(new Set([1, 2, 3]))), false) }) it('filter', () => { @@ -94,31 +94,33 @@ describe('ReadonlySet', () => { }) it('union', () => { - assert.deepStrictEqual(_.union(eqNumber)(new Set([1, 2]), new Set([1, 3])), new Set([1, 2, 3])) + assert.deepStrictEqual(_.union(Eq.eqNumber)(new Set([1, 2]), new Set([1, 3])), new Set([1, 2, 3])) - assert.deepStrictEqual(pipe(new Set([1, 2]), _.union(eqNumber)(new Set([1, 3]))), new Set([1, 2, 3])) + assert.deepStrictEqual(pipe(new Set([1, 2]), _.union(Eq.eqNumber)(new Set([1, 3]))), new Set([1, 2, 3])) }) it('intersection', () => { - assert.deepStrictEqual(_.intersection(eqNumber)(new Set([1, 2]), new Set([1, 3])), new Set([1])) + assert.deepStrictEqual(_.intersection(Eq.eqNumber)(new Set([1, 2]), new Set([1, 3])), new Set([1])) - assert.deepStrictEqual(pipe(new Set([1, 2]), _.intersection(eqNumber)(new Set([1, 3]))), new Set([1])) + assert.deepStrictEqual(pipe(new Set([1, 2]), _.intersection(Eq.eqNumber)(new Set([1, 3]))), new Set([1])) }) it('partitionMap', () => { - assert.deepStrictEqual(_.partitionMap(eqNumber, eqString)((n: number) => left(n))(new Set([])), { + assert.deepStrictEqual(_.partitionMap(Eq.eqNumber, Eq.eqString)((n: number) => left(n))(new Set([])), { left: new Set([]), right: new Set([]) }) assert.deepStrictEqual( - _.partitionMap(eqNumber, eqString)((n: number) => (n % 2 === 0 ? left(n) : right(`${n}`)))(new Set([1, 2, 3])), + _.partitionMap(Eq.eqNumber, Eq.eqString)((n: number) => (n % 2 === 0 ? left(n) : right(`${n}`)))( + new Set([1, 2, 3]) + ), { left: new Set([2]), right: new Set(['1', '3']) } ) - const SL = getStructEq({ value: eqNumber }) - const SR = getStructEq({ value: eqString }) + const SL = Eq.getStructEq({ value: Eq.eqNumber }) + const SR = Eq.getStructEq({ value: Eq.eqString }) assert.deepStrictEqual( _.partitionMap( SL, @@ -134,23 +136,23 @@ describe('ReadonlySet', () => { }) it('getUnionMonoid', () => { - const M = _.getUnionMonoid(eqNumber) + const M = _.getUnionMonoid(Eq.eqNumber) assert.deepStrictEqual(M.concat(new Set([1, 2]), new Set([1, 3])), new Set([1, 2, 3])) assert.deepStrictEqual(M.concat(new Set([1, 2]), M.empty), new Set([1, 2])) assert.deepStrictEqual(M.concat(M.empty, new Set([1, 3])), new Set([1, 3])) }) it('getIntersectionSemigroup', () => { - const S = _.getIntersectionSemigroup(eqNumber) + const S = _.getIntersectionSemigroup(Eq.eqNumber) assert.deepStrictEqual(S.concat(new Set([1, 2]), new Set([1, 3])), new Set([1])) assert.deepStrictEqual(S.concat(new Set([1, 2]), _.empty), _.empty) assert.deepStrictEqual(S.concat(_.empty, new Set([1, 3])), _.empty) }) it('difference', () => { - assert.deepStrictEqual(_.difference(eqNumber)(new Set([1, 2]), new Set([1, 3])), new Set([2])) + assert.deepStrictEqual(_.difference(Eq.eqNumber)(new Set([1, 2]), new Set([1, 3])), new Set([2])) - assert.deepStrictEqual(pipe(new Set([1, 2]), _.difference(eqNumber)(new Set([1, 3]))), new Set([2])) + assert.deepStrictEqual(pipe(new Set([1, 2]), _.difference(Eq.eqNumber)(new Set([1, 3]))), new Set([2])) }) it('reduce', () => { @@ -169,29 +171,32 @@ describe('ReadonlySet', () => { it('insert', () => { const x = new Set([1, 2]) - assert.deepStrictEqual(_.insert(eqNumber)(3)(x), new Set([1, 2, 3])) + assert.deepStrictEqual(_.insert(Eq.eqNumber)(3)(x), new Set([1, 2, 3])) // should return the same ference if the element is already a member - assert.deepStrictEqual(_.insert(eqNumber)(2)(x), x) + assert.deepStrictEqual(_.insert(Eq.eqNumber)(2)(x), x) }) it('remove', () => { - assert.deepStrictEqual(_.remove(eqNumber)(3)(new Set([1, 2])), new Set([1, 2])) - assert.deepStrictEqual(_.remove(eqNumber)(1)(new Set([1, 2])), new Set([2])) + assert.deepStrictEqual(_.remove(Eq.eqNumber)(3)(new Set([1, 2])), new Set([1, 2])) + assert.deepStrictEqual(_.remove(Eq.eqNumber)(1)(new Set([1, 2])), new Set([2])) }) it('fromArray', () => { - assert.deepStrictEqual(_.fromArray(eqNumber)([]), new Set([])) - assert.deepStrictEqual(_.fromArray(eqNumber)([1]), new Set([1])) - assert.deepStrictEqual(_.fromArray(eqNumber)([1, 1]), new Set([1])) - assert.deepStrictEqual(_.fromArray(eqNumber)([1, 2]), new Set([1, 2])) + assert.deepStrictEqual(_.fromArray(Eq.eqNumber)([]), new Set([])) + assert.deepStrictEqual(_.fromArray(Eq.eqNumber)([1]), new Set([1])) + assert.deepStrictEqual(_.fromArray(Eq.eqNumber)([1, 1]), new Set([1])) + assert.deepStrictEqual(_.fromArray(Eq.eqNumber)([1, 2]), new Set([1, 2])) assert.deepStrictEqual(_.fromArray(fooEq)(['a', 'a', 'b'].map(foo)), new Set(['a', 'b'].map(foo))) }) it('compact', () => { - assert.deepStrictEqual(_.compact(eqNumber)(new Set([optionSome(1), none, optionSome(2)])), new Set([1, 2])) + assert.deepStrictEqual(_.compact(Eq.eqNumber)(new Set([optionSome(1), none, optionSome(2)])), new Set([1, 2])) type R = { readonly id: string } - const S: Eq = eq.contramap(eqString, (x) => x.id) + const S: Eq.Eq = pipe( + Eq.eqString, + Eq.contramap((x) => x.id) + ) assert.deepStrictEqual( _.compact(S)(new Set([optionSome({ id: 'a' }), none, optionSome({ id: 'a' })])), new Set([{ id: 'a' }]) @@ -199,14 +204,20 @@ describe('ReadonlySet', () => { }) it('separate', () => { - assert.deepStrictEqual(_.separate(eqString, eqNumber)(new Set([right(1), left('a'), right(2)])), { + assert.deepStrictEqual(_.separate(Eq.eqString, Eq.eqNumber)(new Set([right(1), left('a'), right(2)])), { left: new Set(['a']), right: new Set([1, 2]) }) type L = { readonly error: string } type R = { readonly id: string } - const SL: Eq = eq.contramap(eqString, (x) => x.error) - const SR: Eq = eq.contramap(eqString, (x) => x.id) + const SL: Eq.Eq = pipe( + Eq.eqString, + Eq.contramap((x) => x.error) + ) + const SR: Eq.Eq = pipe( + Eq.eqString, + Eq.contramap((x) => x.id) + ) assert.deepStrictEqual( _.separate( SL, @@ -221,11 +232,16 @@ describe('ReadonlySet', () => { it('filterMap', () => { assert.deepStrictEqual( - _.filterMap(eqNumber)((s: string) => (s.length > 1 ? optionSome(s.length) : none))(new Set(['a', 'bb', 'ccc'])), + _.filterMap(Eq.eqNumber)((s: string) => (s.length > 1 ? optionSome(s.length) : none))( + new Set(['a', 'bb', 'ccc']) + ), new Set([2, 3]) ) type R = { readonly id: string } - const S: Eq = eq.contramap(eqString, (x) => x.id) + const S: Eq.Eq = pipe( + Eq.eqString, + Eq.contramap((x) => x.id) + ) assert.deepStrictEqual( _.filterMap(S)((x: { readonly id: string }) => optionSome(x))(new Set([{ id: 'a' }, { id: 'a' }])), new Set([{ id: 'a' }]) diff --git a/test/Set.ts b/test/Set.ts index 4b94fc7ea..dcbca22cc 100644 --- a/test/Set.ts +++ b/test/Set.ts @@ -30,7 +30,7 @@ import { getShow, empty } from '../src/Set' -import { Eq, eqNumber, eqString, eq, getStructEq } from '../src/Eq' +import * as Eq from '../src/Eq' import { none, some as optionSome } from '../src/Option' import { showString } from '../src/Show' import { getMonoid } from '../src/Array' @@ -42,7 +42,7 @@ interface Foo { readonly x: string } const foo = (x: string): Foo => ({ x }) -const fooEq: Eq = { +const fooEq: Eq.Eq = { equals: (a: Foo, b: Foo) => a.x === b.x } @@ -54,7 +54,7 @@ describe('Set', () => { }) it('getEq', () => { - const S = getEq(eqNumber) + const S = getEq(Eq.eqNumber) assert.deepStrictEqual(S.equals(new Set([1, 2, 3]), new Set([1, 2, 3])), true) assert.deepStrictEqual(S.equals(new Set([1, 2, 3]), new Set([1, 2])), false) assert.deepStrictEqual(S.equals(new Set([1, 2]), new Set([1, 2, 3])), false) @@ -67,9 +67,9 @@ describe('Set', () => { }) it('map', () => { - assert.deepStrictEqual(map(eqNumber)((n: number) => n % 2)(new Set([])), new Set([])) - assert.deepStrictEqual(map(eqNumber)((n: number) => n % 2)(new Set([1, 2, 3, 4])), new Set([0, 1])) - assert.deepStrictEqual(map(eqString)((n: number) => `${n % 2}`)(new Set([1, 2, 3, 4])), new Set(['0', '1'])) + assert.deepStrictEqual(map(Eq.eqNumber)((n: number) => n % 2)(new Set([])), new Set([])) + assert.deepStrictEqual(map(Eq.eqNumber)((n: number) => n % 2)(new Set([1, 2, 3, 4])), new Set([0, 1])) + assert.deepStrictEqual(map(Eq.eqString)((n: number) => `${n % 2}`)(new Set([1, 2, 3, 4])), new Set(['0', '1'])) }) it('every', () => { @@ -78,20 +78,20 @@ describe('Set', () => { }) it('chain', () => { - assert.deepStrictEqual(chain(eqString)((n: number) => new Set([n.toString()]))(new Set([])), new Set([])) - assert.deepStrictEqual(chain(eqString)(() => new Set([]))(new Set([1, 2])), new Set([])) + assert.deepStrictEqual(chain(Eq.eqString)((n: number) => new Set([n.toString()]))(new Set([])), new Set([])) + assert.deepStrictEqual(chain(Eq.eqString)(() => new Set([]))(new Set([1, 2])), new Set([])) assert.deepStrictEqual( - chain(eqString)((n: number) => new Set([`${n}`, `${n + 1}`]))(new Set([1, 2])), + chain(Eq.eqString)((n: number) => new Set([`${n}`, `${n + 1}`]))(new Set([1, 2])), new Set(['1', '2', '3']) ) }) it('subset', () => { - assert.deepStrictEqual(subset(eqNumber)(new Set([1, 2]), new Set([1, 2, 3])), true) - assert.deepStrictEqual(subset(eqNumber)(new Set([1, 2, 4]), new Set([1, 2, 3])), false) + assert.deepStrictEqual(subset(Eq.eqNumber)(new Set([1, 2]), new Set([1, 2, 3])), true) + assert.deepStrictEqual(subset(Eq.eqNumber)(new Set([1, 2, 4]), new Set([1, 2, 3])), false) - assert.deepStrictEqual(pipe(new Set([1, 2]), subset(eqNumber)(new Set([1, 2, 3]))), true) - assert.deepStrictEqual(pipe(new Set([1, 2, 4]), subset(eqNumber)(new Set([1, 2, 3]))), false) + assert.deepStrictEqual(pipe(new Set([1, 2]), subset(Eq.eqNumber)(new Set([1, 2, 3]))), true) + assert.deepStrictEqual(pipe(new Set([1, 2, 4]), subset(Eq.eqNumber)(new Set([1, 2, 3]))), false) }) it('filter', () => { @@ -122,31 +122,33 @@ describe('Set', () => { }) it('union', () => { - assert.deepStrictEqual(union(eqNumber)(new Set([1, 2]), new Set([1, 3])), new Set([1, 2, 3])) + assert.deepStrictEqual(union(Eq.eqNumber)(new Set([1, 2]), new Set([1, 3])), new Set([1, 2, 3])) - assert.deepStrictEqual(pipe(new Set([1, 2]), union(eqNumber)(new Set([1, 3]))), new Set([1, 2, 3])) + assert.deepStrictEqual(pipe(new Set([1, 2]), union(Eq.eqNumber)(new Set([1, 3]))), new Set([1, 2, 3])) }) it('intersection', () => { - assert.deepStrictEqual(intersection(eqNumber)(new Set([1, 2]), new Set([1, 3])), new Set([1])) + assert.deepStrictEqual(intersection(Eq.eqNumber)(new Set([1, 2]), new Set([1, 3])), new Set([1])) - assert.deepStrictEqual(pipe(new Set([1, 2]), intersection(eqNumber)(new Set([1, 3]))), new Set([1])) + assert.deepStrictEqual(pipe(new Set([1, 2]), intersection(Eq.eqNumber)(new Set([1, 3]))), new Set([1])) }) it('partitionMap', () => { - assert.deepStrictEqual(partitionMap(eqNumber, eqString)((n: number) => left(n))(new Set([])), { + assert.deepStrictEqual(partitionMap(Eq.eqNumber, Eq.eqString)((n: number) => left(n))(new Set([])), { left: new Set([]), right: new Set([]) }) assert.deepStrictEqual( - partitionMap(eqNumber, eqString)((n: number) => (n % 2 === 0 ? left(n) : right(`${n}`)))(new Set([1, 2, 3])), + partitionMap(Eq.eqNumber, Eq.eqString)((n: number) => (n % 2 === 0 ? left(n) : right(`${n}`)))( + new Set([1, 2, 3]) + ), { left: new Set([2]), right: new Set(['1', '3']) } ) - const SL = getStructEq({ value: eqNumber }) - const SR = getStructEq({ value: eqString }) + const SL = Eq.getStructEq({ value: Eq.eqNumber }) + const SR = Eq.getStructEq({ value: Eq.eqString }) assert.deepStrictEqual( partitionMap( SL, @@ -162,23 +164,23 @@ describe('Set', () => { }) it('getUnionMonoid', () => { - const M = getUnionMonoid(eqNumber) + const M = getUnionMonoid(Eq.eqNumber) assert.deepStrictEqual(M.concat(new Set([1, 2]), new Set([1, 3])), new Set([1, 2, 3])) assert.deepStrictEqual(M.concat(new Set([1, 2]), M.empty), new Set([1, 2])) assert.deepStrictEqual(M.concat(M.empty, new Set([1, 3])), new Set([1, 3])) }) it('getIntersectionSemigroup', () => { - const S = getIntersectionSemigroup(eqNumber) + const S = getIntersectionSemigroup(Eq.eqNumber) assert.deepStrictEqual(S.concat(new Set([1, 2]), new Set([1, 3])), new Set([1])) assert.deepStrictEqual(S.concat(new Set([1, 2]), empty), empty) assert.deepStrictEqual(S.concat(empty, new Set([1, 3])), empty) }) it('difference', () => { - assert.deepStrictEqual(difference(eqNumber)(new Set([1, 2]), new Set([1, 3])), new Set([2])) + assert.deepStrictEqual(difference(Eq.eqNumber)(new Set([1, 2]), new Set([1, 3])), new Set([2])) - assert.deepStrictEqual(pipe(new Set([1, 2]), difference(eqNumber)(new Set([1, 3]))), new Set([2])) + assert.deepStrictEqual(pipe(new Set([1, 2]), difference(Eq.eqNumber)(new Set([1, 3]))), new Set([2])) }) it('reduce', () => { @@ -197,34 +199,37 @@ describe('Set', () => { it('insert', () => { const x = new Set([1, 2]) - assert.deepStrictEqual(insert(eqNumber)(3)(x), new Set([1, 2, 3])) + assert.deepStrictEqual(insert(Eq.eqNumber)(3)(x), new Set([1, 2, 3])) // should return the same ference if the element is already a member - assert.deepStrictEqual(insert(eqNumber)(2)(x), x) + assert.deepStrictEqual(insert(Eq.eqNumber)(2)(x), x) }) it('remove', () => { - assert.deepStrictEqual(remove(eqNumber)(3)(new Set([1, 2])), new Set([1, 2])) - assert.deepStrictEqual(remove(eqNumber)(1)(new Set([1, 2])), new Set([2])) + assert.deepStrictEqual(remove(Eq.eqNumber)(3)(new Set([1, 2])), new Set([1, 2])) + assert.deepStrictEqual(remove(Eq.eqNumber)(1)(new Set([1, 2])), new Set([2])) }) it('toggle', () => { - assert.deepStrictEqual(toggle(eqNumber)(1)(new Set([2])), new Set([1, 2])) - assert.deepStrictEqual(toggle(eqNumber)(1)(new Set([1, 2])), new Set([2])) + assert.deepStrictEqual(toggle(Eq.eqNumber)(1)(new Set([2])), new Set([1, 2])) + assert.deepStrictEqual(toggle(Eq.eqNumber)(1)(new Set([1, 2])), new Set([2])) }) it('fromArray', () => { - assert.deepStrictEqual(fromArray(eqNumber)([]), new Set([])) - assert.deepStrictEqual(fromArray(eqNumber)([1]), new Set([1])) - assert.deepStrictEqual(fromArray(eqNumber)([1, 1]), new Set([1])) - assert.deepStrictEqual(fromArray(eqNumber)([1, 2]), new Set([1, 2])) + assert.deepStrictEqual(fromArray(Eq.eqNumber)([]), new Set([])) + assert.deepStrictEqual(fromArray(Eq.eqNumber)([1]), new Set([1])) + assert.deepStrictEqual(fromArray(Eq.eqNumber)([1, 1]), new Set([1])) + assert.deepStrictEqual(fromArray(Eq.eqNumber)([1, 2]), new Set([1, 2])) assert.deepStrictEqual(fromArray(fooEq)(['a', 'a', 'b'].map(foo)), new Set(['a', 'b'].map(foo))) }) it('compact', () => { - assert.deepStrictEqual(compact(eqNumber)(new Set([optionSome(1), none, optionSome(2)])), new Set([1, 2])) + assert.deepStrictEqual(compact(Eq.eqNumber)(new Set([optionSome(1), none, optionSome(2)])), new Set([1, 2])) type R = { readonly id: string } - const S: Eq = eq.contramap(eqString, (x) => x.id) + const S: Eq.Eq = pipe( + Eq.eqString, + Eq.contramap((x) => x.id) + ) assert.deepStrictEqual( compact(S)(new Set([optionSome({ id: 'a' }), none, optionSome({ id: 'a' })])), new Set([{ id: 'a' }]) @@ -232,14 +237,20 @@ describe('Set', () => { }) it('separate', () => { - assert.deepStrictEqual(separate(eqString, eqNumber)(new Set([right(1), left('a'), right(2)])), { + assert.deepStrictEqual(separate(Eq.eqString, Eq.eqNumber)(new Set([right(1), left('a'), right(2)])), { left: new Set(['a']), right: new Set([1, 2]) }) type L = { readonly error: string } type R = { readonly id: string } - const SL: Eq = eq.contramap(eqString, (x) => x.error) - const SR: Eq = eq.contramap(eqString, (x) => x.id) + const SL: Eq.Eq = pipe( + Eq.eqString, + Eq.contramap((x) => x.error) + ) + const SR: Eq.Eq = pipe( + Eq.eqString, + Eq.contramap((x) => x.id) + ) assert.deepStrictEqual( separate( SL, @@ -254,11 +265,14 @@ describe('Set', () => { it('filterMap', () => { assert.deepStrictEqual( - filterMap(eqNumber)((s: string) => (s.length > 1 ? optionSome(s.length) : none))(new Set(['a', 'bb', 'ccc'])), + filterMap(Eq.eqNumber)((s: string) => (s.length > 1 ? optionSome(s.length) : none))(new Set(['a', 'bb', 'ccc'])), new Set([2, 3]) ) type R = { readonly id: string } - const S: Eq = eq.contramap(eqString, (x) => x.id) + const S: Eq.Eq = pipe( + Eq.eqString, + Eq.contramap((x) => x.id) + ) assert.deepStrictEqual( filterMap(S)((x: { readonly id: string }) => optionSome(x))(new Set([{ id: 'a' }, { id: 'a' }])), new Set([{ id: 'a' }]) diff --git a/test/Tree.ts b/test/Tree.ts index 024f4a6c0..1906c7a12 100644 --- a/test/Tree.ts +++ b/test/Tree.ts @@ -1,5 +1,5 @@ import * as assert from 'assert' -import { eq, Eq, eqNumber } from '../src/Eq' +import * as Eq from '../src/Eq' import { identity, pipe } from '../src/function' import * as I from '../src/Identity' import * as O from '../src/Option' @@ -148,7 +148,7 @@ describe('Tree', () => { }) it('getEq', () => { - const S = _.getEq(eqNumber) + const S = _.getEq(Eq.eqNumber) const x = _.make(1, [_.make(2)]) const y = _.make(2, [_.make(2)]) const z = _.make(1, [_.make(1)]) @@ -173,7 +173,10 @@ describe('Tree', () => { interface User { readonly id: number } - const S: Eq = eq.contramap(eqNumber, (user: User) => user.id) + const S: Eq.Eq = pipe( + Eq.eqNumber, + Eq.contramap((user: User) => user.id) + ) const users = _.make({ id: 1 }, [_.make({ id: 1 }, [_.make({ id: 3 }), _.make({ id: 4 })]), _.make({ id: 2 })]) assert.deepStrictEqual(_.elem(S)({ id: 1 }, users), true) assert.deepStrictEqual(_.elem(S)({ id: 4 }, users), true) From 6594ed041a57017bfff2fa451be3387c0dd1d8b3 Mon Sep 17 00:00:00 2001 From: gcanti Date: Wed, 17 Jun 2020 08:45:02 +0200 Subject: [PATCH 049/106] split `identity` mega instance --- CHANGELOG.md | 11 +++ docs/modules/Identity.ts.md | 114 ++++++++++++++++++++++++++- src/Identity.ts | 153 ++++++++++++++++++++++++++++++------ test/Identity.ts | 2 +- test/Tree.ts | 2 +- 5 files changed, 255 insertions(+), 27 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a3c7cd46f..75fbdc6dc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -53,6 +53,17 @@ high state of flux, you're at risk of it changing without notice. - add `monadThrowEither` instance (@gcanti) - `Eq` - add `contravariantEq` instance (@gcanti) + - `Identity` + - add `functorIdentity` instance (@gcanti) + - add `applyIdentity` instance (@gcanti) + - add `applicativeIdentity` instance (@gcanti) + - add `monadIdentity` instance (@gcanti) + - add `foldableIdentity` instance (@gcanti) + - add `traversableIdentity` instance (@gcanti) + - add `altIdentity` instance (@gcanti) + - add `extendIdentity` instance (@gcanti) + - add `comonadIdentity` instance (@gcanti) + - add `chainRecIdentity` instance (@gcanti) - `ReadonlyArray` - add `functorArray` instance (@gcanti) - add `functorWithIndexArray` instance (@gcanti) diff --git a/docs/modules/Identity.ts.md b/docs/modules/Identity.ts.md index 68fd382d9..933a23000 100644 --- a/docs/modules/Identity.ts.md +++ b/docs/modules/Identity.ts.md @@ -36,9 +36,19 @@ Added in v2.0.0 - [instances](#instances) - [URI](#uri) - [URI (type alias)](#uri-type-alias) + - [altIdentity](#altidentity) + - [applicativeIdentity](#applicativeidentity) + - [applyIdentity](#applyidentity) + - [chainRecIdentity](#chainrecidentity) + - [comonadIdentity](#comonadidentity) + - [extendIdentity](#extendidentity) + - [foldableIdentity](#foldableidentity) + - [functorIdentity](#functoridentity) - [getEq](#geteq) - [getShow](#getshow) - - [identity](#identity) + - [monadIdentity](#monadidentity) + - [traversableIdentity](#traversableidentity) + - [~~identity~~](#identity) - [model](#model) - [Identity (type alias)](#identity-type-alias) - [utils](#utils) @@ -240,6 +250,86 @@ export type URI = typeof URI Added in v2.0.0 +## altIdentity + +**Signature** + +```ts +export declare const altIdentity: Alt1<'Identity'> +``` + +Added in v2.7.0 + +## applicativeIdentity + +**Signature** + +```ts +export declare const applicativeIdentity: Applicative1<'Identity'> +``` + +Added in v2.7.0 + +## applyIdentity + +**Signature** + +```ts +export declare const applyIdentity: Apply1<'Identity'> +``` + +Added in v2.7.0 + +## chainRecIdentity + +**Signature** + +```ts +export declare const chainRecIdentity: ChainRec1<'Identity'> +``` + +Added in v2.7.0 + +## comonadIdentity + +**Signature** + +```ts +export declare const comonadIdentity: Comonad1<'Identity'> +``` + +Added in v2.7.0 + +## extendIdentity + +**Signature** + +```ts +export declare const extendIdentity: Extend1<'Identity'> +``` + +Added in v2.7.0 + +## foldableIdentity + +**Signature** + +```ts +export declare const foldableIdentity: Foldable1<'Identity'> +``` + +Added in v2.7.0 + +## functorIdentity + +**Signature** + +```ts +export declare const functorIdentity: Functor1<'Identity'> +``` + +Added in v2.7.0 + ## getEq **Signature** @@ -260,7 +350,27 @@ export declare const getShow: (S: Show) => Show Added in v2.0.0 -## identity +## monadIdentity + +**Signature** + +```ts +export declare const monadIdentity: Monad1<'Identity'> +``` + +Added in v2.7.0 + +## traversableIdentity + +**Signature** + +```ts +export declare const traversableIdentity: Traversable1<'Identity'> +``` + +Added in v2.7.0 + +## ~~identity~~ **Signature** diff --git a/src/Identity.ts b/src/Identity.ts index 370a10308..fc81be6cf 100644 --- a/src/Identity.ts +++ b/src/Identity.ts @@ -2,7 +2,7 @@ * @since 2.0.0 */ import { Alt1 } from './Alt' -import { Applicative } from './Applicative' +import { Applicative, Applicative1 } from './Applicative' import { ChainRec1, tailRec } from './ChainRec' import { Comonad1 } from './Comonad' import { Eq } from './Eq' @@ -13,6 +13,9 @@ import { Monad1 } from './Monad' import { Monoid } from './Monoid' import { Show } from './Show' import { PipeableTraverse1, Traversable1 } from './Traversable' +import { Functor1 } from './Functor' +import { Apply1 } from './Apply' +import { Extend1 } from './Extend' // ------------------------------------------------------------------------------------- // model @@ -40,26 +43,6 @@ export const getEq: (E: Eq) => Eq> = id // pipeables // ------------------------------------------------------------------------------------- -const alt_: (fa: A, that: Lazy) => A = id - -const extend_: (wa: A, f: (wa: A) => B) => B = (wa, f) => f(wa) - -const map_: (fa: Identity, f: (a: A) => B) => Identity = (ma, f) => f(ma) - -const ap_: (fab: Identity<(a: A) => B>, fa: Identity) => Identity = (mab, ma) => mab(ma) - -const chain_: (fa: Identity, f: (a: A) => Identity) => Identity = (ma, f) => f(ma) - -const reduce_: (fa: Identity, b: B, f: (b: B, a: A) => B) => B = (fa, b, f) => f(b, fa) - -const foldMap_: (M: Monoid) => (fa: Identity, f: (a: A) => M) => M = (_) => (fa, f) => f(fa) - -const reduceRight_: (fa: Identity, b: B, f: (a: A, b: B) => B) => B = (fa, b, f) => f(fa, b) - -const traverse_ = (F: Applicative) => (ta: Identity, f: (a: A) => HKT): HKT> => { - return F.map(f(ta), id) -} - /** * @since 2.6.3 */ @@ -198,6 +181,19 @@ export const map: (f: (a: A) => B) => (fa: Identity) => Identity = ( // instances // ------------------------------------------------------------------------------------- +const alt_: (fa: A, that: Lazy) => A = id +const extend_: (wa: A, f: (wa: A) => B) => B = (wa, f) => f(wa) +const map_: (fa: Identity, f: (a: A) => B) => Identity = (ma, f) => f(ma) +const ap_: (fab: Identity<(a: A) => B>, fa: Identity) => Identity = (mab, ma) => mab(ma) +const chain_: (fa: Identity, f: (a: A) => Identity) => Identity = (ma, f) => f(ma) +const reduce_: (fa: Identity, b: B, f: (b: B, a: A) => B) => B = (fa, b, f) => f(b, fa) +const foldMap_: (M: Monoid) => (fa: Identity, f: (a: A) => M) => M = (_) => (fa, f) => f(fa) +const reduceRight_: (fa: Identity, b: B, f: (a: A, b: B) => B) => B = (fa, b, f) => f(fa, b) +const traverse_ = (F: Applicative) => (ta: Identity, f: (a: A) => HKT): HKT> => + F.map(f(ta), id) +const of = id +const chainRec_ = tailRec + /** * @category instances * @since 2.0.0 @@ -216,15 +212,126 @@ declare module './HKT' { } } +/** + * @category instances + * @since 2.7.0 + */ +export const functorIdentity: Functor1 = { + URI, + map: map_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const applyIdentity: Apply1 = { + URI, + map: map_, + ap: ap_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const applicativeIdentity: Applicative1 = { + URI, + map: map_, + ap: ap_, + of +} + +/** + * @category instances + * @since 2.7.0 + */ +export const monadIdentity: Monad1 = { + URI, + map: map_, + ap: ap_, + of, + chain: chain_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const foldableIdentity: Foldable1 = { + URI, + reduce: reduce_, + foldMap: foldMap_, + reduceRight: reduceRight_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const traversableIdentity: Traversable1 = { + URI, + map: map_, + reduce: reduce_, + foldMap: foldMap_, + reduceRight: reduceRight_, + traverse: traverse_, + sequence +} + +/** + * @category instances + * @since 2.7.0 + */ +export const altIdentity: Alt1 = { + URI, + map: map_, + alt: alt_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const extendIdentity: Extend1 = { + URI, + map: map_, + extend: extend_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const comonadIdentity: Comonad1 = { + URI, + map: map_, + extend: extend_, + extract +} + +/** + * @category instances + * @since 2.7.0 + */ +export const chainRecIdentity: ChainRec1 = { + URI, + map: map_, + ap: ap_, + chain: chain_, + chainRec: chainRec_ +} + /** * @category instances * @since 2.0.0 + * @deprecated */ export const identity: Monad1 & Foldable1 & Traversable1 & Alt1 & Comonad1 & ChainRec1 = { URI, map: map_, - of: id, ap: ap_, + of, chain: chain_, reduce: reduce_, foldMap: foldMap_, @@ -234,5 +341,5 @@ export const identity: Monad1 & Foldable1 & Traversable1 & Alt1 { }) it('ChainRec', () => { - const x = _.identity.chainRec(0, (a) => (a < 10 ? left(a + 1) : right(a))) + const x = _.chainRecIdentity.chainRec(0, (a) => (a < 10 ? left(a + 1) : right(a))) const expected = 10 assert.deepStrictEqual(x, expected) }) diff --git a/test/Tree.ts b/test/Tree.ts index 1906c7a12..0641ef892 100644 --- a/test/Tree.ts +++ b/test/Tree.ts @@ -164,7 +164,7 @@ describe('Tree', () => { }) it('unfoldTreeM', () => { - const fa = _.unfoldTreeM(I.identity)(1, (b) => [b, b < 3 ? [b + 1, b + 2] : []]) + const fa = _.unfoldTreeM(I.monadIdentity)(1, (b) => [b, b < 3 ? [b + 1, b + 2] : []]) const expected = _.make(1, [_.make(2, [_.make(3), _.make(4)]), _.make(3)]) assert.deepStrictEqual(fa, expected) }) From 17586619262f82d26365c09d665b15f62f270e49 Mon Sep 17 00:00:00 2001 From: gcanti Date: Wed, 17 Jun 2020 09:09:19 +0200 Subject: [PATCH 050/106] split `io` mega instance --- CHANGELOG.md | 7 +++ docs/modules/IO.ts.md | 66 ++++++++++++++++++++++ src/IO.ts | 102 +++++++++++++++++++++++++--------- test/EitherT.ts | 18 +++--- test/Foldable.ts | 4 +- test/IO.ts | 2 +- test/IOEither.ts | 30 +++++----- test/IORef.ts | 26 +++++++-- test/ReaderTaskEither.ts | 4 +- test/ReadonlyMap.ts | 2 +- test/ReadonlyRecord.ts | 2 +- test/StateReaderTaskEither.ts | 6 +- test/TaskEither.ts | 4 +- 13 files changed, 208 insertions(+), 65 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 75fbdc6dc..f40dbd02a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -64,6 +64,13 @@ high state of flux, you're at risk of it changing without notice. - add `extendIdentity` instance (@gcanti) - add `comonadIdentity` instance (@gcanti) - add `chainRecIdentity` instance (@gcanti) + - `IO` + - add `functorIO` instance (@gcanti) + - add `applyIO` instance (@gcanti) + - add `applicativeIO` instance (@gcanti) + - add `monadIO` instance (@gcanti) + - add `monadIOIO` instance (@gcanti) + - add `chainRecIO` instance (@gcanti) - `ReadonlyArray` - add `functorArray` instance (@gcanti) - add `functorWithIndexArray` instance (@gcanti) diff --git a/docs/modules/IO.ts.md b/docs/modules/IO.ts.md index 6adbb37fa..08457181d 100644 --- a/docs/modules/IO.ts.md +++ b/docs/modules/IO.ts.md @@ -37,9 +37,15 @@ Added in v2.0.0 - [instances](#instances) - [URI](#uri) - [URI (type alias)](#uri-type-alias) + - [applicativeIO](#applicativeio) + - [applyIO](#applyio) + - [chainRecIO](#chainrecio) + - [functorIO](#functorio) - [getMonoid](#getmonoid) - [getSemigroup](#getsemigroup) - [io](#io) + - [monadIO](#monadio) + - [monadIOIO](#monadioio) - [model](#model) - [IO (interface)](#io-interface) @@ -167,6 +173,46 @@ export type URI = typeof URI Added in v2.0.0 +## applicativeIO + +**Signature** + +```ts +export declare const applicativeIO: Applicative1<'IO'> +``` + +Added in v2.7.0 + +## applyIO + +**Signature** + +```ts +export declare const applyIO: Apply1<'IO'> +``` + +Added in v2.7.0 + +## chainRecIO + +**Signature** + +```ts +export declare const chainRecIO: ChainRec1<'IO'> +``` + +Added in v2.7.0 + +## functorIO + +**Signature** + +```ts +export declare const functorIO: Functor1<'IO'> +``` + +Added in v2.7.0 + ## getMonoid **Signature** @@ -197,6 +243,26 @@ export declare const io: Monad1<'IO'> & MonadIO1<'IO'> & ChainRec1<'IO'> Added in v2.0.0 +## monadIO + +**Signature** + +```ts +export declare const monadIO: Monad1<'IO'> +``` + +Added in v2.7.0 + +## monadIOIO + +**Signature** + +```ts +export declare const monadIOIO: MonadIO1<'IO'> +``` + +Added in v2.7.0 + # model ## IO (interface) diff --git a/src/IO.ts b/src/IO.ts index a23c3c2d1..12b8d0159 100644 --- a/src/IO.ts +++ b/src/IO.ts @@ -18,6 +18,8 @@ import { MonadIO1 } from './MonadIO' import { Monoid } from './Monoid' import { Semigroup } from './Semigroup' import { Apply1 } from './Apply' +import { Functor1 } from './Functor' +import { Applicative1 } from './Applicative' // ------------------------------------------------------------------------------------- // model @@ -108,6 +110,18 @@ export const flatten: (mma: IO>) => IO = (mma) => chain_(mma, identi // instances // ------------------------------------------------------------------------------------- +const map_: (fa: IO, f: (a: A) => B) => IO = (ma, f) => () => f(ma()) +const ap_: (fab: IO<(a: A) => B>, fa: IO) => IO = (mab, ma) => () => mab()(ma()) +const chain_: (fa: IO, f: (a: A) => IO) => IO = (ma, f) => () => f(ma())() +const fromIO_ = identity +const chainRec_: ChainRec1['chainRec'] = (a, f) => () => { + let e = f(a)() + while (e._tag === 'Left') { + e = f(e.left)() + } + return e.right +} + /** * @category instances * @since 2.0.0 @@ -126,12 +140,39 @@ declare module './HKT' { } } -const map_: (fa: IO, f: (a: A) => B) => IO = (ma, f) => () => f(ma()) -const ap_: (fab: IO<(a: A) => B>, fa: IO) => IO = (mab, ma) => () => mab()(ma()) -const chain_: (fa: IO, f: (a: A) => IO) => IO = (ma, f) => () => f(ma())() +/** + * @category instances + * @since 2.0.0 + */ +export function getSemigroup(S: Semigroup): Semigroup> { + return { + concat: (x, y) => () => S.concat(x(), y()) + } +} + +/** + * @category instances + * @since 2.0.0 + */ +export function getMonoid(M: Monoid): Monoid> { + return { + concat: getSemigroup(M).concat, + empty: of(M.empty) + } +} + +/** + * @category instances + * @since 2.7.0 + */ +export const functorIO: Functor1 = { + URI, + map: map_ +} /** - * @internal + * @category instances + * @since 2.7.0 */ export const applyIO: Apply1 = { URI, @@ -140,37 +181,54 @@ export const applyIO: Apply1 = { } /** - * @internal + * @category instances + * @since 2.7.0 + */ +export const applicativeIO: Applicative1 = { + URI, + map: map_, + ap: ap_, + of +} + +/** + * @category instances + * @since 2.7.0 */ export const monadIO: Monad1 = { URI, map: map_, - of, ap: ap_, + of, chain: chain_ } /** * @category instances - * @since 2.0.0 + * @since 2.7.0 */ -export function getSemigroup(S: Semigroup): Semigroup> { - return { - concat: (x, y) => () => S.concat(x(), y()) - } +export const monadIOIO: MonadIO1 = { + URI, + map: map_, + ap: ap_, + of, + chain: chain_, + fromIO: fromIO_ } /** * @category instances - * @since 2.0.0 + * @since 2.7.0 */ -export function getMonoid(M: Monoid): Monoid> { - return { - concat: getSemigroup(M).concat, - empty: of(M.empty) - } +export const chainRecIO: ChainRec1 = { + URI, + map: map_, + ap: ap_, + chain: chain_, + chainRec: chainRec_ } +// TODO: remove in v3 /** * @category instances * @since 2.0.0 @@ -181,12 +239,6 @@ export const io: Monad1 & MonadIO1 & ChainRec1 = { of, ap: ap_, chain: chain_, - fromIO: identity, - chainRec: (a, f) => () => { - let e = f(a)() - while (e._tag === 'Left') { - e = f(e.left)() - } - return e.right - } + fromIO: fromIO_, + chainRec: chainRec_ } diff --git a/test/EitherT.ts b/test/EitherT.ts index bfd463085..7d9b9a484 100644 --- a/test/EitherT.ts +++ b/test/EitherT.ts @@ -1,21 +1,21 @@ import * as assert from 'assert' import * as E from '../src/Either' import { getEitherM } from '../src/EitherT' -import { io } from '../src/IO' +import * as I from '../src/IO' -const T = getEitherM(io) +const T = getEitherM(I.monadIO) describe('EitherT', () => { it('fold', () => { - const onLeft = (s: string) => io.of(`left(${s})`) - const onRight = (n: number) => io.of(`right(${n})`) - assert.deepStrictEqual(T.fold(io.of(E.right(1)), onLeft, onRight)(), 'right(1)') - assert.deepStrictEqual(T.fold(io.of(E.left('bb')), onLeft, onRight)(), 'left(bb)') + const onLeft = (s: string) => I.of(`left(${s})`) + const onRight = (n: number) => I.of(`right(${n})`) + assert.deepStrictEqual(T.fold(I.of(E.right(1)), onLeft, onRight)(), 'right(1)') + assert.deepStrictEqual(T.fold(I.of(E.left('bb')), onLeft, onRight)(), 'left(bb)') }) it('getOrElse', () => { - const onLeft = (s: string) => io.of(`left(${s})`) - assert.deepStrictEqual(T.getOrElse(io.of(E.right('a')), onLeft)(), 'a') - assert.deepStrictEqual(T.getOrElse(io.of(E.left('bb')), onLeft)(), 'left(bb)') + const onLeft = (s: string) => I.of(`left(${s})`) + assert.deepStrictEqual(T.getOrElse(I.of(E.right('a')), onLeft)(), 'a') + assert.deepStrictEqual(T.getOrElse(I.of(E.left('bb')), onLeft)(), 'left(bb)') }) }) diff --git a/test/Foldable.ts b/test/Foldable.ts index 951df2c55..27ff07211 100644 --- a/test/Foldable.ts +++ b/test/Foldable.ts @@ -1,7 +1,7 @@ import * as assert from 'assert' import * as A from '../src/ReadonlyArray' import { foldM, getFoldableComposition, intercalate, traverse_ } from '../src/Foldable' -import { io } from '../src/IO' +import * as I from '../src/IO' import { monoidString } from '../src/Monoid' import * as option from '../src/Option' @@ -54,7 +54,7 @@ describe('Foldable', () => { it('traverse_', () => { let log = '' const append = (s: String) => () => (log += s) - traverse_(io, A.foldableArray)(['a', 'b', 'c'], append)() + traverse_(I.applicativeIO, A.foldableArray)(['a', 'b', 'c'], append)() assert.deepStrictEqual(log, 'abc') }) diff --git a/test/IO.ts b/test/IO.ts index e95496a3d..9d33ada00 100644 --- a/test/IO.ts +++ b/test/IO.ts @@ -61,6 +61,6 @@ describe('IO', () => { it('chainRec', () => { const f = (n: number) => (n < 15000 ? _.of(E.left(n + 1)) : _.of(E.right('ok ' + n))) - assert.deepStrictEqual(_.io.chainRec(0, f)(), 'ok 15000') + assert.deepStrictEqual(_.chainRecIO.chainRec(0, f)(), 'ok 15000') }) }) diff --git a/test/IOEither.ts b/test/IOEither.ts index fd3204151..be0664acd 100644 --- a/test/IOEither.ts +++ b/test/IOEither.ts @@ -2,7 +2,7 @@ import * as assert from 'assert' import { getMonoid } from '../src/Array' import * as E from '../src/Either' import { pipe } from '../src/function' -import { io } from '../src/IO' +import * as I from '../src/IO' import * as _ from '../src/IOEither' import { monoidString } from '../src/Monoid' import { none, some } from '../src/Option' @@ -173,23 +173,23 @@ describe('IOEither', () => { it('fold', () => { assert.deepStrictEqual( _.fold( - () => io.of('left'), - () => io.of('right') + () => I.of('left'), + () => I.of('right') )(_.right(1))(), 'right' ) assert.deepStrictEqual( _.fold( - () => io.of('left'), - () => io.of('right') + () => I.of('left'), + () => I.of('right') )(_.left(1))(), 'left' ) }) it('getOrElse', () => { - assert.deepStrictEqual(_.getOrElse(() => io.of(2))(_.ioEither.of(1))(), 1) - assert.deepStrictEqual(_.getOrElse(() => io.of(2))(_.left(1))(), 2) + assert.deepStrictEqual(_.getOrElse(() => I.of(2))(_.ioEither.of(1))(), 1) + assert.deepStrictEqual(_.getOrElse(() => I.of(2))(_.left(1))(), 2) }) it('orElse', () => { @@ -209,20 +209,20 @@ describe('IOEither', () => { describe('getSemigroup', () => { it('concat', () => { const S = _.getSemigroup(semigroupSum) - assert.deepStrictEqual(S.concat(_.leftIO(io.of('a')), _.leftIO(io.of('b')))(), E.left('a')) - assert.deepStrictEqual(S.concat(_.leftIO(io.of('a')), _.rightIO(io.of(2)))(), E.right(2)) - assert.deepStrictEqual(S.concat(_.rightIO(io.of(1)), _.leftIO(io.of('b')))(), E.right(1)) - assert.deepStrictEqual(S.concat(_.rightIO(io.of(1)), _.rightIO(io.of(2)))(), E.right(3)) + assert.deepStrictEqual(S.concat(_.leftIO(I.of('a')), _.leftIO(I.of('b')))(), E.left('a')) + assert.deepStrictEqual(S.concat(_.leftIO(I.of('a')), _.rightIO(I.of(2)))(), E.right(2)) + assert.deepStrictEqual(S.concat(_.rightIO(I.of(1)), _.leftIO(I.of('b')))(), E.right(1)) + assert.deepStrictEqual(S.concat(_.rightIO(I.of(1)), _.rightIO(I.of(2)))(), E.right(3)) }) }) describe('getApplyMonoid', () => { it('concat', () => { const M = _.getApplyMonoid(monoidString) - assert.deepStrictEqual(M.concat(_.rightIO(io.of('a')), _.rightIO(io.of('b')))(), E.right('ab')) - assert.deepStrictEqual(M.concat(_.rightIO(io.of('a')), _.leftIO(io.of('b')))(), E.left('b')) - assert.deepStrictEqual(M.concat(_.rightIO(io.of('a')), M.empty)(), E.right('a')) - assert.deepStrictEqual(M.concat(M.empty, _.rightIO(io.of('a')))(), E.right('a')) + assert.deepStrictEqual(M.concat(_.rightIO(I.of('a')), _.rightIO(I.of('b')))(), E.right('ab')) + assert.deepStrictEqual(M.concat(_.rightIO(I.of('a')), _.leftIO(I.of('b')))(), E.left('b')) + assert.deepStrictEqual(M.concat(_.rightIO(I.of('a')), M.empty)(), E.right('a')) + assert.deepStrictEqual(M.concat(M.empty, _.rightIO(I.of('a')))(), E.right('a')) }) }) diff --git a/test/IORef.ts b/test/IORef.ts index 89475decc..aec3b4da2 100644 --- a/test/IORef.ts +++ b/test/IORef.ts @@ -1,5 +1,5 @@ import * as assert from 'assert' -import { io } from '../src/IO' +import * as I from '../src/IO' import { IORef, newIORef } from '../src/IORef' import { pipe } from '../src/function' @@ -11,17 +11,35 @@ describe('IORef', () => { it('write', () => { const ref = new IORef(1) - assert.deepStrictEqual(io.chain(ref.write(2), () => ref.read)(), 2) + assert.deepStrictEqual( + pipe( + ref.write(2), + I.chain(() => ref.read) + )(), + 2 + ) }) it('modify', () => { const double = (n: number): number => n * 2 const ref = new IORef(1) - assert.deepStrictEqual(io.chain(ref.modify(double), () => ref.read)(), 2) + assert.deepStrictEqual( + pipe( + ref.modify(double), + I.chain(() => ref.read) + )(), + 2 + ) }) it('newIORef', () => { - assert.deepStrictEqual(io.chain(newIORef(1), (ref) => ref.read)(), 1) + assert.deepStrictEqual( + pipe( + newIORef(1), + I.chain((ref) => ref.read) + )(), + 1 + ) }) it('pipe', () => { diff --git a/test/ReaderTaskEither.ts b/test/ReaderTaskEither.ts index 88cb80711..a9e3433b1 100644 --- a/test/ReaderTaskEither.ts +++ b/test/ReaderTaskEither.ts @@ -1,7 +1,7 @@ import * as assert from 'assert' import * as A from '../src/Array' import * as E from '../src/Either' -import { io } from '../src/IO' +import * as I from '../src/IO' import * as IE from '../src/IOEither' import { monoidSum } from '../src/Monoid' import { none, some } from '../src/Option' @@ -218,7 +218,7 @@ describe('ReaderTaskEither', () => { }) it('leftIO', async () => { - const e = await _.run(_.leftIO(io.of(1)), {}) + const e = await _.run(_.leftIO(I.of(1)), {}) assert.deepStrictEqual(e, E.left(1)) }) diff --git a/test/ReadonlyMap.ts b/test/ReadonlyMap.ts index 2860569c3..1c3620b8e 100644 --- a/test/ReadonlyMap.ts +++ b/test/ReadonlyMap.ts @@ -780,7 +780,7 @@ describe('ReadonlyMap', () => { log.push(message) } - W.traverseWithIndex(IO.io)( + W.traverseWithIndex(IO.applicativeIO)( new Map([ ['b', append('b')], ['a', append('a')] diff --git a/test/ReadonlyRecord.ts b/test/ReadonlyRecord.ts index e27b21530..ae696c7ef 100644 --- a/test/ReadonlyRecord.ts +++ b/test/ReadonlyRecord.ts @@ -304,7 +304,7 @@ describe('ReadonlyRecord', () => { pipe( { b: append('b'), a: append('a') }, - _.traverseWithIndex(IO.io)((_, io) => io) + _.traverseWithIndex(IO.applicativeIO)((_, io) => io) )() assert.deepStrictEqual(log, ['a', 'b']) }) diff --git a/test/StateReaderTaskEither.ts b/test/StateReaderTaskEither.ts index d43d80d16..2de570096 100644 --- a/test/StateReaderTaskEither.ts +++ b/test/StateReaderTaskEither.ts @@ -1,6 +1,6 @@ import * as assert from 'assert' import * as E from '../src/Either' -import { io } from '../src/IO' +import * as I from '../src/IO' import * as IE from '../src/IOEither' import * as O from '../src/Option' import { pipe } from '../src/function' @@ -243,12 +243,12 @@ describe('StateReaderTaskEither', () => { }) it('rightIO', async () => { - const e = await _.run(_.rightIO(io.of(1)), {}, {}) + const e = await _.run(_.rightIO(I.of(1)), {}, {}) assert.deepStrictEqual(e, E.right([1, {}])) }) it('leftIO', async () => { - const e = await _.run(_.leftIO(io.of(1)), {}, {}) + const e = await _.run(_.leftIO(I.of(1)), {}, {}) assert.deepStrictEqual(e, E.left(1)) }) diff --git a/test/TaskEither.ts b/test/TaskEither.ts index d757887e9..50c0a9b09 100644 --- a/test/TaskEither.ts +++ b/test/TaskEither.ts @@ -1,7 +1,7 @@ import * as assert from 'assert' import * as A from '../src/Array' import * as E from '../src/Either' -import { io } from '../src/IO' +import * as I from '../src/IO' import { monoidString } from '../src/Monoid' import { none, some } from '../src/Option' import { pipeable } from '../src/pipeable' @@ -201,7 +201,7 @@ describe('TaskEither', () => { }) it('leftIO', async () => { - const e = await _.leftIO(io.of(1))() + const e = await _.leftIO(I.of(1))() assert.deepStrictEqual(e, E.left(1)) }) From 4617a40fbe08a77113ecb142e06c2fa7b4ee940f Mon Sep 17 00:00:00 2001 From: gcanti Date: Wed, 17 Jun 2020 09:37:26 +0200 Subject: [PATCH 051/106] split `ioEither` mega instance --- CHANGELOG.md | 9 ++++ docs/modules/IOEither.ts.md | 88 +++++++++++++++++++++++++++++++++++ src/IOEither.ts | 93 ++++++++++++++++++++++++++++++++++++- test/IOEither.ts | 9 ++-- test/TaskEither.ts | 4 +- 5 files changed, 194 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f40dbd02a..00a5df246 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -71,6 +71,15 @@ high state of flux, you're at risk of it changing without notice. - add `monadIO` instance (@gcanti) - add `monadIOIO` instance (@gcanti) - add `chainRecIO` instance (@gcanti) + - `IOEither` + - add `functorIOEither` instance (@gcanti) + - add `applyIOEither` instance (@gcanti) + - add `applicativeIOEither` instance (@gcanti) + - add `monadIOEither` instance (@gcanti) + - add `bifunctorIOEither` instance (@gcanti) + - add `altIOEither` instance (@gcanti) + - add `monadIOIOEither` instance (@gcanti) + - add `monadThrowIOEither` instance (@gcanti) - `ReadonlyArray` - add `functorArray` instance (@gcanti) - add `functorWithIndexArray` instance (@gcanti) diff --git a/docs/modules/IOEither.ts.md b/docs/modules/IOEither.ts.md index 9ce6ec406..564fc783b 100644 --- a/docs/modules/IOEither.ts.md +++ b/docs/modules/IOEither.ts.md @@ -56,12 +56,20 @@ Added in v2.0.0 - [instances](#instances) - [URI](#uri) - [URI (type alias)](#uri-type-alias) + - [altIOEither](#altioeither) + - [applicativeIOEither](#applicativeioeither) + - [applyIOEither](#applyioeither) + - [bifunctorIOEither](#bifunctorioeither) + - [functorIOEither](#functorioeither) - [getApplyMonoid](#getapplymonoid) - [getApplySemigroup](#getapplysemigroup) - [getFilterable](#getfilterable) - [getIOValidation](#getiovalidation) - [getSemigroup](#getsemigroup) - [ioEither](#ioeither) + - [monadIOEither](#monadioeither) + - [monadIOIOEither](#monadioioeither) + - [monadThrowIOEither](#monadthrowioeither) - [model](#model) - [IOEither (interface)](#ioeither-interface) @@ -448,6 +456,56 @@ export type URI = typeof URI Added in v2.0.0 +## altIOEither + +**Signature** + +```ts +export declare const altIOEither: Alt2<'IOEither'> +``` + +Added in v2.7.0 + +## applicativeIOEither + +**Signature** + +```ts +export declare const applicativeIOEither: Applicative2<'IOEither'> +``` + +Added in v2.7.0 + +## applyIOEither + +**Signature** + +```ts +export declare const applyIOEither: Apply2<'IOEither'> +``` + +Added in v2.7.0 + +## bifunctorIOEither + +**Signature** + +```ts +export declare const bifunctorIOEither: Bifunctor2<'IOEither'> +``` + +Added in v2.7.0 + +## functorIOEither + +**Signature** + +```ts +export declare const functorIOEither: Functor2<'IOEither'> +``` + +Added in v2.7.0 + ## getApplyMonoid **Signature** @@ -520,6 +578,36 @@ export declare const ioEither: Monad2<'IOEither'> & Added in v2.0.0 +## monadIOEither + +**Signature** + +```ts +export declare const monadIOEither: Monad2<'IOEither'> +``` + +Added in v2.7.0 + +## monadIOIOEither + +**Signature** + +```ts +export declare const monadIOIOEither: MonadIO2<'IOEither'> +``` + +Added in v2.7.0 + +## monadThrowIOEither + +**Signature** + +```ts +export declare const monadThrowIOEither: MonadThrow2<'IOEither'> +``` + +Added in v2.7.0 + # model ## IOEither (interface) diff --git a/src/IOEither.ts b/src/IOEither.ts index 6c4b8c7c5..c29e4f001 100644 --- a/src/IOEither.ts +++ b/src/IOEither.ts @@ -17,7 +17,7 @@ import { Monoid } from './Monoid' import { Option } from './Option' import { Semigroup } from './Semigroup' import { getValidationM } from './ValidationT' -import { apComposition } from './Apply' +import { apComposition, Apply2 } from './Apply' // ------------------------------------------------------------------------------------- // model @@ -25,6 +25,8 @@ import { apComposition } from './Apply' import Either = E.Either import IO = I.IO +import { Functor2 } from './Functor' +import { Applicative2 } from './Applicative' /** * @category model @@ -449,6 +451,95 @@ export function getFilterable(M: Monoid): Filterable2C { } } +/** + * @category instances + * @since 2.7.0 + */ +export const functorIOEither: Functor2 = { + URI, + map: map_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const bifunctorIOEither: Bifunctor2 = { + URI, + bimap: bimap_, + mapLeft: mapLeft_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const applyIOEither: Apply2 = { + URI, + map: map_, + ap: ap_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const applicativeIOEither: Applicative2 = { + URI, + map: map_, + ap: ap_, + of +} + +/** + * @category instances + * @since 2.7.0 + */ +export const monadIOEither: Monad2 = { + URI, + map: map_, + ap: ap_, + of, + chain: chain_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const altIOEither: Alt2 = { + URI, + map: map_, + alt: alt_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const monadIOIOEither: MonadIO2 = { + URI, + map: map_, + ap: ap_, + of, + chain: chain_, + fromIO: fromIO_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const monadThrowIOEither: MonadThrow2 = { + URI, + map: map_, + ap: ap_, + of, + chain: chain_, + throwError: throwError_ +} + +// TODO: remove in v3 /** * @category instances * @since 2.0.0 diff --git a/test/IOEither.ts b/test/IOEither.ts index be0664acd..1501f5468 100644 --- a/test/IOEither.ts +++ b/test/IOEither.ts @@ -188,12 +188,12 @@ describe('IOEither', () => { }) it('getOrElse', () => { - assert.deepStrictEqual(_.getOrElse(() => I.of(2))(_.ioEither.of(1))(), 1) + assert.deepStrictEqual(_.getOrElse(() => I.of(2))(_.right(1))(), 1) assert.deepStrictEqual(_.getOrElse(() => I.of(2))(_.left(1))(), 2) }) it('orElse', () => { - assert.deepStrictEqual(_.orElse(() => _.ioEither.of(2))(_.ioEither.of(1))(), E.right(1)) + assert.deepStrictEqual(_.orElse(() => _.right(2))(_.right(1))(), E.right(1)) }) it('tryCatch', () => { @@ -303,10 +303,7 @@ describe('IOEither', () => { }) describe('getFilterable', () => { - const F_ = { - ..._.ioEither, - ..._.getFilterable(getMonoid()) - } + const F_ = _.getFilterable(getMonoid()) const { filter } = pipeable(F_) it('filter', async () => { diff --git a/test/TaskEither.ts b/test/TaskEither.ts index 50c0a9b09..758942562 100644 --- a/test/TaskEither.ts +++ b/test/TaskEither.ts @@ -7,7 +7,7 @@ import { none, some } from '../src/Option' import { pipeable } from '../src/pipeable' import { semigroupString, semigroupSum } from '../src/Semigroup' import * as _ from '../src/TaskEither' -import { ioEither } from '../src/IOEither' +import * as IE from '../src/IOEither' import { pipe } from '../src/function' describe('TaskEither', () => { @@ -403,7 +403,7 @@ describe('TaskEither', () => { }) it('chainIOEitherK', async () => { - const f = (s: string) => ioEither.of(s.length) + const f = (s: string) => IE.right(s.length) const x = await pipe(_.right('a'), _.chainIOEitherK(f))() assert.deepStrictEqual(x, E.right(1)) }) From 9ebbbbb343db4abc87a36c1a50fccf03d788561b Mon Sep 17 00:00:00 2001 From: gcanti Date: Wed, 17 Jun 2020 09:53:58 +0200 Subject: [PATCH 052/106] split `map_` / `readonlyMap` mega instance --- CHANGELOG.md | 8 ++++++ docs/modules/Map.ts.md | 33 ++++++++++++++++++++++ docs/modules/ReadonlyMap.ts.md | 33 ++++++++++++++++++++++ src/Map.ts | 50 ++++++++++++++++++++++++++++++---- src/ReadonlyMap.ts | 40 +++++++++++++++++++++++++-- test/Map.ts | 29 ++++++++------------ test/ReadonlyMap.ts | 6 ++-- 7 files changed, 169 insertions(+), 30 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 00a5df246..4c99198be 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -80,6 +80,10 @@ high state of flux, you're at risk of it changing without notice. - add `altIOEither` instance (@gcanti) - add `monadIOIOEither` instance (@gcanti) - add `monadThrowIOEither` instance (@gcanti) + - `Map` + - add `functorMap` instance (@gcanti) + - add `compactableMap` instance (@gcanti) + - add `filterableMap` instance (@gcanti) - `ReadonlyArray` - add `functorArray` instance (@gcanti) - add `functorWithIndexArray` instance (@gcanti) @@ -98,6 +102,10 @@ high state of flux, you're at risk of it changing without notice. - add `traversableArray` instance (@gcanti) - add `traversableWithIndexArray` instance (@gcanti) - add `witherableArray` instance (@gcanti) + - `ReadonlyMap` + - add `functorMap` instance (@gcanti) + - add `compactableMap` instance (@gcanti) + - add `filterableMap` instance (@gcanti) # 2.6.7 diff --git a/docs/modules/Map.ts.md b/docs/modules/Map.ts.md index 0dc461bcf..591883138 100644 --- a/docs/modules/Map.ts.md +++ b/docs/modules/Map.ts.md @@ -30,6 +30,9 @@ Added in v2.0.0 - [instances](#instances) - [URI](#uri) - [URI (type alias)](#uri-type-alias) + - [compactableMap](#compactablemap) + - [filterableMap](#filterablemap) + - [functorMap](#functormap) - [getEq](#geteq) - [getFilterableWithIndex](#getfilterablewithindex) - [getMonoid](#getmonoid) @@ -222,6 +225,36 @@ export type URI = typeof URI Added in v2.0.0 +## compactableMap + +**Signature** + +```ts +export declare const compactableMap: Compactable2<'Map'> +``` + +Added in v2.7.0 + +## filterableMap + +**Signature** + +```ts +export declare const filterableMap: Filterable2<'Map'> +``` + +Added in v2.7.0 + +## functorMap + +**Signature** + +```ts +export declare const functorMap: Functor2<'Map'> +``` + +Added in v2.7.0 + ## getEq **Signature** diff --git a/docs/modules/ReadonlyMap.ts.md b/docs/modules/ReadonlyMap.ts.md index c25305cdc..e56988bd5 100644 --- a/docs/modules/ReadonlyMap.ts.md +++ b/docs/modules/ReadonlyMap.ts.md @@ -36,6 +36,9 @@ Added in v2.5.0 - [instances](#instances) - [URI](#uri) - [URI (type alias)](#uri-type-alias) + - [compactableMap](#compactablemap) + - [filterableMap](#filterablemap) + - [functorMap](#functormap) - [getEq](#geteq) - [getFilterableWithIndex](#getfilterablewithindex) - [getMonoid](#getmonoid) @@ -298,6 +301,36 @@ export type URI = typeof URI Added in v2.5.0 +## compactableMap + +**Signature** + +```ts +export declare const compactableMap: Compactable2<'ReadonlyMap'> +``` + +Added in v2.7.0 + +## filterableMap + +**Signature** + +```ts +export declare const filterableMap: Filterable2<'ReadonlyMap'> +``` + +Added in v2.7.0 + +## functorMap + +**Signature** + +```ts +export declare const functorMap: Functor2<'ReadonlyMap'> +``` + +Added in v2.7.0 + ## getEq **Signature** diff --git a/src/Map.ts b/src/Map.ts index 2d0544998..b0aa3f8bc 100644 --- a/src/Map.ts +++ b/src/Map.ts @@ -1,13 +1,14 @@ /** * @since 2.0.0 */ -import { Separated } from './Compactable' +import { Compactable2, Separated } from './Compactable' import { Either } from './Either' import { Eq } from './Eq' import { Filterable2 } from './Filterable' import { FilterableWithIndex2C } from './FilterableWithIndex' import { Foldable, Foldable1, Foldable2, Foldable3 } from './Foldable' import { Predicate, Refinement } from './function' +import { Functor2 } from './Functor' import { HKT, Kind, Kind2, Kind3, URIS, URIS2, URIS3 } from './HKT' import { Magma } from './Magma' import { Monoid } from './Monoid' @@ -295,6 +296,12 @@ export const separate: (fa: Map>) => Separated['map'] = RM.functorMap.map as any +const filter_: Filterable2['filter'] = RM.filterableMap.filter as any +const filterMap_: Filterable2['filterMap'] = RM.filterableMap.filterMap as any +const partition_: Filterable2['partition'] = RM.filterableMap.partition as any +const partitionMap_: Filterable2['partitionMap'] = RM.filterableMap.partitionMap as any + /** * @category instances * @since 2.0.0 @@ -331,12 +338,43 @@ export const getWitherable: ( O: Ord ) => Witherable2C & TraversableWithIndex2C = RM.getWitherable as any +/** + * @category instances + * @since 2.7.0 + */ +export const functorMap: Functor2 = { + URI, + map: map__ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const compactableMap: Compactable2 = { + URI, + compact, + separate +} + +/** + * @category instances + * @since 2.7.0 + */ +export const filterableMap: Filterable2 = { + URI, + map: map__, + compact, + separate, + filter: filter_, + filterMap: filterMap_, + partition: partition_, + partitionMap: partitionMap_ +} + +// TODO: remove in v3 /** * @category instances * @since 2.0.0 */ -export const map_: Filterable2 = - /*#__PURE__*/ - (() => { - return Object.assign({}, RM.readonlyMap as any, { URI }) - })() +export const map_: Filterable2 = filterableMap diff --git a/src/ReadonlyMap.ts b/src/ReadonlyMap.ts index d54e6432e..050dab9f7 100644 --- a/src/ReadonlyMap.ts +++ b/src/ReadonlyMap.ts @@ -2,13 +2,14 @@ * @since 2.5.0 */ import { Applicative } from './Applicative' -import { Separated } from './Compactable' +import { Compactable2, Separated } from './Compactable' import { Either, isLeft } from './Either' import { Eq, fromEquals } from './Eq' import { Filterable2 } from './Filterable' import { FilterableWithIndex2C } from './FilterableWithIndex' import { Foldable, Foldable1, Foldable2, Foldable3 } from './Foldable' -import { Predicate, Refinement, pipe } from './function' +import { pipe, Predicate, Refinement } from './function' +import { Functor2 } from './Functor' import { HKT, Kind, Kind2, Kind3, URIS, URIS2, URIS3 } from './HKT' import { Magma } from './Magma' import { Monoid } from './Monoid' @@ -860,6 +861,41 @@ export function getWitherable(O: Ord): Witherable2C & TraversableW } } +/** + * @category instances + * @since 2.7.0 + */ +export const functorMap: Functor2 = { + URI, + map: map_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const compactableMap: Compactable2 = { + URI, + compact, + separate +} + +/** + * @category instances + * @since 2.7.0 + */ +export const filterableMap: Filterable2 = { + URI, + map: map_, + compact, + separate, + filter: filter_, + filterMap: filterMap_, + partition: partition_, + partitionMap: partitionMap_ +} + +// TODO: remove in v3 /** * @category instances * @since 2.5.0 diff --git a/test/Map.ts b/test/Map.ts index 753be4738..daff2bce7 100644 --- a/test/Map.ts +++ b/test/Map.ts @@ -649,7 +649,6 @@ describe('Map', () => { describe('map_', () => { describe('functor', () => { it('map', () => { - const map = _.map_.map const d1 = new Map([ ['k1', 1], ['k2', 2] @@ -659,23 +658,21 @@ describe('Map', () => { ['k2', 4] ]) const double = (n: number): number => n * 2 - assert.deepStrictEqual(map(d1, double), expected) + assert.deepStrictEqual(pipe(d1, _.map(double)), expected) }) }) describe('filterable', () => { it('compact', () => { - const compact = _.map_.compact const fooBar = new Map>([ ['foo', none], ['bar', some(123)] ]) const bar = new Map([['bar', 123]]) - assert.deepStrictEqual(compact(fooBar), bar) + assert.deepStrictEqual(_.compact(fooBar), bar) }) it('partitionMap', () => { - const partitionMap = _.map_.partitionMap const emptyMap = new Map() const a1b3 = new Map([ ['a', 1], @@ -684,15 +681,14 @@ describe('Map', () => { const a0 = new Map([['a', 0]]) const b4 = new Map([['b', 4]]) const f = (n: number) => (p(n) ? right(n + 1) : left(n - 1)) - assert.deepStrictEqual(partitionMap(emptyMap, f), { left: emptyMap, right: emptyMap }) - assert.deepStrictEqual(partitionMap(a1b3, f), { + assert.deepStrictEqual(pipe(emptyMap, _.partitionMap(f)), { left: emptyMap, right: emptyMap }) + assert.deepStrictEqual(pipe(a1b3, _.partitionMap(f)), { left: a0, right: b4 }) }) it('partition', () => { - const partition = _.map_.partition const emptyMap = new Map() const a1b3 = new Map([ ['a', 1], @@ -700,35 +696,33 @@ describe('Map', () => { ]) const a1 = new Map([['a', 1]]) const b3 = new Map([['b', 3]]) - assert.deepStrictEqual(partition(emptyMap, p), { left: emptyMap, right: emptyMap }) - assert.deepStrictEqual(partition(a1b3, p), { + assert.deepStrictEqual(pipe(emptyMap, _.partition(p)), { left: emptyMap, right: emptyMap }) + assert.deepStrictEqual(pipe(a1b3, _.partition(p)), { left: a1, right: b3 }) }) it('separate', () => { - const separate = _.map_.separate const fooBar = new Map>([ ['foo', left(123)], ['bar', right(123)] ]) const foo = new Map([['foo', 123]]) const bar = new Map([['bar', 123]]) - assert.deepStrictEqual(separate(fooBar), { + assert.deepStrictEqual(_.separate(fooBar), { left: foo, right: bar }) }) it('filter', () => { - const filter = _.map_.filter const a1b3 = new Map([ ['a', 1], ['b', 3] ]) const b3 = new Map([['b', 3]]) - assert.deepStrictEqual(filter(a1b3, p), b3) + assert.deepStrictEqual(pipe(a1b3, _.filter(p)), b3) // refinements const isNumber = (u: string | number): u is number => typeof u === 'number' @@ -737,12 +731,11 @@ describe('Map', () => { ['b', 'foo'] ]) const a1 = new Map([['a', 1]]) - const actual = filter(y, isNumber) + const actual = pipe(y, _.filter(isNumber)) assert.deepStrictEqual(actual, a1) }) it('filterMap', () => { - const filterMap = _.map_.filterMap const emptyMap = new Map() const a1b3 = new Map([ ['a', 1], @@ -750,8 +743,8 @@ describe('Map', () => { ]) const b4 = new Map([['b', 4]]) const f = (n: number) => (p(n) ? some(n + 1) : none) - assert.deepStrictEqual(filterMap(emptyMap, f), emptyMap) - assert.deepStrictEqual(filterMap(a1b3, f), b4) + assert.deepStrictEqual(pipe(emptyMap, _.filterMap(f)), emptyMap) + assert.deepStrictEqual(pipe(a1b3, _.filterMap(f)), b4) }) }) }) diff --git a/test/ReadonlyMap.ts b/test/ReadonlyMap.ts index 1c3620b8e..0a00c2dd7 100644 --- a/test/ReadonlyMap.ts +++ b/test/ReadonlyMap.ts @@ -744,24 +744,22 @@ describe('ReadonlyMap', () => { describe('readonlyMap', () => { describe('compactable', () => { it('compact', () => { - const compact = _.readonlyMap.compact const fooBar = new Map>([ ['foo', none], ['bar', some(123)] ]) const bar = new Map([['bar', 123]]) - assert.deepStrictEqual(compact(fooBar), bar) + assert.deepStrictEqual(_.compact(fooBar), bar) }) it('separate', () => { - const separate = _.readonlyMap.separate const fooBar = new Map>([ ['foo', left(123)], ['bar', right(123)] ]) const foo = new Map([['foo', 123]]) const bar = new Map([['bar', 123]]) - assert.deepStrictEqual(separate(fooBar), { + assert.deepStrictEqual(_.separate(fooBar), { left: foo, right: bar }) From b05ede09185ce0014b14eb00ce715472c66fbb52 Mon Sep 17 00:00:00 2001 From: gcanti Date: Wed, 17 Jun 2020 15:34:07 +0200 Subject: [PATCH 053/106] split `nonEmptyArray` / `readonlyNonEmptyArray` mega instance --- CHANGELOG.md | 26 +++ docs/modules/NonEmptyArray.ts.md | 143 +++++++++++++++ docs/modules/ReadonlyNonEmptyArray.ts.md | 143 +++++++++++++++ src/NonEmptyArray.ts | 197 ++++++++++++++++++++- src/ReadonlyNonEmptyArray.ts | 215 ++++++++++++++++++++--- test/NonEmptyArray.ts | 45 +++-- test/ReadonlyNonEmptyArray.ts | 45 +++-- 7 files changed, 748 insertions(+), 66 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4c99198be..ab7aadc4f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -84,6 +84,19 @@ high state of flux, you're at risk of it changing without notice. - add `functorMap` instance (@gcanti) - add `compactableMap` instance (@gcanti) - add `filterableMap` instance (@gcanti) + - `NonEmptyArray` + - add `functorNonEmptyArray` instance (@gcanti) + - add `functorWithIndexNonEmptyArray` instance (@gcanti) + - add `applyNonEmptyArray` instance (@gcanti) + - add `applicativeNonEmptyArray` instance (@gcanti) + - add `monadNonEmptyArray` instance (@gcanti) + - add `foldableNonEmptyArray` instance (@gcanti) + - add `foldableWithIndexNonEmptyArray` instance (@gcanti) + - add `traversableNonEmptyArray` instance (@gcanti) + - add `traversableWithIndexNonEmptyArray` instance (@gcanti) + - add `altNonEmptyArray` instance (@gcanti) + - add `extendNonEmptyArray` instance (@gcanti) + - add `comonadNonEmptyArray` instance (@gcanti) - `ReadonlyArray` - add `functorArray` instance (@gcanti) - add `functorWithIndexArray` instance (@gcanti) @@ -106,6 +119,19 @@ high state of flux, you're at risk of it changing without notice. - add `functorMap` instance (@gcanti) - add `compactableMap` instance (@gcanti) - add `filterableMap` instance (@gcanti) + - `ReadonlyNonEmptyArray` + - add `functorNonEmptyArray` instance (@gcanti) + - add `functorWithIndexNonEmptyArray` instance (@gcanti) + - add `applyNonEmptyArray` instance (@gcanti) + - add `applicativeNonEmptyArray` instance (@gcanti) + - add `monadNonEmptyArray` instance (@gcanti) + - add `foldableNonEmptyArray` instance (@gcanti) + - add `foldableWithIndexNonEmptyArray` instance (@gcanti) + - add `traversableNonEmptyArray` instance (@gcanti) + - add `traversableWithIndexNonEmptyArray` instance (@gcanti) + - add `altNonEmptyArray` instance (@gcanti) + - add `extendNonEmptyArray` instance (@gcanti) + - add `comonadNonEmptyArray` instance (@gcanti) # 2.6.7 diff --git a/docs/modules/NonEmptyArray.ts.md b/docs/modules/NonEmptyArray.ts.md index 3c5c3ba1d..8017148ae 100644 --- a/docs/modules/NonEmptyArray.ts.md +++ b/docs/modules/NonEmptyArray.ts.md @@ -59,13 +59,26 @@ Added in v2.0.0 - [instances](#instances) - [URI](#uri) - [URI (type alias)](#uri-type-alias) + - [altNonEmptyArray](#altnonemptyarray) + - [applicativeNonEmptyArray](#applicativenonemptyarray) + - [applyNonEmptyArray](#applynonemptyarray) + - [comonadNonEmptyArray](#comonadnonemptyarray) + - [extendNonEmptyArray](#extendnonemptyarray) + - [foldableNonEmptyArray](#foldablenonemptyarray) + - [foldableWithIndexNonEmptyArray](#foldablewithindexnonemptyarray) + - [functorNonEmptyArray](#functornonemptyarray) + - [functorWithIndexNonEmptyArray](#functorwithindexnonemptyarray) - [getEq](#geteq) - [getSemigroup](#getsemigroup) - [getShow](#getshow) + - [monadNonEmptyArray](#monadnonemptyarray) - [nonEmptyArray](#nonemptyarray) + - [traversableNonEmptyArray](#traversablenonemptyarray) + - [traversableWithIndexNonEmptyArray](#traversablewithindexnonemptyarray) - [model](#model) - [NonEmptyArray (interface)](#nonemptyarray-interface) - [utils](#utils) + - [extract](#extract) - [filterWithIndex](#filterwithindex) - [fold](#fold) - [head](#head) @@ -531,6 +544,96 @@ export type URI = typeof URI Added in v2.0.0 +## altNonEmptyArray + +**Signature** + +```ts +export declare const altNonEmptyArray: Alt1<'NonEmptyArray'> +``` + +Added in v2.7.0 + +## applicativeNonEmptyArray + +**Signature** + +```ts +export declare const applicativeNonEmptyArray: Applicative1<'NonEmptyArray'> +``` + +Added in v2.7.0 + +## applyNonEmptyArray + +**Signature** + +```ts +export declare const applyNonEmptyArray: Apply1<'NonEmptyArray'> +``` + +Added in v2.7.0 + +## comonadNonEmptyArray + +**Signature** + +```ts +export declare const comonadNonEmptyArray: Comonad1<'NonEmptyArray'> +``` + +Added in v2.7.0 + +## extendNonEmptyArray + +**Signature** + +```ts +export declare const extendNonEmptyArray: Extend1<'NonEmptyArray'> +``` + +Added in v2.7.0 + +## foldableNonEmptyArray + +**Signature** + +```ts +export declare const foldableNonEmptyArray: Foldable1<'NonEmptyArray'> +``` + +Added in v2.7.0 + +## foldableWithIndexNonEmptyArray + +**Signature** + +```ts +export declare const foldableWithIndexNonEmptyArray: FoldableWithIndex1<'NonEmptyArray', number> +``` + +Added in v2.7.0 + +## functorNonEmptyArray + +**Signature** + +```ts +export declare const functorNonEmptyArray: Functor1<'NonEmptyArray'> +``` + +Added in v2.7.0 + +## functorWithIndexNonEmptyArray + +**Signature** + +```ts +export declare const functorWithIndexNonEmptyArray: FunctorWithIndex1<'NonEmptyArray', number> +``` + +Added in v2.7.0 + ## getEq **Signature** @@ -574,6 +677,16 @@ export declare const getShow: (S: Show) => Show> Added in v2.0.0 +## monadNonEmptyArray + +**Signature** + +```ts +export declare const monadNonEmptyArray: Monad1<'NonEmptyArray'> +``` + +Added in v2.7.0 + ## nonEmptyArray **Signature** @@ -589,6 +702,26 @@ export declare const nonEmptyArray: Monad1<'NonEmptyArray'> & Added in v2.0.0 +## traversableNonEmptyArray + +**Signature** + +```ts +export declare const traversableNonEmptyArray: Traversable1<'NonEmptyArray'> +``` + +Added in v2.7.0 + +## traversableWithIndexNonEmptyArray + +**Signature** + +```ts +export declare const traversableWithIndexNonEmptyArray: TraversableWithIndex1<'NonEmptyArray', number> +``` + +Added in v2.7.0 + # model ## NonEmptyArray (interface) @@ -605,6 +738,16 @@ Added in v2.0.0 # utils +## extract + +**Signature** + +```ts +export declare const extract: (wa: NonEmptyArray) => A +``` + +Added in v2.7.0 + ## filterWithIndex **Signature** diff --git a/docs/modules/ReadonlyNonEmptyArray.ts.md b/docs/modules/ReadonlyNonEmptyArray.ts.md index 9dacf2cf3..7f9e27688 100644 --- a/docs/modules/ReadonlyNonEmptyArray.ts.md +++ b/docs/modules/ReadonlyNonEmptyArray.ts.md @@ -58,13 +58,26 @@ Added in v2.5.0 - [instances](#instances) - [URI](#uri) - [URI (type alias)](#uri-type-alias) + - [altNonEmptyArray](#altnonemptyarray) + - [applicativeNonEmptyArray](#applicativenonemptyarray) + - [applyNonEmptyArray](#applynonemptyarray) + - [comonadNonEmptyArray](#comonadnonemptyarray) + - [extendNonEmptyArray](#extendnonemptyarray) + - [foldableNonEmptyArray](#foldablenonemptyarray) + - [foldableWithIndexNonEmptyArray](#foldablewithindexnonemptyarray) + - [functorNonEmptyArray](#functornonemptyarray) + - [functorWithIndexNonEmptyArray](#functorwithindexnonemptyarray) - [getEq](#geteq) - [getSemigroup](#getsemigroup) - [getShow](#getshow) + - [monadNonEmptyArray](#monadnonemptyarray) - [readonlyNonEmptyArray](#readonlynonemptyarray) + - [traversableNonEmptyArray](#traversablenonemptyarray) + - [traversableWithIndexNonEmptyArray](#traversablewithindexnonemptyarray) - [model](#model) - [ReadonlyNonEmptyArray (type alias)](#readonlynonemptyarray-type-alias) - [utils](#utils) + - [extract](#extract) - [filter](#filter) - [filterWithIndex](#filterwithindex) - [fold](#fold) @@ -540,6 +553,96 @@ export type URI = typeof URI Added in v2.5.0 +## altNonEmptyArray + +**Signature** + +```ts +export declare const altNonEmptyArray: Alt1<'ReadonlyNonEmptyArray'> +``` + +Added in v2.7.0 + +## applicativeNonEmptyArray + +**Signature** + +```ts +export declare const applicativeNonEmptyArray: Applicative1<'ReadonlyNonEmptyArray'> +``` + +Added in v2.7.0 + +## applyNonEmptyArray + +**Signature** + +```ts +export declare const applyNonEmptyArray: Apply1<'ReadonlyNonEmptyArray'> +``` + +Added in v2.7.0 + +## comonadNonEmptyArray + +**Signature** + +```ts +export declare const comonadNonEmptyArray: Comonad1<'ReadonlyNonEmptyArray'> +``` + +Added in v2.7.0 + +## extendNonEmptyArray + +**Signature** + +```ts +export declare const extendNonEmptyArray: Extend1<'ReadonlyNonEmptyArray'> +``` + +Added in v2.7.0 + +## foldableNonEmptyArray + +**Signature** + +```ts +export declare const foldableNonEmptyArray: Foldable1<'ReadonlyNonEmptyArray'> +``` + +Added in v2.7.0 + +## foldableWithIndexNonEmptyArray + +**Signature** + +```ts +export declare const foldableWithIndexNonEmptyArray: FoldableWithIndex1<'ReadonlyNonEmptyArray', number> +``` + +Added in v2.7.0 + +## functorNonEmptyArray + +**Signature** + +```ts +export declare const functorNonEmptyArray: Functor1<'ReadonlyNonEmptyArray'> +``` + +Added in v2.7.0 + +## functorWithIndexNonEmptyArray + +**Signature** + +```ts +export declare const functorWithIndexNonEmptyArray: FunctorWithIndex1<'ReadonlyNonEmptyArray', number> +``` + +Added in v2.7.0 + ## getEq **Signature** @@ -583,6 +686,16 @@ export declare const getShow: (S: Show) => Show> Added in v2.5.0 +## monadNonEmptyArray + +**Signature** + +```ts +export declare const monadNonEmptyArray: Monad1<'ReadonlyNonEmptyArray'> +``` + +Added in v2.7.0 + ## readonlyNonEmptyArray **Signature** @@ -598,6 +711,26 @@ export declare const readonlyNonEmptyArray: Monad1<'ReadonlyNonEmptyArray'> & Added in v2.5.0 +## traversableNonEmptyArray + +**Signature** + +```ts +export declare const traversableNonEmptyArray: Traversable1<'ReadonlyNonEmptyArray'> +``` + +Added in v2.7.0 + +## traversableWithIndexNonEmptyArray + +**Signature** + +```ts +export declare const traversableWithIndexNonEmptyArray: TraversableWithIndex1<'ReadonlyNonEmptyArray', number> +``` + +Added in v2.7.0 + # model ## ReadonlyNonEmptyArray (type alias) @@ -614,6 +747,16 @@ Added in v2.5.0 # utils +## extract + +**Signature** + +```ts +export declare const extract: (wa: ReadonlyNonEmptyArray) => A +``` + +Added in v2.6.3 + ## filter **Signature** diff --git a/src/NonEmptyArray.ts b/src/NonEmptyArray.ts index f6134f5be..6f57f5669 100644 --- a/src/NonEmptyArray.ts +++ b/src/NonEmptyArray.ts @@ -4,10 +4,15 @@ * @since 2.0.0 */ import { Alt1 } from './Alt' +import { Applicative1 } from './Applicative' +import { Apply1 } from './Apply' import { Comonad1 } from './Comonad' import { Eq } from './Eq' +import { Extend1 } from './Extend' +import { Foldable1 } from './Foldable' import { FoldableWithIndex1 } from './FoldableWithIndex' import { Lazy, Predicate, Refinement } from './function' +import { Functor1 } from './Functor' import { FunctorWithIndex1 } from './FunctorWithIndex' import { Monad1 } from './Monad' import { Option } from './Option' @@ -459,10 +464,35 @@ export const sequence: Traversable1['sequence'] = RNEA.sequence as any */ export const traverseWithIndex: PipeableTraverseWithIndex1 = RNEA.traverseWithIndex as any +/** + * @since 2.7.0 + */ +export const extract: Comonad1['extract'] = head + // ------------------------------------------------------------------------------------- // instances // ------------------------------------------------------------------------------------- +const map_: Functor1['map'] = RNEA.functorNonEmptyArray.map as any +const mapWithIndex_: FunctorWithIndex1['mapWithIndex'] = RNEA.functorWithIndexNonEmptyArray + .mapWithIndex as any +const ap_: Apply1['ap'] = RNEA.applyNonEmptyArray.ap as any +const chain_: Monad1['chain'] = RNEA.monadNonEmptyArray.chain as any +const extend_: Extend1['extend'] = RNEA.extendNonEmptyArray.extend as any +const reduce_: Foldable1['reduce'] = RNEA.foldableNonEmptyArray.reduce as any +const foldMap_: Foldable1['foldMap'] = RNEA.foldableNonEmptyArray.foldMap as any +const reduceRight_: Foldable1['reduceRight'] = RNEA.foldableNonEmptyArray.reduceRight as any +const traverse_: Traversable1['traverse'] = RNEA.traversableNonEmptyArray.traverse as any +const alt_: Alt1['alt'] = RNEA.altNonEmptyArray.alt as any +const reduceWithIndex_: FoldableWithIndex1['reduceWithIndex'] = RNEA.foldableWithIndexNonEmptyArray + .reduceWithIndex as any +const foldMapWithIndex_: FoldableWithIndex1['foldMapWithIndex'] = RNEA.foldableWithIndexNonEmptyArray + .foldMapWithIndex as any +const reduceRightWithIndex_: FoldableWithIndex1['reduceRightWithIndex'] = RNEA + .foldableWithIndexNonEmptyArray.reduceRightWithIndex as any +const traverseWithIndex_: TraversableWithIndex1['traverseWithIndex'] = RNEA + .traversableWithIndexNonEmptyArray.traverseWithIndex as any + /** * @category instances * @since 2.0.0 @@ -481,6 +511,148 @@ declare module './HKT' { } } +/** + * @category instances + * @since 2.7.0 + */ +export const functorNonEmptyArray: Functor1 = { + URI, + map: map_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const functorWithIndexNonEmptyArray: FunctorWithIndex1 = { + URI, + map: map_, + mapWithIndex: mapWithIndex_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const applyNonEmptyArray: Apply1 = { + URI, + map: map_, + ap: ap_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const applicativeNonEmptyArray: Applicative1 = { + URI, + map: map_, + ap: ap_, + of +} + +/** + * @category instances + * @since 2.7.0 + */ +export const monadNonEmptyArray: Monad1 = { + URI, + map: map_, + ap: ap_, + of, + chain: chain_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const foldableNonEmptyArray: Foldable1 = { + URI, + reduce: reduce_, + foldMap: foldMap_, + reduceRight: reduceRight_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const foldableWithIndexNonEmptyArray: FoldableWithIndex1 = { + URI, + reduce: reduce_, + foldMap: foldMap_, + reduceRight: reduceRight_, + reduceWithIndex: reduceWithIndex_, + foldMapWithIndex: foldMapWithIndex_, + reduceRightWithIndex: reduceRightWithIndex_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const traversableNonEmptyArray: Traversable1 = { + URI, + map: map_, + reduce: reduce_, + foldMap: foldMap_, + reduceRight: reduceRight_, + traverse: traverse_, + sequence +} + +/** + * @category instances + * @since 2.7.0 + */ +export const traversableWithIndexNonEmptyArray: TraversableWithIndex1 = { + URI, + map: map_, + mapWithIndex: mapWithIndex_, + reduce: reduce_, + foldMap: foldMap_, + reduceRight: reduceRight_, + traverse: traverse_, + sequence, + reduceWithIndex: reduceWithIndex_, + foldMapWithIndex: foldMapWithIndex_, + reduceRightWithIndex: reduceRightWithIndex_, + traverseWithIndex: traverseWithIndex_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const altNonEmptyArray: Alt1 = { + URI, + map: map_, + alt: alt_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const extendNonEmptyArray: Extend1 = { + URI, + map: map_, + extend: extend_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const comonadNonEmptyArray: Comonad1 = { + URI, + map: map_, + extend: extend_, + extract +} + +// TODO: remove in v3 /** * @category instances * @since 2.0.0 @@ -490,8 +662,23 @@ export const nonEmptyArray: Monad1 & TraversableWithIndex1 & FunctorWithIndex1 & FoldableWithIndex1 & - Alt1 = - /*#__PURE__*/ - (() => { - return Object.assign({}, RNEA.readonlyNonEmptyArray as any, { URI }) - })() + Alt1 = { + URI, + of, + map: map_, + mapWithIndex: mapWithIndex_, + ap: ap_, + chain: chain_, + extend: extend_, + extract: extract, + reduce: reduce_, + foldMap: foldMap_, + reduceRight: reduceRight_, + traverse: traverse_, + sequence, + reduceWithIndex: reduceWithIndex_, + foldMapWithIndex: foldMapWithIndex_, + reduceRightWithIndex: reduceRightWithIndex_, + traverseWithIndex: traverseWithIndex_, + alt: alt_ +} diff --git a/src/ReadonlyNonEmptyArray.ts b/src/ReadonlyNonEmptyArray.ts index bd65bafa4..b658ac7c6 100644 --- a/src/ReadonlyNonEmptyArray.ts +++ b/src/ReadonlyNonEmptyArray.ts @@ -4,10 +4,15 @@ * @since 2.5.0 */ import { Alt1 } from './Alt' +import { Applicative1 } from './Applicative' +import { Apply1 } from './Apply' import { Comonad1 } from './Comonad' import { Eq } from './Eq' +import { Extend1 } from './Extend' +import { Foldable1 } from './Foldable' import { FoldableWithIndex1 } from './FoldableWithIndex' import { Lazy, Predicate, Refinement } from './function' +import { Functor1 } from './Functor' import { FunctorWithIndex1 } from './FunctorWithIndex' import { Monad1 } from './Monad' import { NonEmptyArray } from './NonEmptyArray' @@ -530,10 +535,34 @@ export const sequence: Traversable1['sequence'] = RA.sequence as any */ export const traverseWithIndex: PipeableTraverseWithIndex1 = RA.traverseWithIndex as any +/** + * @since 2.6.3 + */ +export const extract: Comonad1['extract'] = head + // ------------------------------------------------------------------------------------- // instances // ------------------------------------------------------------------------------------- +const map_: Functor1['map'] = RA.functorArray.map as any +const mapWithIndex_: FunctorWithIndex1['mapWithIndex'] = RA.functorWithIndexArray.mapWithIndex as any +const ap_: Apply1['ap'] = RA.applyArray.ap as any +const chain_: Monad1['chain'] = RA.monadArray.chain as any +const extend_: Extend1['extend'] = RA.extendArray.extend as any +const reduce_: Foldable1['reduce'] = RA.foldableArray.reduce as any +const foldMap_: Foldable1['foldMap'] = RA.foldableArray.foldMap as any +const reduceRight_: Foldable1['reduceRight'] = RA.foldableArray.reduceRight as any +const traverse_: Traversable1['traverse'] = RA.traversableArray.traverse as any +const alt_: Alt1['alt'] = RA.altArray.alt as any +const reduceWithIndex_: FoldableWithIndex1['reduceWithIndex'] = RA.foldableWithIndexArray + .reduceWithIndex as any +const foldMapWithIndex_: FoldableWithIndex1['foldMapWithIndex'] = RA.foldableWithIndexArray + .foldMapWithIndex as any +const reduceRightWithIndex_: FoldableWithIndex1['reduceRightWithIndex'] = RA.foldableWithIndexArray + .reduceRightWithIndex as any +const traverseWithIndex_: TraversableWithIndex1['traverseWithIndex'] = RA.traversableWithIndexArray + .traverseWithIndex as any + /** * @category instances * @since 2.5.0 @@ -552,6 +581,148 @@ declare module './HKT' { } } +/** + * @category instances + * @since 2.7.0 + */ +export const functorNonEmptyArray: Functor1 = { + URI, + map: map_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const functorWithIndexNonEmptyArray: FunctorWithIndex1 = { + URI, + map: map_, + mapWithIndex: mapWithIndex_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const applyNonEmptyArray: Apply1 = { + URI, + map: map_, + ap: ap_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const applicativeNonEmptyArray: Applicative1 = { + URI, + map: map_, + ap: ap_, + of +} + +/** + * @category instances + * @since 2.7.0 + */ +export const monadNonEmptyArray: Monad1 = { + URI, + map: map_, + ap: ap_, + of, + chain: chain_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const foldableNonEmptyArray: Foldable1 = { + URI, + reduce: reduce_, + foldMap: foldMap_, + reduceRight: reduceRight_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const foldableWithIndexNonEmptyArray: FoldableWithIndex1 = { + URI, + reduce: reduce_, + foldMap: foldMap_, + reduceRight: reduceRight_, + reduceWithIndex: reduceWithIndex_, + foldMapWithIndex: foldMapWithIndex_, + reduceRightWithIndex: reduceRightWithIndex_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const traversableNonEmptyArray: Traversable1 = { + URI, + map: map_, + reduce: reduce_, + foldMap: foldMap_, + reduceRight: reduceRight_, + traverse: traverse_, + sequence +} + +/** + * @category instances + * @since 2.7.0 + */ +export const traversableWithIndexNonEmptyArray: TraversableWithIndex1 = { + URI, + map: map_, + mapWithIndex: mapWithIndex_, + reduce: reduce_, + foldMap: foldMap_, + reduceRight: reduceRight_, + traverse: traverse_, + sequence, + reduceWithIndex: reduceWithIndex_, + foldMapWithIndex: foldMapWithIndex_, + reduceRightWithIndex: reduceRightWithIndex_, + traverseWithIndex: traverseWithIndex_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const altNonEmptyArray: Alt1 = { + URI, + map: map_, + alt: alt_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const extendNonEmptyArray: Extend1 = { + URI, + map: map_, + extend: extend_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const comonadNonEmptyArray: Comonad1 = { + URI, + map: map_, + extend: extend_, + extract +} + +// TODO: remove in v3 /** * @category instances * @since 2.5.0 @@ -564,34 +735,20 @@ export const readonlyNonEmptyArray: Monad1 & Alt1 = { URI, of, - extract: head, - // tslint:disable-next-line: deprecation - map: RA.readonlyArray.map as any, - // tslint:disable-next-line: deprecation - mapWithIndex: RA.readonlyArray.mapWithIndex as any, - // tslint:disable-next-line: deprecation - ap: RA.readonlyArray.ap as any, - // tslint:disable-next-line: deprecation - chain: RA.readonlyArray.chain as any, - // tslint:disable-next-line: deprecation - extend: RA.readonlyArray.extend as any, - // tslint:disable-next-line: deprecation - reduce: RA.readonlyArray.reduce, - // tslint:disable-next-line: deprecation - foldMap: RA.readonlyArray.foldMap, - // tslint:disable-next-line: deprecation - reduceRight: RA.readonlyArray.reduceRight, - // tslint:disable-next-line: deprecation - traverse: RA.readonlyArray.traverse as any, + map: map_, + mapWithIndex: mapWithIndex_, + ap: ap_, + chain: chain_, + extend: extend_, + extract: extract, + reduce: reduce_, + foldMap: foldMap_, + reduceRight: reduceRight_, + traverse: traverse_, sequence, - // tslint:disable-next-line: deprecation - reduceWithIndex: RA.readonlyArray.reduceWithIndex, - // tslint:disable-next-line: deprecation - foldMapWithIndex: RA.readonlyArray.foldMapWithIndex, - // tslint:disable-next-line: deprecation - reduceRightWithIndex: RA.readonlyArray.reduceRightWithIndex, - // tslint:disable-next-line: deprecation - traverseWithIndex: RA.readonlyArray.traverseWithIndex as any, - // tslint:disable-next-line: deprecation - alt: RA.readonlyArray.alt as any + reduceWithIndex: reduceWithIndex_, + foldMapWithIndex: foldMapWithIndex_, + reduceRightWithIndex: reduceRightWithIndex_, + traverseWithIndex: traverseWithIndex_, + alt: alt_ } diff --git a/test/NonEmptyArray.ts b/test/NonEmptyArray.ts index ab671896e..39a4ca7e2 100644 --- a/test/NonEmptyArray.ts +++ b/test/NonEmptyArray.ts @@ -71,30 +71,31 @@ describe('NonEmptyArray', () => { it('mapWithIndex', () => { const add = (i: number, n: number) => n + i - assert.deepStrictEqual(_.nonEmptyArray.mapWithIndex([1, 2], add), [1, 3]) + assert.deepStrictEqual(pipe([1, 2], _.mapWithIndex(add)), [1, 3]) }) it('of', () => { - assert.deepStrictEqual(_.nonEmptyArray.of(1), [1]) + assert.deepStrictEqual(_.of(1), [1]) }) it('ap', () => { const double = (n: number) => n * 2 - assert.deepStrictEqual(_.nonEmptyArray.ap([double, double], [1, 2]), [2, 4, 2, 4]) + const fab: _.NonEmptyArray<(n: number) => number> = [double, double] + assert.deepStrictEqual(pipe(fab, _.ap([1, 2])), [2, 4, 2, 4]) }) it('chain', () => { const f = (a: number): _.NonEmptyArray => [a, 4] - assert.deepStrictEqual(_.nonEmptyArray.chain([1, 2], f), [1, 4, 2, 4]) + assert.deepStrictEqual(pipe([1, 2], _.chain(f)), [1, 4, 2, 4]) }) it('extend', () => { const sum = _.fold(M.monoidSum) - assert.deepStrictEqual(_.nonEmptyArray.extend([1, 2, 3, 4], sum), [10, 9, 7, 4]) + assert.deepStrictEqual(pipe([1, 2, 3, 4], _.extend(sum)), [10, 9, 7, 4]) }) it('extract', () => { - assert.deepStrictEqual(_.nonEmptyArray.extract([1, 2, 3]), 1) + assert.deepStrictEqual(_.extract([1, 2, 3]), 1) }) it('min', () => { @@ -109,21 +110,21 @@ describe('NonEmptyArray', () => { it('reduce', () => { assert.deepStrictEqual( - _.nonEmptyArray.reduce(['a', 'b'], '', (b, a) => b + a), + pipe( + ['a', 'b'], + _.reduce('', (b, a) => b + a) + ), 'ab' ) }) it('foldMap', () => { - const foldMap = _.nonEmptyArray.foldMap(M.monoidString) - assert.deepStrictEqual(foldMap(['a', 'b', 'c'], identity), 'abc') + assert.deepStrictEqual(pipe(['a', 'b', 'c'], _.foldMap(M.monoidString)(identity)), 'abc') }) it('reduceRight', () => { - const reduceRight = _.nonEmptyArray.reduceRight - const init1 = '' const f = (a: string, acc: string) => acc + a - assert.deepStrictEqual(reduceRight(['a', 'b', 'c'], init1, f), 'cba') + assert.deepStrictEqual(pipe(['a', 'b', 'c'], _.reduceRight('', f)), 'cba') }) it('fromArray', () => { @@ -265,21 +266,30 @@ describe('NonEmptyArray', () => { it('reduceWithIndex', () => { assert.deepStrictEqual( - _.nonEmptyArray.reduceWithIndex(['a', 'b'], '', (i, b, a) => b + i + a), + pipe( + ['a', 'b'], + _.reduceWithIndex('', (i, b, a) => b + i + a) + ), '0a1b' ) }) it('foldMapWithIndex', () => { assert.deepStrictEqual( - _.nonEmptyArray.foldMapWithIndex(M.monoidString)(['a', 'b'], (i, a) => i + a), + pipe( + ['a', 'b'], + _.foldMapWithIndex(M.monoidString)((i, a) => i + a) + ), '0a1b' ) }) it('reduceRightWithIndex', () => { assert.deepStrictEqual( - _.nonEmptyArray.reduceRightWithIndex(['a', 'b'], '', (i, a, b) => b + i + a), + pipe( + ['a', 'b'], + _.reduceRightWithIndex('', (i, a, b) => b + i + a) + ), '1b0a' ) }) @@ -301,7 +311,10 @@ describe('NonEmptyArray', () => { it('alt / concat', () => { assert.deepStrictEqual(_.concat(['a'], []), ['a']) assert.deepStrictEqual( - _.nonEmptyArray.alt(['a'], () => ['b']), + pipe( + ['a'], + _.alt(() => ['b']) + ), ['a', 'b'] ) }) diff --git a/test/ReadonlyNonEmptyArray.ts b/test/ReadonlyNonEmptyArray.ts index 33399b4f6..4e482cf54 100644 --- a/test/ReadonlyNonEmptyArray.ts +++ b/test/ReadonlyNonEmptyArray.ts @@ -71,30 +71,31 @@ describe('ReadonlyNonEmptyArray', () => { it('mapWithIndex', () => { const add = (i: number, n: number) => n + i - assert.deepStrictEqual(_.readonlyNonEmptyArray.mapWithIndex([1, 2], add), [1, 3]) + assert.deepStrictEqual(pipe([1, 2], _.mapWithIndex(add)), [1, 3]) }) it('of', () => { - assert.deepStrictEqual(_.readonlyNonEmptyArray.of(1), [1]) + assert.deepStrictEqual(_.of(1), [1]) }) it('ap', () => { const double = (n: number) => n * 2 - assert.deepStrictEqual(_.readonlyNonEmptyArray.ap([double, double], [1, 2]), [2, 4, 2, 4]) + const fab: _.ReadonlyNonEmptyArray<(n: number) => number> = [double, double] + assert.deepStrictEqual(pipe(fab, _.ap([1, 2])), [2, 4, 2, 4]) }) it('chain', () => { const f = (a: number): _.ReadonlyNonEmptyArray => [a, 4] - assert.deepStrictEqual(_.readonlyNonEmptyArray.chain([1, 2], f), [1, 4, 2, 4]) + assert.deepStrictEqual(pipe([1, 2], _.chain(f)), [1, 4, 2, 4]) }) it('extend', () => { const sum = M.fold(M.monoidSum) - assert.deepStrictEqual(_.readonlyNonEmptyArray.extend([1, 2, 3, 4], sum), [10, 9, 7, 4]) + assert.deepStrictEqual(pipe([1, 2, 3, 4], _.extend(sum)), [10, 9, 7, 4]) }) it('extract', () => { - assert.deepStrictEqual(_.readonlyNonEmptyArray.extract([1, 2, 3]), 1) + assert.deepStrictEqual(_.extract([1, 2, 3]), 1) }) it('min', () => { @@ -109,21 +110,21 @@ describe('ReadonlyNonEmptyArray', () => { it('reduce', () => { assert.deepStrictEqual( - _.readonlyNonEmptyArray.reduce(['a', 'b'], '', (b, a) => b + a), + pipe( + ['a', 'b'], + _.reduce('', (b, a) => b + a) + ), 'ab' ) }) it('foldMap', () => { - const foldMap = _.readonlyNonEmptyArray.foldMap(M.monoidString) - assert.deepStrictEqual(foldMap(['a', 'b', 'c'], identity), 'abc') + assert.deepStrictEqual(pipe(['a', 'b', 'c'], _.foldMap(M.monoidString)(identity)), 'abc') }) it('reduceRight', () => { - const reduceRight = _.readonlyNonEmptyArray.reduceRight - const init1 = '' const f = (a: string, acc: string) => acc + a - assert.deepStrictEqual(reduceRight(['a', 'b', 'c'], init1, f), 'cba') + assert.deepStrictEqual(pipe(['a', 'b', 'c'], _.reduceRight('', f)), 'cba') }) it('fromReadonlyArray', () => { @@ -258,21 +259,30 @@ describe('ReadonlyNonEmptyArray', () => { it('reduceWithIndex', () => { assert.deepStrictEqual( - _.readonlyNonEmptyArray.reduceWithIndex(['a', 'b'], '', (i, b, a) => b + i + a), + pipe( + ['a', 'b'], + _.reduceWithIndex('', (i, b, a) => b + i + a) + ), '0a1b' ) }) it('foldMapWithIndex', () => { assert.deepStrictEqual( - _.readonlyNonEmptyArray.foldMapWithIndex(M.monoidString)(['a', 'b'], (i, a) => i + a), + pipe( + ['a', 'b'], + _.foldMapWithIndex(M.monoidString)((i, a) => i + a) + ), '0a1b' ) }) it('reduceRightWithIndex', () => { assert.deepStrictEqual( - _.readonlyNonEmptyArray.reduceRightWithIndex(['a', 'b'], '', (i, a, b) => b + i + a), + pipe( + ['a', 'b'], + _.reduceRightWithIndex('', (i, a, b) => b + i + a) + ), '1b0a' ) }) @@ -294,7 +304,10 @@ describe('ReadonlyNonEmptyArray', () => { it('alt / concat', () => { assert.deepStrictEqual(_.concat(['a'], []), ['a']) assert.deepStrictEqual( - _.readonlyNonEmptyArray.alt(['a'], () => ['b']), + pipe( + ['a'], + _.alt(() => ['b']) + ), ['a', 'b'] ) }) From d76a33bc9b33f5978e3020ef68fb163391857d60 Mon Sep 17 00:00:00 2001 From: gcanti Date: Wed, 17 Jun 2020 16:39:26 +0200 Subject: [PATCH 054/106] split `option` mega instance --- CHANGELOG.md | 14 ++ docs/modules/Option.ts.md | 174 +++++++++++++++++++- src/Option.ts | 293 ++++++++++++++++++++++++++-------- test/Applicative.ts | 21 ++- test/Apply.ts | 18 +-- test/Array.ts | 6 +- test/Either.ts | 30 ++-- test/Foldable.ts | 40 ++--- test/Functor.ts | 2 +- test/Identity.ts | 16 +- test/Map.ts | 106 ++++++------ test/NonEmptyArray.ts | 76 ++++----- test/Option.ts | 4 +- test/ReadonlyArray.ts | 6 +- test/ReadonlyMap.ts | 106 ++++++------ test/ReadonlyNonEmptyArray.ts | 10 +- test/ReadonlyRecord.ts | 59 +++---- test/ReadonlyTuple.ts | 14 +- test/Record.ts | 61 +++---- test/These.ts | 68 ++++---- test/Traversable.ts | 21 +-- test/Tree.ts | 4 +- test/pipeable.ts | 38 +++-- 23 files changed, 777 insertions(+), 410 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ab7aadc4f..a0eb89c06 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -97,6 +97,20 @@ high state of flux, you're at risk of it changing without notice. - add `altNonEmptyArray` instance (@gcanti) - add `extendNonEmptyArray` instance (@gcanti) - add `comonadNonEmptyArray` instance (@gcanti) + - `Option` + - add `functorOption` instance (@gcanti) + - add `applyOption` instance (@gcanti) + - add `applicativeOption` instance (@gcanti) + - add `monadOption` instance (@gcanti) + - add `foldableOption` instance (@gcanti) + - add `altOption` instance (@gcanti) + - add `alternativeOption` instance (@gcanti) + - add `extendOption` instance (@gcanti) + - add `compactableOption` instance (@gcanti) + - add `filterableOption` instance (@gcanti) + - add `traversableOption` instance (@gcanti) + - add `witherableOption` instance (@gcanti) + - add `monadThrowOption` instance (@gcanti) - `ReadonlyArray` - add `functorArray` instance (@gcanti) - add `functorWithIndexArray` instance (@gcanti) diff --git a/docs/modules/Option.ts.md b/docs/modules/Option.ts.md index 429c9023e..a8a113173 100644 --- a/docs/modules/Option.ts.md +++ b/docs/modules/Option.ts.md @@ -25,6 +25,8 @@ Added in v2.0.0 - [Alt](#alt) - [alt](#alt) +- [Alternative](#alternative) + - [zero](#zero) - [Apply](#apply) - [ap](#ap) - [apFirst](#apfirst) @@ -50,6 +52,8 @@ Added in v2.0.0 - [chain](#chain) - [chainFirst](#chainfirst) - [flatten](#flatten) +- [MonadThrow](#monadthrow) + - [throwError](#throwerror) - [Traversable](#traversable) - [sequence](#sequence) - [traverse](#traverse) @@ -79,6 +83,15 @@ Added in v2.0.0 - [instances](#instances) - [URI](#uri) - [URI (type alias)](#uri-type-alias) + - [altOption](#altoption) + - [alternativeOption](#alternativeoption) + - [applicativeOption](#applicativeoption) + - [applyOption](#applyoption) + - [compactableOption](#compactableoption) + - [extendOption](#extendoption) + - [filterableOption](#filterableoption) + - [foldableOption](#foldableoption) + - [functorOption](#functoroption) - [getApplyMonoid](#getapplymonoid) - [getApplySemigroup](#getapplysemigroup) - [getEq](#geteq) @@ -87,7 +100,11 @@ Added in v2.0.0 - [getMonoid](#getmonoid) - [getOrd](#getord) - [getShow](#getshow) + - [monadOption](#monadoption) + - [monadThrowOption](#monadthrowoption) - [option](#option) + - [traversableOption](#traversableoption) + - [witherableOption](#witherableoption) - [model](#model) - [None (interface)](#none-interface) - [Option (type alias)](#option-type-alias) @@ -138,6 +155,18 @@ assert.deepStrictEqual( Added in v2.0.0 +# Alternative + +## zero + +**Signature** + +```ts +export declare const zero: () => Option +``` + +Added in v2.7.0 + # Apply ## ap @@ -351,6 +380,18 @@ export declare const flatten: (mma: Option>) => Option Added in v2.0.0 +# MonadThrow + +## throwError + +**Signature** + +```ts +export declare const throwError: (e: E) => Option +``` + +Added in v2.7.0 + # Traversable ## sequence @@ -783,6 +824,96 @@ export type URI = typeof URI Added in v2.0.0 +## altOption + +**Signature** + +```ts +export declare const altOption: Alt1<'Option'> +``` + +Added in v2.7.0 + +## alternativeOption + +**Signature** + +```ts +export declare const alternativeOption: Alternative1<'Option'> +``` + +Added in v2.7.0 + +## applicativeOption + +**Signature** + +```ts +export declare const applicativeOption: Applicative1<'Option'> +``` + +Added in v2.7.0 + +## applyOption + +**Signature** + +```ts +export declare const applyOption: Apply1<'Option'> +``` + +Added in v2.7.0 + +## compactableOption + +**Signature** + +```ts +export declare const compactableOption: Compactable1<'Option'> +``` + +Added in v2.7.0 + +## extendOption + +**Signature** + +```ts +export declare const extendOption: Extend1<'Option'> +``` + +Added in v2.7.0 + +## filterableOption + +**Signature** + +```ts +export declare const filterableOption: Filterable1<'Option'> +``` + +Added in v2.7.0 + +## foldableOption + +**Signature** + +```ts +export declare const foldableOption: Foldable1<'Option'> +``` + +Added in v2.7.0 + +## functorOption + +**Signature** + +```ts +export declare const functorOption: Functor1<'Option'> +``` + +Added in v2.7.0 + ## getApplyMonoid **Signature** @@ -984,6 +1115,26 @@ export declare function getShow(S: Show): Show> Added in v2.0.0 +## monadOption + +**Signature** + +```ts +export declare const monadOption: Monad1<'Option'> +``` + +Added in v2.7.0 + +## monadThrowOption + +**Signature** + +```ts +export declare const monadThrowOption: MonadThrow1<'Option'> +``` + +Added in v2.7.0 + ## option **Signature** @@ -991,17 +1142,34 @@ Added in v2.0.0 ```ts export declare const option: Monad1<'Option'> & Foldable1<'Option'> & - Traversable1<'Option'> & Alternative1<'Option'> & Extend1<'Option'> & - Compactable1<'Option'> & - Filterable1<'Option'> & Witherable1<'Option'> & MonadThrow1<'Option'> ``` Added in v2.0.0 +## traversableOption + +**Signature** + +```ts +export declare const traversableOption: Traversable1<'Option'> +``` + +Added in v2.7.0 + +## witherableOption + +**Signature** + +```ts +export declare const witherableOption: Witherable1<'Option'> +``` + +Added in v2.7.0 + # model ## None (interface) diff --git a/src/Option.ts b/src/Option.ts index 0622857fc..8f7aa0dc3 100644 --- a/src/Option.ts +++ b/src/Option.ts @@ -30,6 +30,9 @@ import { Semigroup } from './Semigroup' import { Show } from './Show' import { Traversable1, PipeableTraverse1 } from './Traversable' import { Witherable1, PipeableWither1, PipeableWilt1 } from './Witherable' +import { Functor1 } from './Functor' +import { Apply1 } from './Apply' +import { Alt1 } from './Alt' // ------------------------------------------------------------------------------------- // model @@ -386,56 +389,6 @@ export function mapNullable(f: (a: A) => B | null | undefined): (ma: Optio // pipeables // ------------------------------------------------------------------------------------- -const defaultSeparate = { left: none, right: none } - -const map_: (fa: Option, f: (a: A) => B) => Option = (fa, f) => (isNone(fa) ? none : some(f(fa.value))) -const ap_: (fab: Option<(a: A) => B>, fa: Option) => Option = (fab, fa) => - isNone(fab) ? none : isNone(fa) ? none : some(fab.value(fa.value)) -const of = some -const chain_: (fa: Option, f: (a: A) => Option) => Option = (ma, f) => (isNone(ma) ? none : f(ma.value)) -const reduce_: (fa: Option, b: B, f: (b: B, a: A) => B) => B = (fa, b, f) => (isNone(fa) ? b : f(b, fa.value)) -const foldMap_: (M: Monoid) => (fa: Option, f: (a: A) => M) => M = (M) => (fa, f) => - isNone(fa) ? M.empty : f(fa.value) -const reduceRight_: (fa: Option, b: B, f: (a: A, b: B) => B) => B = (fa, b, f) => - isNone(fa) ? b : f(fa.value, b) -const traverse_ = (F: Applicative) => (ta: Option, f: (a: A) => HKT): HKT> => { - return isNone(ta) ? F.of(none) : F.map(f(ta.value), some) -} -const alt_: (fa: Option, that: Lazy>) => Option = (fa, that) => (isNone(fa) ? that() : fa) -const filter_ = (fa: Option, predicate: Predicate): Option => - isNone(fa) ? none : predicate(fa.value) ? fa : none -const filterMap_: (fa: Option, f: (a: A) => Option) => Option = (ma, f) => - isNone(ma) ? none : f(ma.value) -const extend_: (wa: Option, f: (wa: Option) => B) => Option = (wa, f) => - isNone(wa) ? none : some(f(wa)) -const partition_ = (fa: Option, predicate: Predicate): Separated, Option> => { - return { - left: filter_(fa, (a) => !predicate(a)), - right: filter_(fa, predicate) - } -} -const partitionMap_: (fa: Option, f: (a: A) => Either) => Separated, Option> = (fa, f) => - separate(map_(fa, f)) -const wither_ = (F: Applicative) => (fa: Option, f: (a: A) => HKT>): HKT> => - isNone(fa) ? F.of(none) : f(fa.value) -const wilt_ = (F: Applicative) => ( - fa: Option, - f: (a: A) => HKT> -): HKT, Option>> => { - const o = map_(fa, (a) => - F.map(f(a), (e) => ({ - left: getLeft(e), - right: getRight(e) - })) - ) - return isNone(o) - ? F.of({ - left: none, - right: none - }) - : o.value -} - /** * @category Functor * @since 2.0.0 @@ -528,6 +481,18 @@ export const flatten: (mma: Option>) => Option = (mma) => chain_ */ export const alt: (that: Lazy>) => (fa: Option) => Option = (that) => (fa) => alt_(fa, that) +/** + * @category Alternative + * @since 2.7.0 + */ +export const zero: Alternative1['zero'] = () => none + +/** + * @category MonadThrow + * @since 2.7.0 + */ +export const throwError: MonadThrow1['throwError'] = () => none + /** * @category Extend * @since 2.0.0 @@ -568,6 +533,8 @@ export const reduceRight: (b: B, f: (a: A, b: B) => B) => (fa: Option) */ export const compact: (fa: Option>) => Option = (ma) => chain_(ma, identity) +const defaultSeparate = { left: none, right: none } + /** * @category Compactable * @since 2.0.0 @@ -660,6 +627,54 @@ export const wilt: PipeableWilt1 = ( // instances // ------------------------------------------------------------------------------------- +const map_: (fa: Option, f: (a: A) => B) => Option = (fa, f) => (isNone(fa) ? none : some(f(fa.value))) +const ap_: (fab: Option<(a: A) => B>, fa: Option) => Option = (fab, fa) => + isNone(fab) ? none : isNone(fa) ? none : some(fab.value(fa.value)) +const of = some +const chain_: (fa: Option, f: (a: A) => Option) => Option = (ma, f) => (isNone(ma) ? none : f(ma.value)) +const reduce_: (fa: Option, b: B, f: (b: B, a: A) => B) => B = (fa, b, f) => (isNone(fa) ? b : f(b, fa.value)) +const foldMap_: (M: Monoid) => (fa: Option, f: (a: A) => M) => M = (M) => (fa, f) => + isNone(fa) ? M.empty : f(fa.value) +const reduceRight_: (fa: Option, b: B, f: (a: A, b: B) => B) => B = (fa, b, f) => + isNone(fa) ? b : f(fa.value, b) +const traverse_ = (F: Applicative) => (ta: Option, f: (a: A) => HKT): HKT> => { + return isNone(ta) ? F.of(none) : F.map(f(ta.value), some) +} +const alt_: (fa: Option, that: Lazy>) => Option = (fa, that) => (isNone(fa) ? that() : fa) +const filter_ = (fa: Option, predicate: Predicate): Option => + isNone(fa) ? none : predicate(fa.value) ? fa : none +const filterMap_: (fa: Option, f: (a: A) => Option) => Option = (ma, f) => + isNone(ma) ? none : f(ma.value) +const extend_: (wa: Option, f: (wa: Option) => B) => Option = (wa, f) => + isNone(wa) ? none : some(f(wa)) +const partition_ = (fa: Option, predicate: Predicate): Separated, Option> => { + return { + left: filter_(fa, (a) => !predicate(a)), + right: filter_(fa, predicate) + } +} +const partitionMap_: (fa: Option, f: (a: A) => Either) => Separated, Option> = (fa, f) => + separate(map_(fa, f)) +const wither_ = (F: Applicative) => (fa: Option, f: (a: A) => HKT>): HKT> => + isNone(fa) ? F.of(none) : f(fa.value) +const wilt_ = (F: Applicative) => ( + fa: Option, + f: (a: A) => HKT> +): HKT, Option>> => { + const o = map_(fa, (a) => + F.map(f(a), (e) => ({ + left: getLeft(e), + right: getRight(e) + })) + ) + return isNone(o) + ? F.of({ + left: none, + right: none + }) + : o.value +} + /** * @category instances * @since 2.0.0 @@ -678,16 +693,6 @@ declare module './HKT' { } } -/** - * @internal - */ -export const applicativeOption: Applicative1 = { - URI, - map: map_, - of, - ap: ap_ -} - /** * @category instances * @since 2.0.0 @@ -876,17 +881,175 @@ export function getMonoid(S: Semigroup): Monoid> { } } +/** + * @category instances + * @since 2.7.0 + */ +export const functorOption: Functor1 = { + URI, + map: map_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const applyOption: Apply1 = { + URI, + map: map_, + ap: ap_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const applicativeOption: Applicative1 = { + URI, + map: map_, + ap: ap_, + of +} + +/** + * @category instances + * @since 2.7.0 + */ +export const monadOption: Monad1 = { + URI, + map: map_, + ap: ap_, + of, + chain: chain_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const foldableOption: Foldable1 = { + URI, + reduce: reduce_, + foldMap: foldMap_, + reduceRight: reduceRight_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const altOption: Alt1 = { + URI, + map: map_, + alt: alt_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const alternativeOption: Alternative1 = { + URI, + map: map_, + ap: ap_, + of, + alt: alt_, + zero +} + +/** + * @category instances + * @since 2.7.0 + */ +export const extendOption: Extend1 = { + URI, + map: map_, + extend: extend_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const compactableOption: Compactable1 = { + URI, + compact, + separate +} + +/** + * @category instances + * @since 2.7.0 + */ +export const filterableOption: Filterable1 = { + URI, + map: map_, + compact, + separate, + filter: filter_, + filterMap: filterMap_, + partition: partition_, + partitionMap: partitionMap_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const traversableOption: Traversable1 = { + URI, + map: map_, + reduce: reduce_, + foldMap: foldMap_, + reduceRight: reduceRight_, + traverse: traverse_, + sequence +} + +/** + * @category instances + * @since 2.7.0 + */ +export const witherableOption: Witherable1 = { + URI, + map: map_, + reduce: reduce_, + foldMap: foldMap_, + reduceRight: reduceRight_, + traverse: traverse_, + sequence, + compact, + separate, + filter: filter_, + filterMap: filterMap_, + partition: partition_, + partitionMap: partitionMap_, + wither: wither_, + wilt: wilt_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const monadThrowOption: MonadThrow1 = { + URI, + map: map_, + ap: ap_, + of, + chain: chain_, + throwError +} + +// TODO: remove in v3 /** * @category instances * @since 2.0.0 */ export const option: Monad1 & Foldable1 & - Traversable1 & Alternative1 & Extend1 & - Compactable1 & - Filterable1 & Witherable1 & MonadThrow1 = { URI, @@ -899,7 +1062,7 @@ export const option: Monad1 & reduceRight: reduceRight_, traverse: traverse_, sequence, - zero: () => none, + zero, alt: alt_, extend: extend_, compact, @@ -910,7 +1073,7 @@ export const option: Monad1 & partitionMap: partitionMap_, wither: wither_, wilt: wilt_, - throwError: () => none + throwError } // ------------------------------------------------------------------------------------- diff --git a/test/Applicative.ts b/test/Applicative.ts index 1da618f39..ded787bd4 100644 --- a/test/Applicative.ts +++ b/test/Applicative.ts @@ -1,19 +1,24 @@ import * as assert from 'assert' import { getApplicativeComposition } from '../src/Applicative' import * as A from '../src/ReadonlyArray' -import { none, option, some } from '../src/Option' +import * as O from '../src/Option' describe('Applicative', () => { it('getApplicativeComposition', () => { - const arrayOption = getApplicativeComposition(A.applicativeArray, option) + const arrayOption = getApplicativeComposition(A.applicativeArray, O.applicativeOption) const double = (n: number) => n * 2 const inc = (n: number) => n + 1 - assert.deepStrictEqual(arrayOption.ap([some(double), some(inc)], [some(1), some(2)]), [ - some(2), - some(4), - some(2), - some(3) + assert.deepStrictEqual(arrayOption.ap([O.some(double), O.some(inc)], [O.some(1), O.some(2)]), [ + O.some(2), + O.some(4), + O.some(2), + O.some(3) + ]) + assert.deepStrictEqual(arrayOption.ap([O.some(double), O.none], [O.some(1), O.some(2)]), [ + O.some(2), + O.some(4), + O.none, + O.none ]) - assert.deepStrictEqual(arrayOption.ap([some(double), none], [some(1), some(2)]), [some(2), some(4), none, none]) }) }) diff --git a/test/Apply.ts b/test/Apply.ts index 5ce2e92ca..bdb4f687f 100644 --- a/test/Apply.ts +++ b/test/Apply.ts @@ -2,15 +2,15 @@ import * as assert from 'assert' import { sequenceS, sequenceT } from '../src/Apply' import * as A from '../src/ReadonlyArray' import * as E from '../src/Either' -import { none, option, some } from '../src/Option' +import * as O from '../src/Option' import { pipe } from '../src/function' describe('Apply', () => { it('sequenceT', () => { - const sequenceTOption = sequenceT(option) - assert.deepStrictEqual(sequenceTOption(some(1)), some([1])) - assert.deepStrictEqual(sequenceTOption(some(1), some('2')), some([1, '2'])) - assert.deepStrictEqual(sequenceTOption(some(1), some('2'), none), none) + const sequenceTOption = sequenceT(O.applyOption) + assert.deepStrictEqual(sequenceTOption(O.some(1)), O.some([1])) + assert.deepStrictEqual(sequenceTOption(O.some(1), O.some('2')), O.some([1, '2'])) + assert.deepStrictEqual(sequenceTOption(O.some(1), O.some('2'), O.none), O.none) // #914 const a1: ReadonlyArray = [1, 2, 3] @@ -42,10 +42,10 @@ describe('Apply', () => { }) it('sequenceS', () => { - const adoOption = sequenceS(option) - assert.deepStrictEqual(adoOption({ a: some(1) }), some({ a: 1 })) - assert.deepStrictEqual(adoOption({ a: some(1), b: some(2) }), some({ a: 1, b: 2 })) - assert.deepStrictEqual(adoOption({ a: some(1), b: none }), none) + const adoOption = sequenceS(O.applyOption) + assert.deepStrictEqual(adoOption({ a: O.some(1) }), O.some({ a: 1 })) + assert.deepStrictEqual(adoOption({ a: O.some(1), b: O.some(2) }), O.some({ a: 1, b: 2 })) + assert.deepStrictEqual(adoOption({ a: O.some(1), b: O.none }), O.none) const adoEither = sequenceS(E.applyEither) assert.deepStrictEqual(adoEither({ a: E.right(1) }), E.right({ a: 1 })) diff --git a/test/Array.ts b/test/Array.ts index 67c671d04..f24214559 100644 --- a/test/Array.ts +++ b/test/Array.ts @@ -24,7 +24,7 @@ describe('Array', () => { }) it('sequence', () => { - const sequence = _.sequence(O.option) + const sequence = _.sequence(O.applicativeOption) assert.deepStrictEqual(sequence([O.some(1), O.some(3)]), O.some([1, 3])) assert.deepStrictEqual(sequence([O.some(1), O.none]), O.none) }) @@ -33,14 +33,14 @@ describe('Array', () => { assert.deepStrictEqual( pipe( ['a', 'bb'], - _.traverseWithIndex(O.option)((i, s) => (s.length >= 1 ? O.some(s + i) : O.none)) + _.traverseWithIndex(O.applicativeOption)((i, s) => (s.length >= 1 ? O.some(s + i) : O.none)) ), O.some(['a0', 'bb1']) ) assert.deepStrictEqual( pipe( ['a', 'bb'], - _.traverseWithIndex(O.option)((i, s) => (s.length > 1 ? O.some(s + i) : O.none)) + _.traverseWithIndex(O.applicativeOption)((i, s) => (s.length > 1 ? O.some(s + i) : O.none)) ), O.none ) diff --git a/test/Either.ts b/test/Either.ts index 3155e580b..63789c0ef 100644 --- a/test/Either.ts +++ b/test/Either.ts @@ -3,7 +3,7 @@ import * as _ from '../src/Either' import { eqNumber, eqString } from '../src/Eq' import { identity, pipe } from '../src/function' import { monoidString, monoidSum } from '../src/Monoid' -import { none, option, some } from '../src/Option' +import * as O from '../src/Option' import { semigroupSum } from '../src/Semigroup' import { showString } from '../src/Show' import * as T from '../src/Task' @@ -144,17 +144,17 @@ describe('Either', () => { }) it('traverse', () => { - const traverse = _.traverse(option)((n: number) => (n >= 2 ? some(n) : none)) - assert.deepStrictEqual(pipe(_.left('a'), traverse), some(_.left('a'))) - assert.deepStrictEqual(pipe(_.right(1), traverse), none) - assert.deepStrictEqual(pipe(_.right(3), traverse), some(_.right(3))) + const traverse = _.traverse(O.applicativeOption)((n: number) => (n >= 2 ? O.some(n) : O.none)) + assert.deepStrictEqual(pipe(_.left('a'), traverse), O.some(_.left('a'))) + assert.deepStrictEqual(pipe(_.right(1), traverse), O.none) + assert.deepStrictEqual(pipe(_.right(3), traverse), O.some(_.right(3))) }) it('sequence', () => { - const sequence = _.sequence(option) - assert.deepStrictEqual(sequence(_.right(some(1))), some(_.right(1))) - assert.deepStrictEqual(sequence(_.left('a')), some(_.left('a'))) - assert.deepStrictEqual(sequence(_.right(none)), none) + const sequence = _.sequence(O.applicativeOption) + assert.deepStrictEqual(sequence(_.right(O.some(1))), O.some(_.right(1))) + assert.deepStrictEqual(sequence(_.left('a')), O.some(_.left('a'))) + assert.deepStrictEqual(sequence(_.right(O.none)), O.none) }) }) @@ -392,8 +392,8 @@ describe('Either', () => { it('compact', () => { assert.deepStrictEqual(W.compact(_.left('1')), _.left('1')) - assert.deepStrictEqual(W.compact(_.right(none)), _.left(monoidString.empty)) - assert.deepStrictEqual(W.compact(_.right(some(123))), _.right(123)) + assert.deepStrictEqual(W.compact(_.right(O.none)), _.left(monoidString.empty)) + assert.deepStrictEqual(W.compact(_.right(O.some(123))), _.right(123)) }) it('separate', () => { @@ -446,7 +446,7 @@ describe('Either', () => { }) it('filterMap', () => { - const f = (n: number) => (p(n) ? some(n + 1) : none) + const f = (n: number) => (p(n) ? O.some(n + 1) : O.none) assert.deepStrictEqual(W.filterMap(_.left('123'), f), _.left('123')) assert.deepStrictEqual(W.filterMap(_.right(1), f), _.left(monoidString.empty)) assert.deepStrictEqual(W.filterMap(_.right(3), f), _.right(4)) @@ -454,7 +454,7 @@ describe('Either', () => { it('wither', async () => { const wither = W.wither(T.task) - const f = (n: number) => T.of(p(n) ? some(n + 1) : none) + const f = (n: number) => T.of(p(n) ? O.some(n + 1) : O.none) assert.deepStrictEqual(await wither(_.left('foo'), f)(), _.left('foo')) assert.deepStrictEqual(await wither(_.right(1), f)(), _.left(monoidString.empty)) assert.deepStrictEqual(await wither(_.right(3), f)(), _.right(4)) @@ -558,8 +558,8 @@ describe('Either', () => { }) it('fromOption', () => { - assert.deepStrictEqual(_.fromOption(() => 'none')(none), _.left('none')) - assert.deepStrictEqual(_.fromOption(() => 'none')(some(1)), _.right(1)) + assert.deepStrictEqual(_.fromOption(() => 'none')(O.none), _.left('none')) + assert.deepStrictEqual(_.fromOption(() => 'none')(O.some(1)), _.right(1)) }) it('exists', () => { diff --git a/test/Foldable.ts b/test/Foldable.ts index 27ff07211..06d05124f 100644 --- a/test/Foldable.ts +++ b/test/Foldable.ts @@ -3,7 +3,7 @@ import * as A from '../src/ReadonlyArray' import { foldM, getFoldableComposition, intercalate, traverse_ } from '../src/Foldable' import * as I from '../src/IO' import { monoidString } from '../src/Monoid' -import * as option from '../src/Option' +import * as O from '../src/Option' export const ArrayOptionURI = 'ArrayOption' @@ -11,26 +11,23 @@ export type ArrayOptionURI = typeof ArrayOptionURI describe('Foldable', () => { it('getFoldableComposition', () => { - const F = getFoldableComposition(A.foldableArray, option.option) + const F = getFoldableComposition(A.foldableArray, O.foldableOption) // reduce - assert.deepStrictEqual( - F.reduce([option.some('a'), option.some('b'), option.some('c')], '', monoidString.concat), - 'abc' - ) - assert.deepStrictEqual(F.reduce([option.none, option.some('b'), option.none], '', monoidString.concat), 'b') - assert.deepStrictEqual(F.reduce([option.none, option.none, option.none], '', monoidString.concat), '') + assert.deepStrictEqual(F.reduce([O.some('a'), O.some('b'), O.some('c')], '', monoidString.concat), 'abc') + assert.deepStrictEqual(F.reduce([O.none, O.some('b'), O.none], '', monoidString.concat), 'b') + assert.deepStrictEqual(F.reduce([O.none, O.none, O.none], '', monoidString.concat), '') assert.deepStrictEqual(F.reduce([], '', monoidString.concat), '') // foldMap assert.deepStrictEqual( - F.foldMap(monoidString)([option.some('a'), option.some('b'), option.some('c')], (a) => a), + F.foldMap(monoidString)([O.some('a'), O.some('b'), O.some('c')], (a) => a), 'abc' ) assert.deepStrictEqual( - F.foldMap(monoidString)([option.none, option.some('b'), option.none], (a) => a), + F.foldMap(monoidString)([O.none, O.some('b'), O.none], (a) => a), 'b' ) assert.deepStrictEqual( - F.foldMap(monoidString)([option.none, option.none, option.none], (a) => a), + F.foldMap(monoidString)([O.none, O.none, O.none], (a) => a), '' ) assert.deepStrictEqual( @@ -38,12 +35,9 @@ describe('Foldable', () => { '' ) // reduceRight - assert.deepStrictEqual( - F.reduceRight([option.some('a'), option.some('b'), option.some('c')], '', monoidString.concat), - 'abc' - ) - assert.deepStrictEqual(F.reduceRight([option.none, option.some('b'), option.none], '', monoidString.concat), 'b') - assert.deepStrictEqual(F.reduceRight([option.none, option.none, option.none], '', monoidString.concat), '') + assert.deepStrictEqual(F.reduceRight([O.some('a'), O.some('b'), O.some('c')], '', monoidString.concat), 'abc') + assert.deepStrictEqual(F.reduceRight([O.none, O.some('b'), O.none], '', monoidString.concat), 'b') + assert.deepStrictEqual(F.reduceRight([O.none, O.none, O.none], '', monoidString.concat), '') assert.deepStrictEqual(F.reduceRight([], '', monoidString.concat), '') }) @@ -60,16 +54,16 @@ describe('Foldable', () => { it('foldM', () => { assert.deepStrictEqual( - foldM(option.option, A.foldableArray)([], 1, () => option.none), - option.some(1) + foldM(O.monadOption, A.foldableArray)([], 1, () => O.none), + O.some(1) ) assert.deepStrictEqual( - foldM(option.option, A.foldableArray)([2], 1, () => option.none), - option.none + foldM(O.monadOption, A.foldableArray)([2], 1, () => O.none), + O.none ) assert.deepStrictEqual( - foldM(option.option, A.foldableArray)([2], 1, (b, a) => option.some(b + a)), - option.some(3) + foldM(O.monadOption, A.foldableArray)([2], 1, (b, a) => O.some(b + a)), + O.some(3) ) }) }) diff --git a/test/Functor.ts b/test/Functor.ts index 2398c47cf..5129d7175 100644 --- a/test/Functor.ts +++ b/test/Functor.ts @@ -5,7 +5,7 @@ import * as option from '../src/Option' describe('Functor', () => { it('getFunctorComposition', () => { - const arrayOption = getFunctorComposition(A.functorArray, option.option) + const arrayOption = getFunctorComposition(A.functorArray, option.functorOption) const double = (a: number) => a * 2 assert.deepStrictEqual(arrayOption.map([option.some(1)], double), [option.some(2)]) }) diff --git a/test/Identity.ts b/test/Identity.ts index 333582632..f5aecaa18 100644 --- a/test/Identity.ts +++ b/test/Identity.ts @@ -3,7 +3,7 @@ import { left, right } from '../src/Either' import { identity, pipe } from '../src/function' import * as _ from '../src/Identity' import { monoidString } from '../src/Monoid' -import { none, option, some } from '../src/Option' +import * as O from '../src/Option' import { eqNumber } from '../src/Eq' import { showString } from '../src/Show' @@ -85,21 +85,21 @@ describe('Identity', () => { }) it('traverse', () => { - const traverse = _.traverse(option) - assert.deepStrictEqual(pipe(1, traverse(some)), some(1)) + const traverse = _.traverse(O.applicativeOption) + assert.deepStrictEqual(pipe(1, traverse(O.some)), O.some(1)) assert.deepStrictEqual( pipe( 1, - traverse(() => none) + traverse(() => O.none) ), - none + O.none ) }) it('sequence', () => { - const sequence = _.sequence(option) - assert.deepStrictEqual(sequence(some('a')), some('a')) - assert.deepStrictEqual(sequence(none), none) + const sequence = _.sequence(O.applicativeOption) + assert.deepStrictEqual(sequence(O.some('a')), O.some('a')) + assert.deepStrictEqual(sequence(O.none), O.none) }) }) diff --git a/test/Map.ts b/test/Map.ts index daff2bce7..bece10a84 100644 --- a/test/Map.ts +++ b/test/Map.ts @@ -5,7 +5,7 @@ import { Eq, eqNumber, fromEquals } from '../src/Eq' import { identity, Refinement, pipe } from '../src/function' import * as _ from '../src/Map' import { monoidString } from '../src/Monoid' -import { none, option, Option, some } from '../src/Option' +import * as O from '../src/Option' import { fromCompare, ord, ordNumber, ordString } from '../src/Ord' import { getFirstSemigroup, getLastSemigroup, getStructSemigroup, semigroupSum } from '../src/Semigroup' import { getStructShow, Show, showString } from '../src/Show' @@ -447,13 +447,13 @@ describe('Map', () => { ]) const b2 = new Map([[{ id: 'b' }, 2]]) const popS = _.pop(eqUser) - assert.deepStrictEqual(popS({ id: 'a' })(a1b2), some([1, b2])) - assert.deepStrictEqual(popS({ id: 'c' })(a1b2), none) + assert.deepStrictEqual(popS({ id: 'a' })(a1b2), O.some([1, b2])) + assert.deepStrictEqual(popS({ id: 'c' })(a1b2), O.none) const pop = _.pop(eqKey) - assert.deepStrictEqual(pop({ id: 1 })(repo), some([{ value: 1 }, new Map([[{ id: 2 }, { value: 2 }]])])) - assert.deepStrictEqual(pop({ id: 4 })(repo), some([{ value: 1 }, new Map([[{ id: 2 }, { value: 2 }]])])) - assert.deepStrictEqual(pop({ id: 3 })(repo), none) + assert.deepStrictEqual(pop({ id: 1 })(repo), O.some([{ value: 1 }, new Map([[{ id: 2 }, { value: 2 }]])])) + assert.deepStrictEqual(pop({ id: 4 })(repo), O.some([{ value: 1 }, new Map([[{ id: 2 }, { value: 2 }]])])) + assert.deepStrictEqual(pop({ id: 3 })(repo), O.none) // should not modify the source assert.deepStrictEqual( repo, @@ -467,35 +467,35 @@ describe('Map', () => { it('lookupWithKey', () => { const x = new Map([[{ id: 'a' }, 1]]) const lookupWithKeyS = _.lookupWithKey(eqUser) - assert.deepStrictEqual(lookupWithKeyS({ id: 'a' }, x), some([{ id: 'a' }, 1])) - assert.deepStrictEqual(lookupWithKeyS({ id: 'b' }, x), none) - assert.deepStrictEqual(lookupWithKeyS({ id: 'a' })(x), some([{ id: 'a' }, 1])) - assert.deepStrictEqual(lookupWithKeyS({ id: 'b' })(x), none) + assert.deepStrictEqual(lookupWithKeyS({ id: 'a' }, x), O.some([{ id: 'a' }, 1])) + assert.deepStrictEqual(lookupWithKeyS({ id: 'b' }, x), O.none) + assert.deepStrictEqual(lookupWithKeyS({ id: 'a' })(x), O.some([{ id: 'a' }, 1])) + assert.deepStrictEqual(lookupWithKeyS({ id: 'b' })(x), O.none) const lookupWithKey = _.lookupWithKey(eqKey) - assert.deepStrictEqual(lookupWithKey({ id: 1 }, repo), some([{ id: 1 }, { value: 1 }])) - assert.deepStrictEqual(lookupWithKey({ id: 4 }, repo), some([{ id: 1 }, { value: 1 }])) - assert.deepStrictEqual(lookupWithKey({ id: 3 }, repo), none) - assert.deepStrictEqual(lookupWithKey({ id: 1 })(repo), some([{ id: 1 }, { value: 1 }])) - assert.deepStrictEqual(lookupWithKey({ id: 4 })(repo), some([{ id: 1 }, { value: 1 }])) - assert.deepStrictEqual(lookupWithKey({ id: 3 })(repo), none) + assert.deepStrictEqual(lookupWithKey({ id: 1 }, repo), O.some([{ id: 1 }, { value: 1 }])) + assert.deepStrictEqual(lookupWithKey({ id: 4 }, repo), O.some([{ id: 1 }, { value: 1 }])) + assert.deepStrictEqual(lookupWithKey({ id: 3 }, repo), O.none) + assert.deepStrictEqual(lookupWithKey({ id: 1 })(repo), O.some([{ id: 1 }, { value: 1 }])) + assert.deepStrictEqual(lookupWithKey({ id: 4 })(repo), O.some([{ id: 1 }, { value: 1 }])) + assert.deepStrictEqual(lookupWithKey({ id: 3 })(repo), O.none) }) it('lookup', () => { const x = new Map([[{ id: 'a' }, 1]]) const lookupS = _.lookup(eqUser) - assert.deepStrictEqual(lookupS({ id: 'a' }, x), some(1)) - assert.deepStrictEqual(lookupS({ id: 'b' }, x), none) - assert.deepStrictEqual(lookupS({ id: 'a' })(x), some(1)) - assert.deepStrictEqual(lookupS({ id: 'b' })(x), none) + assert.deepStrictEqual(lookupS({ id: 'a' }, x), O.some(1)) + assert.deepStrictEqual(lookupS({ id: 'b' }, x), O.none) + assert.deepStrictEqual(lookupS({ id: 'a' })(x), O.some(1)) + assert.deepStrictEqual(lookupS({ id: 'b' })(x), O.none) const lookup = _.lookup(eqKey) - assert.deepStrictEqual(lookup({ id: 1 }, repo), some({ value: 1 })) - assert.deepStrictEqual(lookup({ id: 4 }, repo), some({ value: 1 })) - assert.deepStrictEqual(lookup({ id: 3 }, repo), none) - assert.deepStrictEqual(lookup({ id: 1 })(repo), some({ value: 1 })) - assert.deepStrictEqual(lookup({ id: 4 })(repo), some({ value: 1 })) - assert.deepStrictEqual(lookup({ id: 3 })(repo), none) + assert.deepStrictEqual(lookup({ id: 1 }, repo), O.some({ value: 1 })) + assert.deepStrictEqual(lookup({ id: 4 }, repo), O.some({ value: 1 })) + assert.deepStrictEqual(lookup({ id: 3 }, repo), O.none) + assert.deepStrictEqual(lookup({ id: 1 })(repo), O.some({ value: 1 })) + assert.deepStrictEqual(lookup({ id: 4 })(repo), O.some({ value: 1 })) + assert.deepStrictEqual(lookup({ id: 3 })(repo), O.none) }) it('isSubmap', () => { @@ -664,9 +664,9 @@ describe('Map', () => { describe('filterable', () => { it('compact', () => { - const fooBar = new Map>([ - ['foo', none], - ['bar', some(123)] + const fooBar = new Map>([ + ['foo', O.none], + ['bar', O.some(123)] ]) const bar = new Map([['bar', 123]]) assert.deepStrictEqual(_.compact(fooBar), bar) @@ -742,7 +742,7 @@ describe('Map', () => { ['b', 3] ]) const b4 = new Map([['b', 4]]) - const f = (n: number) => (p(n) ? some(n + 1) : none) + const f = (n: number) => (p(n) ? O.some(n + 1) : O.none) assert.deepStrictEqual(pipe(emptyMap, _.filterMap(f)), emptyMap) assert.deepStrictEqual(pipe(a1b3, _.filterMap(f)), b4) }) @@ -847,31 +847,31 @@ describe('Map', () => { }) it('traverse', () => { - const traverse = W.traverse(option) + const traverse = W.traverse(O.applicativeOption) const x = new Map([ [{ id: 'k1' }, 1], [{ id: 'k2' }, 2] ]) assert.deepStrictEqual( - traverse(x, (n) => (n <= 2 ? some(n) : none)), - some(x) + traverse(x, (n) => (n <= 2 ? O.some(n) : O.none)), + O.some(x) ) assert.deepStrictEqual( - traverse(x, (n) => (n >= 2 ? some(n) : none)), - none + traverse(x, (n) => (n >= 2 ? O.some(n) : O.none)), + O.none ) }) it('sequence', () => { - const sequence = W.sequence(option) + const sequence = W.sequence(O.applicativeOption) assert.deepStrictEqual( sequence( new Map([ - [{ id: 'k1' }, some(1)], - [{ id: 'k2' }, some(2)] + [{ id: 'k1' }, O.some(1)], + [{ id: 'k2' }, O.some(2)] ]) ), - some( + O.some( new Map([ [{ id: 'k1' }, 1], [{ id: 'k2' }, 2] @@ -881,25 +881,25 @@ describe('Map', () => { assert.deepStrictEqual( sequence( new Map([ - [{ id: 'k1' }, none], - [{ id: 'k2' }, some(2)] + [{ id: 'k1' }, O.none], + [{ id: 'k2' }, O.some(2)] ]) ), - none + O.none ) }) it('traverseWithIndex', () => { - const traverseWithIndex = W.traverseWithIndex(option) + const traverseWithIndex = W.traverseWithIndex(O.applicativeOption) assert.deepStrictEqual( traverseWithIndex( new Map([ [{ id: 'k1' }, 1], [{ id: 'k2' }, 2] ]), - (k, n): Option => (!ordUser.equals(k, { id: 'k1' }) ? some(n) : none) + (k, n): O.Option => (!ordUser.equals(k, { id: 'k1' }) ? O.some(n) : O.none) ), - none + O.none ) assert.deepStrictEqual( traverseWithIndex( @@ -907,9 +907,9 @@ describe('Map', () => { [{ id: 'k1' }, 2], [{ id: 'k2' }, 3] ]), - (k, n): Option => (!ordUser.equals(k, { id: 'k3' }) ? some(n) : none) + (k, n): O.Option => (!ordUser.equals(k, { id: 'k3' }) ? O.some(n) : O.none) ), - some( + O.some( new Map([ [{ id: 'k1' }, 2], [{ id: 'k2' }, 3] @@ -920,7 +920,7 @@ describe('Map', () => { it('wither', async () => { const wither = W.wither(T.task) - const f = (n: number) => T.of(p(n) ? some(n + 1) : none) + const f = (n: number) => T.of(p(n) ? O.some(n + 1) : O.none) assert.deepStrictEqual(await wither(_.empty, f)(), _.empty) assert.deepStrictEqual( await wither( @@ -994,7 +994,7 @@ describe('Map', () => { ['b', 3] ]) const b4 = new Map([['b', 4]]) - const f = (_: string, n: number) => (p(n) ? some(n + 1) : none) + const f = (_: string, n: number) => (p(n) ? O.some(n + 1) : O.none) assert.deepStrictEqual(filterMapWithIndex(emptyMap, f), emptyMap) assert.deepStrictEqual(filterMapWithIndex(a1b3, f), b4) }) @@ -1060,11 +1060,11 @@ describe('Map', () => { it('updateAt', () => { const m1 = new Map([]) - assert.deepStrictEqual(_.updateAt(eqUser)({ id: 'a' }, 'a')(m1), none) + assert.deepStrictEqual(_.updateAt(eqUser)({ id: 'a' }, 'a')(m1), O.none) const m2 = new Map([[{ id: 'a' }, 'b']]) assert.deepStrictEqual( _.updateAt(eqUser)({ id: 'a' }, 'a')(m2), - some( + O.some( new Map([[{ id: 'a' }, 'a']]) ) ) @@ -1072,11 +1072,11 @@ describe('Map', () => { it('modifyAt', () => { const m1 = new Map([]) - assert.deepStrictEqual(_.modifyAt(eqUser)({ id: 'a' }, (n: number) => n * 2)(m1), none) + assert.deepStrictEqual(_.modifyAt(eqUser)({ id: 'a' }, (n: number) => n * 2)(m1), O.none) const m2 = new Map([[{ id: 'a' }, 1]]) assert.deepStrictEqual( _.modifyAt(eqUser)({ id: 'a' }, (n: number) => n * 2)(m2), - some( + O.some( new Map([[{ id: 'a' }, 2]]) ) ) diff --git a/test/NonEmptyArray.ts b/test/NonEmptyArray.ts index 39a4ca7e2..7456fc532 100644 --- a/test/NonEmptyArray.ts +++ b/test/NonEmptyArray.ts @@ -3,7 +3,7 @@ import { eqNumber } from '../src/Eq' import { identity, pipe } from '../src/function' import * as M from '../src/Monoid' import * as _ from '../src/NonEmptyArray' -import { isSome, none, option, some } from '../src/Option' +import * as O from '../src/Option' import { ordNumber } from '../src/Ord' import { semigroupString, semigroupSum } from '../src/Semigroup' import { showString } from '../src/Show' @@ -14,39 +14,39 @@ describe('NonEmptyArray', () => { assert.deepStrictEqual( pipe( [1, 2, 3], - _.traverse(option)((n) => (n >= 0 ? some(n) : none)) + _.traverse(O.applicativeOption)((n) => (n >= 0 ? O.some(n) : O.none)) ), - some([1, 2, 3]) + O.some([1, 2, 3]) ) assert.deepStrictEqual( pipe( [1, 2, 3], - _.traverse(option)((n) => (n >= 2 ? some(n) : none)) + _.traverse(O.applicativeOption)((n) => (n >= 2 ? O.some(n) : O.none)) ), - none + O.none ) }) it('sequence', () => { - const sequence = _.sequence(option) - assert.deepStrictEqual(sequence([some(1), some(2), some(3)]), some([1, 2, 3])) - assert.deepStrictEqual(sequence([none, some(2), some(3)]), none) + const sequence = _.sequence(O.applicativeOption) + assert.deepStrictEqual(sequence([O.some(1), O.some(2), O.some(3)]), O.some([1, 2, 3])) + assert.deepStrictEqual(sequence([O.none, O.some(2), O.some(3)]), O.none) }) it('traverseWithIndex', () => { assert.deepStrictEqual( pipe( ['a', 'bb'], - _.traverseWithIndex(option)((i, s) => (s.length >= 1 ? some(s + i) : none)) + _.traverseWithIndex(O.applicativeOption)((i, s) => (s.length >= 1 ? O.some(s + i) : O.none)) ), - some(['a0', 'bb1']) + O.some(['a0', 'bb1']) ) assert.deepStrictEqual( pipe( ['a', 'bb'], - _.traverseWithIndex(option)((i, s) => (s.length > 1 ? some(s + i) : none)) + _.traverseWithIndex(O.applicativeOption)((i, s) => (s.length > 1 ? O.some(s + i) : O.none)) ), - none + O.none ) }) }) @@ -128,9 +128,9 @@ describe('NonEmptyArray', () => { }) it('fromArray', () => { - assert.deepStrictEqual(_.fromArray([]), none) - assert.deepStrictEqual(_.fromArray([1]), some([1])) - assert.deepStrictEqual(_.fromArray([1, 2]), some([1, 2])) + assert.deepStrictEqual(_.fromArray([]), O.none) + assert.deepStrictEqual(_.fromArray([1]), O.some([1])) + assert.deepStrictEqual(_.fromArray([1, 2]), O.some([1, 2])) }) it('getSemigroup', () => { @@ -191,11 +191,11 @@ describe('NonEmptyArray', () => { const a2 = make(1) const a3 = make(2) const a4 = make(3) - assert.deepStrictEqual(_.insertAt(0, a4)([a1, a2, a3]), some([a4, a1, a2, a3])) - assert.deepStrictEqual(_.insertAt(-1, a4)([a1, a2, a3]), none) - assert.deepStrictEqual(_.insertAt(3, a4)([a1, a2, a3]), some([a1, a2, a3, a4])) - assert.deepStrictEqual(_.insertAt(1, a4)([a1, a2, a3]), some([a1, a4, a2, a3])) - assert.deepStrictEqual(_.insertAt(4, a4)([a1, a2, a3]), none) + assert.deepStrictEqual(_.insertAt(0, a4)([a1, a2, a3]), O.some([a4, a1, a2, a3])) + assert.deepStrictEqual(_.insertAt(-1, a4)([a1, a2, a3]), O.none) + assert.deepStrictEqual(_.insertAt(3, a4)([a1, a2, a3]), O.some([a1, a2, a3, a4])) + assert.deepStrictEqual(_.insertAt(1, a4)([a1, a2, a3]), O.some([a1, a4, a2, a3])) + assert.deepStrictEqual(_.insertAt(4, a4)([a1, a2, a3]), O.none) }) it('updateAt', () => { @@ -205,19 +205,19 @@ describe('NonEmptyArray', () => { const a3 = make2(2) const a4 = make2(3) const arr: _.NonEmptyArray<{ readonly x: number }> = [a1, a2, a3] - assert.deepStrictEqual(_.updateAt(0, a4)(arr), some([a4, a2, a3])) - assert.deepStrictEqual(_.updateAt(-1, a4)(arr), none) - assert.deepStrictEqual(_.updateAt(3, a4)(arr), none) - assert.deepStrictEqual(_.updateAt(1, a4)(arr), some([a1, a4, a3])) + assert.deepStrictEqual(_.updateAt(0, a4)(arr), O.some([a4, a2, a3])) + assert.deepStrictEqual(_.updateAt(-1, a4)(arr), O.none) + assert.deepStrictEqual(_.updateAt(3, a4)(arr), O.none) + assert.deepStrictEqual(_.updateAt(1, a4)(arr), O.some([a1, a4, a3])) // should return the same reference if nothing changed const r1 = _.updateAt(0, a1)(arr) - if (isSome(r1)) { + if (O.isSome(r1)) { assert.deepStrictEqual(r1.value, arr) } else { assert.fail('is not a Some') } const r2 = _.updateAt(2, a3)(arr) - if (isSome(r2)) { + if (O.isSome(r2)) { assert.deepStrictEqual(r2.value, arr) } else { assert.fail('is not a Some') @@ -226,8 +226,8 @@ describe('NonEmptyArray', () => { it('modifyAt', () => { const double = (n: number): number => n * 2 - assert.deepStrictEqual(_.modifyAt(1, double)(_.cons(1, [])), none) - assert.deepStrictEqual(_.modifyAt(1, double)(_.cons(1, [2])), some(_.cons(1, [4]))) + assert.deepStrictEqual(_.modifyAt(1, double)(_.cons(1, [])), O.none) + assert.deepStrictEqual(_.modifyAt(1, double)(_.cons(1, [2])), O.some(_.cons(1, [4]))) }) it('copy', () => { @@ -242,26 +242,26 @@ describe('NonEmptyArray', () => { const a1 = make(1) const a2 = make(1) const a3 = make(2) - assert.deepStrictEqual(_.filter(({ x }) => x !== 1)([a1, a2, a3]), some([a3])) - assert.deepStrictEqual(_.filter(({ x }) => x !== 2)([a1, a2, a3]), some([a1, a2])) + assert.deepStrictEqual(_.filter(({ x }) => x !== 1)([a1, a2, a3]), O.some([a3])) + assert.deepStrictEqual(_.filter(({ x }) => x !== 2)([a1, a2, a3]), O.some([a1, a2])) assert.deepStrictEqual( _.filter(({ x }) => { return !(x === 1 || x === 2) })([a1, a2, a3]), - none + O.none ) - assert.deepStrictEqual(_.filter(({ x }) => x !== 10)([a1, a2, a3]), some([a1, a2, a3])) + assert.deepStrictEqual(_.filter(({ x }) => x !== 10)([a1, a2, a3]), O.some([a1, a2, a3])) // refinements - const actual1 = _.filter(isSome)([some(3), some(2), some(1)]) - assert.deepStrictEqual(actual1, some([some(3), some(2), some(1)])) - const actual2 = _.filter(isSome)([some(3), none, some(1)]) - assert.deepStrictEqual(actual2, some([some(3), some(1)])) + const actual1 = _.filter(O.isSome)([O.some(3), O.some(2), O.some(1)]) + assert.deepStrictEqual(actual1, O.some([O.some(3), O.some(2), O.some(1)])) + const actual2 = _.filter(O.isSome)([O.some(3), O.none, O.some(1)]) + assert.deepStrictEqual(actual2, O.some([O.some(3), O.some(1)])) }) it('filterWithIndex', () => { - assert.deepStrictEqual(_.filterWithIndex((i) => i % 2 === 0)([1, 2, 3]), some([1, 3])) - assert.deepStrictEqual(_.filterWithIndex((i, a: number) => i % 2 === 1 && a > 2)([1, 2, 3]), none) + assert.deepStrictEqual(_.filterWithIndex((i) => i % 2 === 0)([1, 2, 3]), O.some([1, 3])) + assert.deepStrictEqual(_.filterWithIndex((i, a: number) => i % 2 === 1 && a > 2)([1, 2, 3]), O.none) }) it('reduceWithIndex', () => { diff --git a/test/Option.ts b/test/Option.ts index 91c6ab916..cba583d6d 100644 --- a/test/Option.ts +++ b/test/Option.ts @@ -215,7 +215,7 @@ describe('Option', () => { }) it('zero', () => { - assert.deepStrictEqual(_.option.zero(), _.none) + assert.deepStrictEqual(_.zero(), _.none) }) it('fold', () => { @@ -446,6 +446,6 @@ describe('Option', () => { }) it('throwError', () => { - assert.deepStrictEqual(_.option.throwError(undefined), _.none) + assert.deepStrictEqual(_.throwError(undefined), _.none) }) }) diff --git a/test/ReadonlyArray.ts b/test/ReadonlyArray.ts index fd75e52e2..f459da80f 100644 --- a/test/ReadonlyArray.ts +++ b/test/ReadonlyArray.ts @@ -22,7 +22,7 @@ describe('ReadonlyArray', () => { }) it('sequence', () => { - const sequence = _.sequence(O.option) + const sequence = _.sequence(O.applicativeOption) assert.deepStrictEqual(sequence([O.some(1), O.some(3)]), O.some([1, 3])) assert.deepStrictEqual(sequence([O.some(1), O.none]), O.none) }) @@ -31,14 +31,14 @@ describe('ReadonlyArray', () => { assert.deepStrictEqual( pipe( ['a', 'bb'], - _.traverseWithIndex(O.option)((i, s) => (s.length >= 1 ? O.some(s + i) : O.none)) + _.traverseWithIndex(O.applicativeOption)((i, s) => (s.length >= 1 ? O.some(s + i) : O.none)) ), O.some(['a0', 'bb1']) ) assert.deepStrictEqual( pipe( ['a', 'bb'], - _.traverseWithIndex(O.option)((i, s) => (s.length > 1 ? O.some(s + i) : O.none)) + _.traverseWithIndex(O.applicativeOption)((i, s) => (s.length > 1 ? O.some(s + i) : O.none)) ), O.none ) diff --git a/test/ReadonlyMap.ts b/test/ReadonlyMap.ts index 0a00c2dd7..652c741da 100644 --- a/test/ReadonlyMap.ts +++ b/test/ReadonlyMap.ts @@ -5,7 +5,7 @@ import { Eq, eqNumber, fromEquals } from '../src/Eq' import { identity, pipe, Refinement } from '../src/function' import * as IO from '../src/IO' import { monoidString } from '../src/Monoid' -import { none, option, Option, some } from '../src/Option' +import * as O from '../src/Option' import { fromCompare, ord, ordNumber, ordString } from '../src/Ord' import * as _ from '../src/ReadonlyMap' import { getFirstSemigroup, getLastSemigroup, getStructSemigroup, semigroupSum } from '../src/Semigroup' @@ -92,7 +92,7 @@ describe('ReadonlyMap', () => { it('filterMap', () => { const empty = new Map() - const f = (n: number) => (p(n) ? some(n + 1) : none) + const f = (n: number) => (p(n) ? O.some(n + 1) : O.none) assert.deepStrictEqual(pipe(empty, _.filterMap(f)), empty) assert.deepStrictEqual( pipe( @@ -542,13 +542,13 @@ describe('ReadonlyMap', () => { ]) const b2 = new Map([[{ id: 'b' }, 2]]) const popS = _.pop(eqUser) - assert.deepStrictEqual(popS({ id: 'a' })(a1b2), some([1, b2])) - assert.deepStrictEqual(popS({ id: 'c' })(a1b2), none) + assert.deepStrictEqual(popS({ id: 'a' })(a1b2), O.some([1, b2])) + assert.deepStrictEqual(popS({ id: 'c' })(a1b2), O.none) const pop = _.pop(eqKey) - assert.deepStrictEqual(pop({ id: 1 })(repo), some([{ value: 1 }, new Map([[{ id: 2 }, { value: 2 }]])])) - assert.deepStrictEqual(pop({ id: 4 })(repo), some([{ value: 1 }, new Map([[{ id: 2 }, { value: 2 }]])])) - assert.deepStrictEqual(pop({ id: 3 })(repo), none) + assert.deepStrictEqual(pop({ id: 1 })(repo), O.some([{ value: 1 }, new Map([[{ id: 2 }, { value: 2 }]])])) + assert.deepStrictEqual(pop({ id: 4 })(repo), O.some([{ value: 1 }, new Map([[{ id: 2 }, { value: 2 }]])])) + assert.deepStrictEqual(pop({ id: 3 })(repo), O.none) // should not modify the source assert.deepStrictEqual( repo, @@ -562,35 +562,35 @@ describe('ReadonlyMap', () => { it('lookupWithKey', () => { const x = new Map([[{ id: 'a' }, 1]]) const lookupWithKeyS = _.lookupWithKey(eqUser) - assert.deepStrictEqual(lookupWithKeyS({ id: 'a' }, x), some([{ id: 'a' }, 1])) - assert.deepStrictEqual(lookupWithKeyS({ id: 'b' }, x), none) - assert.deepStrictEqual(lookupWithKeyS({ id: 'a' })(x), some([{ id: 'a' }, 1])) - assert.deepStrictEqual(lookupWithKeyS({ id: 'b' })(x), none) + assert.deepStrictEqual(lookupWithKeyS({ id: 'a' }, x), O.some([{ id: 'a' }, 1])) + assert.deepStrictEqual(lookupWithKeyS({ id: 'b' }, x), O.none) + assert.deepStrictEqual(lookupWithKeyS({ id: 'a' })(x), O.some([{ id: 'a' }, 1])) + assert.deepStrictEqual(lookupWithKeyS({ id: 'b' })(x), O.none) const lookupWithKey = _.lookupWithKey(eqKey) - assert.deepStrictEqual(lookupWithKey({ id: 1 }, repo), some([{ id: 1 }, { value: 1 }])) - assert.deepStrictEqual(lookupWithKey({ id: 4 }, repo), some([{ id: 1 }, { value: 1 }])) - assert.deepStrictEqual(lookupWithKey({ id: 3 }, repo), none) - assert.deepStrictEqual(lookupWithKey({ id: 1 })(repo), some([{ id: 1 }, { value: 1 }])) - assert.deepStrictEqual(lookupWithKey({ id: 4 })(repo), some([{ id: 1 }, { value: 1 }])) - assert.deepStrictEqual(lookupWithKey({ id: 3 })(repo), none) + assert.deepStrictEqual(lookupWithKey({ id: 1 }, repo), O.some([{ id: 1 }, { value: 1 }])) + assert.deepStrictEqual(lookupWithKey({ id: 4 }, repo), O.some([{ id: 1 }, { value: 1 }])) + assert.deepStrictEqual(lookupWithKey({ id: 3 }, repo), O.none) + assert.deepStrictEqual(lookupWithKey({ id: 1 })(repo), O.some([{ id: 1 }, { value: 1 }])) + assert.deepStrictEqual(lookupWithKey({ id: 4 })(repo), O.some([{ id: 1 }, { value: 1 }])) + assert.deepStrictEqual(lookupWithKey({ id: 3 })(repo), O.none) }) it('lookup', () => { const x = new Map([[{ id: 'a' }, 1]]) const lookupS = _.lookup(eqUser) - assert.deepStrictEqual(lookupS({ id: 'a' }, x), some(1)) - assert.deepStrictEqual(lookupS({ id: 'b' }, x), none) - assert.deepStrictEqual(lookupS({ id: 'a' })(x), some(1)) - assert.deepStrictEqual(lookupS({ id: 'b' })(x), none) + assert.deepStrictEqual(lookupS({ id: 'a' }, x), O.some(1)) + assert.deepStrictEqual(lookupS({ id: 'b' }, x), O.none) + assert.deepStrictEqual(lookupS({ id: 'a' })(x), O.some(1)) + assert.deepStrictEqual(lookupS({ id: 'b' })(x), O.none) const lookup = _.lookup(eqKey) - assert.deepStrictEqual(lookup({ id: 1 }, repo), some({ value: 1 })) - assert.deepStrictEqual(lookup({ id: 4 }, repo), some({ value: 1 })) - assert.deepStrictEqual(lookup({ id: 3 }, repo), none) - assert.deepStrictEqual(lookup({ id: 1 })(repo), some({ value: 1 })) - assert.deepStrictEqual(lookup({ id: 4 })(repo), some({ value: 1 })) - assert.deepStrictEqual(lookup({ id: 3 })(repo), none) + assert.deepStrictEqual(lookup({ id: 1 }, repo), O.some({ value: 1 })) + assert.deepStrictEqual(lookup({ id: 4 }, repo), O.some({ value: 1 })) + assert.deepStrictEqual(lookup({ id: 3 }, repo), O.none) + assert.deepStrictEqual(lookup({ id: 1 })(repo), O.some({ value: 1 })) + assert.deepStrictEqual(lookup({ id: 4 })(repo), O.some({ value: 1 })) + assert.deepStrictEqual(lookup({ id: 3 })(repo), O.none) }) it('isSubmap', () => { @@ -744,9 +744,9 @@ describe('ReadonlyMap', () => { describe('readonlyMap', () => { describe('compactable', () => { it('compact', () => { - const fooBar = new Map>([ - ['foo', none], - ['bar', some(123)] + const fooBar = new Map>([ + ['foo', O.none], + ['bar', O.some(123)] ]) const bar = new Map([['bar', 123]]) assert.deepStrictEqual(_.compact(fooBar), bar) @@ -883,31 +883,31 @@ describe('ReadonlyMap', () => { }) it('traverse', () => { - const traverse = W.traverse(option) + const traverse = W.traverse(O.applicativeOption) const x = new Map([ [{ id: 'k1' }, 1], [{ id: 'k2' }, 2] ]) assert.deepStrictEqual( - traverse(x, (n) => (n <= 2 ? some(n) : none)), - some(x) + traverse(x, (n) => (n <= 2 ? O.some(n) : O.none)), + O.some(x) ) assert.deepStrictEqual( - traverse(x, (n) => (n >= 2 ? some(n) : none)), - none + traverse(x, (n) => (n >= 2 ? O.some(n) : O.none)), + O.none ) }) it('sequence', () => { - const sequence = W.sequence(option) + const sequence = W.sequence(O.applicativeOption) assert.deepStrictEqual( sequence( new Map([ - [{ id: 'k1' }, some(1)], - [{ id: 'k2' }, some(2)] + [{ id: 'k1' }, O.some(1)], + [{ id: 'k2' }, O.some(2)] ]) ), - some( + O.some( new Map([ [{ id: 'k1' }, 1], [{ id: 'k2' }, 2] @@ -917,25 +917,25 @@ describe('ReadonlyMap', () => { assert.deepStrictEqual( sequence( new Map([ - [{ id: 'k1' }, none], - [{ id: 'k2' }, some(2)] + [{ id: 'k1' }, O.none], + [{ id: 'k2' }, O.some(2)] ]) ), - none + O.none ) }) it('traverseWithIndex', () => { - const traverseWithIndex = W.traverseWithIndex(option) + const traverseWithIndex = W.traverseWithIndex(O.applicativeOption) assert.deepStrictEqual( traverseWithIndex( new Map([ [{ id: 'k1' }, 1], [{ id: 'k2' }, 2] ]), - (k, n): Option => (!ordUser.equals(k, { id: 'k1' }) ? some(n) : none) + (k, n): O.Option => (!ordUser.equals(k, { id: 'k1' }) ? O.some(n) : O.none) ), - none + O.none ) assert.deepStrictEqual( traverseWithIndex( @@ -943,9 +943,9 @@ describe('ReadonlyMap', () => { [{ id: 'k1' }, 2], [{ id: 'k2' }, 3] ]), - (k, n): Option => (!ordUser.equals(k, { id: 'k3' }) ? some(n) : none) + (k, n): O.Option => (!ordUser.equals(k, { id: 'k3' }) ? O.some(n) : O.none) ), - some( + O.some( new Map([ [{ id: 'k1' }, 2], [{ id: 'k2' }, 3] @@ -956,7 +956,7 @@ describe('ReadonlyMap', () => { it('wither', async () => { const wither = W.wither(T.task) - const f = (n: number) => T.of(p(n) ? some(n + 1) : none) + const f = (n: number) => T.of(p(n) ? O.some(n + 1) : O.none) assert.deepStrictEqual(await wither(_.empty, f)(), _.empty) assert.deepStrictEqual( await wither( @@ -1030,7 +1030,7 @@ describe('ReadonlyMap', () => { ['b', 3] ]) const b4 = new Map([['b', 4]]) - const f = (_: string, n: number) => (p(n) ? some(n + 1) : none) + const f = (_: string, n: number) => (p(n) ? O.some(n + 1) : O.none) assert.deepStrictEqual(filterMapWithIndex(emptyMap, f), emptyMap) assert.deepStrictEqual(filterMapWithIndex(a1b3, f), b4) }) @@ -1096,11 +1096,11 @@ describe('ReadonlyMap', () => { it('updateAt', () => { const m1 = new Map([]) - assert.deepStrictEqual(_.updateAt(eqUser)({ id: 'a' }, 'a')(m1), none) + assert.deepStrictEqual(_.updateAt(eqUser)({ id: 'a' }, 'a')(m1), O.none) const m2 = new Map([[{ id: 'a' }, 'b']]) assert.deepStrictEqual( _.updateAt(eqUser)({ id: 'a' }, 'a')(m2), - some( + O.some( new Map([[{ id: 'a' }, 'a']]) ) ) @@ -1108,11 +1108,11 @@ describe('ReadonlyMap', () => { it('modifyAt', () => { const m1 = new Map([]) - assert.deepStrictEqual(_.modifyAt(eqUser)({ id: 'a' }, (n: number) => n * 2)(m1), none) + assert.deepStrictEqual(_.modifyAt(eqUser)({ id: 'a' }, (n: number) => n * 2)(m1), O.none) const m2 = new Map([[{ id: 'a' }, 1]]) assert.deepStrictEqual( _.modifyAt(eqUser)({ id: 'a' }, (n: number) => n * 2)(m2), - some( + O.some( new Map([[{ id: 'a' }, 2]]) ) ) diff --git a/test/ReadonlyNonEmptyArray.ts b/test/ReadonlyNonEmptyArray.ts index 4e482cf54..79d0603e3 100644 --- a/test/ReadonlyNonEmptyArray.ts +++ b/test/ReadonlyNonEmptyArray.ts @@ -14,21 +14,21 @@ describe('ReadonlyNonEmptyArray', () => { assert.deepStrictEqual( pipe( [1, 2, 3], - _.traverse(O.option)((n) => (n >= 0 ? O.some(n) : O.none)) + _.traverse(O.applicativeOption)((n) => (n >= 0 ? O.some(n) : O.none)) ), O.some([1, 2, 3]) ) assert.deepStrictEqual( pipe( [1, 2, 3], - _.traverse(O.option)((n) => (n >= 2 ? O.some(n) : O.none)) + _.traverse(O.applicativeOption)((n) => (n >= 2 ? O.some(n) : O.none)) ), O.none ) }) it('sequence', () => { - const sequence = _.sequence(O.option) + const sequence = _.sequence(O.applicativeOption) assert.deepStrictEqual(sequence([O.some(1), O.some(2), O.some(3)]), O.some([1, 2, 3])) assert.deepStrictEqual(sequence([O.none, O.some(2), O.some(3)]), O.none) }) @@ -37,14 +37,14 @@ describe('ReadonlyNonEmptyArray', () => { assert.deepStrictEqual( pipe( ['a', 'bb'], - _.traverseWithIndex(O.option)((i, s) => (s.length >= 1 ? O.some(s + i) : O.none)) + _.traverseWithIndex(O.applicativeOption)((i, s) => (s.length >= 1 ? O.some(s + i) : O.none)) ), O.some(['a0', 'bb1']) ) assert.deepStrictEqual( pipe( ['a', 'bb'], - _.traverseWithIndex(O.option)((i, s) => (s.length > 1 ? O.some(s + i) : O.none)) + _.traverseWithIndex(O.applicativeOption)((i, s) => (s.length > 1 ? O.some(s + i) : O.none)) ), O.none ) diff --git a/test/ReadonlyRecord.ts b/test/ReadonlyRecord.ts index ae696c7ef..32b00a64a 100644 --- a/test/ReadonlyRecord.ts +++ b/test/ReadonlyRecord.ts @@ -4,7 +4,7 @@ import { eqNumber } from '../src/Eq' import { identity, pipe } from '../src/function' import * as IO from '../src/IO' import { monoidString } from '../src/Monoid' -import { isSome, none, option, Option, some } from '../src/Option' +import * as O from '../src/Option' import * as A from '../src/ReadonlyArray' import * as _ from '../src/ReadonlyRecord' import { getFirstSemigroup, getLastSemigroup, semigroupSum } from '../src/Semigroup' @@ -50,7 +50,7 @@ describe('ReadonlyRecord', () => { }) it('compact', () => { - assert.deepStrictEqual(_.compact({ foo: none, bar: some(123) }), { bar: 123 }) + assert.deepStrictEqual(_.compact({ foo: O.none, bar: O.some(123) }), { bar: 123 }) }) it('separate', () => { @@ -83,7 +83,7 @@ describe('ReadonlyRecord', () => { }) it('filterMap', () => { - const f = (n: number) => (p(n) ? some(n + 1) : none) + const f = (n: number) => (p(n) ? O.some(n + 1) : O.none) assert.deepStrictEqual(pipe({}, _.filterMap(f)), {}) assert.deepStrictEqual(pipe({ a: 1, b: 3 }, _.filterMap(f)), { b: 4 }) }) @@ -172,7 +172,7 @@ describe('ReadonlyRecord', () => { assert.deepStrictEqual( pipe( { a: 1, b: 2 }, - _.filterMapWithIndex((_, a: number) => (a > 1 ? some(a) : none)) + _.filterMapWithIndex((_, a: number) => (a > 1 ? O.some(a) : O.none)) ), { b: 2 } ) @@ -190,28 +190,31 @@ describe('ReadonlyRecord', () => { it('traverse', () => { assert.deepStrictEqual( - _.traverse(option)((n: number) => (n <= 2 ? some(n) : none))({ a: 1, b: 2 }), - some({ a: 1, b: 2 }) + _.traverse(O.applicativeOption)((n: number) => (n <= 2 ? O.some(n) : O.none))({ a: 1, b: 2 }), + O.some({ a: 1, b: 2 }) + ) + assert.deepStrictEqual( + _.traverse(O.applicativeOption)((n: number) => (n >= 2 ? O.some(n) : O.none))({ a: 1, b: 2 }), + O.none ) - assert.deepStrictEqual(_.traverse(option)((n: number) => (n >= 2 ? some(n) : none))({ a: 1, b: 2 }), none) }) it('sequence', () => { - const sequence = _.sequence(option) - assert.deepStrictEqual(sequence({ a: some(1), b: some(2) }), some({ a: 1, b: 2 })) - assert.deepStrictEqual(sequence({ a: none, b: some(2) }), none) + const sequence = _.sequence(O.applicativeOption) + assert.deepStrictEqual(sequence({ a: O.some(1), b: O.some(2) }), O.some({ a: 1, b: 2 })) + assert.deepStrictEqual(sequence({ a: O.none, b: O.some(2) }), O.none) }) it('traverseWithIndex', () => { - const traverseWithIndex = _.traverseWithIndex(option)( - (k, n: number): Option => (k !== 'a' ? some(n) : none) + const traverseWithIndex = _.traverseWithIndex(O.applicativeOption)( + (k, n: number): O.Option => (k !== 'a' ? O.some(n) : O.none) ) - assert.deepStrictEqual(pipe({ a: 1, b: 2 }, traverseWithIndex), none) - assert.deepStrictEqual(pipe({ b: 2 }, traverseWithIndex), some({ b: 2 })) + assert.deepStrictEqual(pipe({ a: 1, b: 2 }, traverseWithIndex), O.none) + assert.deepStrictEqual(pipe({ b: 2 }, traverseWithIndex), O.some({ b: 2 })) }) it('wither', async () => { - const wither = _.wither(T.task)((n: number) => T.of(p(n) ? some(n + 1) : none)) + const wither = _.wither(T.task)((n: number) => T.of(p(n) ? O.some(n + 1) : O.none)) assert.deepStrictEqual(await pipe({}, wither)(), {}) assert.deepStrictEqual(await pipe({ a: 1, b: 3 }, wither)(), { b: 4 }) }) @@ -241,13 +244,13 @@ describe('ReadonlyRecord', () => { }) it('lookup', () => { - assert.deepStrictEqual(_.lookup('a', { a: 1 }), some(1)) - assert.deepStrictEqual(_.lookup('b', { a: 1 }), none) - assert.deepStrictEqual(_.lookup('b', noPrototype), none) + assert.deepStrictEqual(_.lookup('a', { a: 1 }), O.some(1)) + assert.deepStrictEqual(_.lookup('b', { a: 1 }), O.none) + assert.deepStrictEqual(_.lookup('b', noPrototype), O.none) - assert.deepStrictEqual(_.lookup('a')({ a: 1 }), some(1)) - assert.deepStrictEqual(_.lookup('b')({ a: 1 }), none) - assert.deepStrictEqual(_.lookup('b')(noPrototype), none) + assert.deepStrictEqual(_.lookup('a')({ a: 1 }), O.some(1)) + assert.deepStrictEqual(_.lookup('b')({ a: 1 }), O.none) + assert.deepStrictEqual(_.lookup('b')(noPrototype), O.none) }) it('fromFoldable', () => { @@ -336,8 +339,8 @@ describe('ReadonlyRecord', () => { }) it('pop', () => { - assert.deepStrictEqual(_.pop('a')({ a: 1, b: 2 }), some([1, { b: 2 }])) - assert.deepStrictEqual(_.pop('c')({ a: 1, b: 2 }), none) + assert.deepStrictEqual(_.pop('a')({ a: 1, b: 2 }), O.some([1, { b: 2 }])) + assert.deepStrictEqual(_.pop('c')({ a: 1, b: 2 }), O.none) }) it('every', () => { @@ -407,10 +410,10 @@ describe('ReadonlyRecord', () => { it('updateAt', () => { const x: _.ReadonlyRecord = { a: 1 } - assert.deepStrictEqual(_.updateAt('b', 2)(x), none) - assert.deepStrictEqual(_.updateAt('a', 2)(x), some({ a: 2 })) + assert.deepStrictEqual(_.updateAt('b', 2)(x), O.none) + assert.deepStrictEqual(_.updateAt('a', 2)(x), O.some({ a: 2 })) const r = _.updateAt('a', 1)(x) - if (isSome(r)) { + if (O.isSome(r)) { assert.deepStrictEqual(r.value, x) } else { assert.fail() @@ -419,8 +422,8 @@ describe('ReadonlyRecord', () => { it('modifyAt', () => { const x: _.ReadonlyRecord = { a: 1 } - assert.deepStrictEqual(_.modifyAt('b', (n: number) => n * 2)(x), none) - assert.deepStrictEqual(_.modifyAt('a', (n: number) => n * 2)(x), some({ a: 2 })) + assert.deepStrictEqual(_.modifyAt('b', (n: number) => n * 2)(x), O.none) + assert.deepStrictEqual(_.modifyAt('a', (n: number) => n * 2)(x), O.some({ a: 2 })) }) it('fromRecord', () => { diff --git a/test/ReadonlyTuple.ts b/test/ReadonlyTuple.ts index d2282f3ba..3c43cba09 100644 --- a/test/ReadonlyTuple.ts +++ b/test/ReadonlyTuple.ts @@ -3,7 +3,7 @@ import { getMonoid } from '../src/Array' import { left, right } from '../src/Either' import { identity, pipe } from '../src/function' import { monoidString } from '../src/Monoid' -import { none, option, some } from '../src/Option' +import * as O from '../src/Option' import * as _ from '../src/ReadonlyTuple' describe('ReadonlyTuple', () => { @@ -66,15 +66,15 @@ describe('ReadonlyTuple', () => { }) it('traverse', () => { - const traverse = _.traverse(option)((n: number) => (n > 1 ? some(n) : none)) - assert.deepStrictEqual(traverse([2, 'a']), some([2, 'a'])) - assert.deepStrictEqual(traverse([1, 'a']), none) + const traverse = _.traverse(O.applicativeOption)((n: number) => (n > 1 ? O.some(n) : O.none)) + assert.deepStrictEqual(traverse([2, 'a']), O.some([2, 'a'])) + assert.deepStrictEqual(traverse([1, 'a']), O.none) }) it('sequence', () => { - const sequence = _.sequence(option) - assert.deepStrictEqual(sequence([some(1), 'a']), some([1, 'a'])) - assert.deepStrictEqual(sequence([none, 'a']), none) + const sequence = _.sequence(O.applicativeOption) + assert.deepStrictEqual(sequence([O.some(1), 'a']), O.some([1, 'a'])) + assert.deepStrictEqual(sequence([O.none, 'a']), O.none) }) }) diff --git a/test/Record.ts b/test/Record.ts index af1cd7123..98792e6b1 100644 --- a/test/Record.ts +++ b/test/Record.ts @@ -3,7 +3,7 @@ import { left, right } from '../src/Either' import { eqNumber } from '../src/Eq' import { identity, pipe } from '../src/function' import { monoidString } from '../src/Monoid' -import { isSome, none, option, Option, some } from '../src/Option' +import * as O from '../src/Option' import * as A from '../src/ReadonlyArray' import * as _ from '../src/Record' import { getFirstSemigroup, getLastSemigroup, semigroupSum } from '../src/Semigroup' @@ -18,28 +18,31 @@ describe('Record', () => { describe('pipeables', () => { it('traverse', () => { assert.deepStrictEqual( - _.traverse(option)((n: number) => (n <= 2 ? some(n) : none))({ a: 1, b: 2 }), - some({ a: 1, b: 2 }) + _.traverse(O.applicativeOption)((n: number) => (n <= 2 ? O.some(n) : O.none))({ a: 1, b: 2 }), + O.some({ a: 1, b: 2 }) + ) + assert.deepStrictEqual( + _.traverse(O.applicativeOption)((n: number) => (n >= 2 ? O.some(n) : O.none))({ a: 1, b: 2 }), + O.none ) - assert.deepStrictEqual(_.traverse(option)((n: number) => (n >= 2 ? some(n) : none))({ a: 1, b: 2 }), none) }) it('sequence', () => { - const sequence = _.sequence(option) - assert.deepStrictEqual(sequence({ a: some(1), b: some(2) }), some({ a: 1, b: 2 })) - assert.deepStrictEqual(sequence({ a: none, b: some(2) }), none) + const sequence = _.sequence(O.applicativeOption) + assert.deepStrictEqual(sequence({ a: O.some(1), b: O.some(2) }), O.some({ a: 1, b: 2 })) + assert.deepStrictEqual(sequence({ a: O.none, b: O.some(2) }), O.none) }) it('traverseWithIndex', () => { - const traverseWithIndex = _.traverseWithIndex(option)( - (k, n: number): Option => (k !== 'a' ? some(n) : none) + const traverseWithIndex = _.traverseWithIndex(O.applicativeOption)( + (k, n: number): O.Option => (k !== 'a' ? O.some(n) : O.none) ) - assert.deepStrictEqual(pipe({ a: 1, b: 2 }, traverseWithIndex), none) - assert.deepStrictEqual(pipe({ b: 2 }, traverseWithIndex), some({ b: 2 })) + assert.deepStrictEqual(pipe({ a: 1, b: 2 }, traverseWithIndex), O.none) + assert.deepStrictEqual(pipe({ b: 2 }, traverseWithIndex), O.some({ b: 2 })) }) it('wither', async () => { - const wither = _.wither(T.task)((n: number) => T.of(p(n) ? some(n + 1) : none)) + const wither = _.wither(T.task)((n: number) => T.of(p(n) ? O.some(n + 1) : O.none)) assert.deepStrictEqual(await pipe({}, wither)(), {}) assert.deepStrictEqual(await pipe({ a: 1, b: 3 }, wither)(), { b: 4 }) }) @@ -108,13 +111,13 @@ describe('Record', () => { }) it('lookup', () => { - assert.deepStrictEqual(_.lookup('a', { a: 1 }), some(1)) - assert.deepStrictEqual(_.lookup('b', { a: 1 }), none) - assert.deepStrictEqual(_.lookup('b', noPrototype), none) + assert.deepStrictEqual(_.lookup('a', { a: 1 }), O.some(1)) + assert.deepStrictEqual(_.lookup('b', { a: 1 }), O.none) + assert.deepStrictEqual(_.lookup('b', noPrototype), O.none) - assert.deepStrictEqual(_.lookup('a')({ a: 1 }), some(1)) - assert.deepStrictEqual(_.lookup('b')({ a: 1 }), none) - assert.deepStrictEqual(_.lookup('b')(noPrototype), none) + assert.deepStrictEqual(_.lookup('a')({ a: 1 }), O.some(1)) + assert.deepStrictEqual(_.lookup('b')({ a: 1 }), O.none) + assert.deepStrictEqual(_.lookup('b')(noPrototype), O.none) }) it('fromFoldable', () => { @@ -189,12 +192,12 @@ describe('Record', () => { }) it('pop', () => { - assert.deepStrictEqual(_.pop('a')({ a: 1, b: 2 }), some([1, { b: 2 }])) - assert.deepStrictEqual(_.pop('c')({ a: 1, b: 2 }), none) + assert.deepStrictEqual(_.pop('a')({ a: 1, b: 2 }), O.some([1, { b: 2 }])) + assert.deepStrictEqual(_.pop('c')({ a: 1, b: 2 }), O.none) }) it('compact', () => { - assert.deepStrictEqual(_.record.compact({ foo: none, bar: some(123) }), { bar: 123 }) + assert.deepStrictEqual(_.record.compact({ foo: O.none, bar: O.some(123) }), { bar: 123 }) }) it('separate', () => { @@ -226,7 +229,7 @@ describe('Record', () => { }) it('filterMap', () => { - const f = (n: number) => (p(n) ? some(n + 1) : none) + const f = (n: number) => (p(n) ? O.some(n + 1) : O.none) assert.deepStrictEqual(_.record.filterMap({}, f), {}) assert.deepStrictEqual(_.record.filterMap({ a: 1, b: 3 }, f), { b: 4 }) }) @@ -345,7 +348,9 @@ describe('Record', () => { }) it('filterMapWithIndex', () => { - assert.deepStrictEqual(_.filterMapWithIndex((_, a: number) => (a > 1 ? some(a) : none))({ a: 1, b: 2 }), { b: 2 }) + assert.deepStrictEqual(_.filterMapWithIndex((_, a: number) => (a > 1 ? O.some(a) : O.none))({ a: 1, b: 2 }), { + b: 2 + }) }) it('filterWithIndex', () => { @@ -358,10 +363,10 @@ describe('Record', () => { it('updateAt', () => { const x: Record = { a: 1 } - assert.deepStrictEqual(_.updateAt('b', 2)(x), none) - assert.deepStrictEqual(_.updateAt('a', 2)(x), some({ a: 2 })) + assert.deepStrictEqual(_.updateAt('b', 2)(x), O.none) + assert.deepStrictEqual(_.updateAt('a', 2)(x), O.some({ a: 2 })) const r = _.updateAt('a', 1)(x) - if (isSome(r)) { + if (O.isSome(r)) { assert.deepStrictEqual(r.value, x) } else { assert.fail() @@ -370,7 +375,7 @@ describe('Record', () => { it('modifyAt', () => { const x: Record = { a: 1 } - assert.deepStrictEqual(_.modifyAt('b', (n: number) => n * 2)(x), none) - assert.deepStrictEqual(_.modifyAt('a', (n: number) => n * 2)(x), some({ a: 2 })) + assert.deepStrictEqual(_.modifyAt('b', (n: number) => n * 2)(x), O.none) + assert.deepStrictEqual(_.modifyAt('a', (n: number) => n * 2)(x), O.some({ a: 2 })) }) }) diff --git a/test/These.ts b/test/These.ts index 534612d5b..412b08f38 100644 --- a/test/These.ts +++ b/test/These.ts @@ -2,7 +2,7 @@ import * as assert from 'assert' import { eqNumber } from '../src/Eq' import { identity, pipe } from '../src/function' import { monoidString, monoidSum } from '../src/Monoid' -import { none, option, some } from '../src/Option' +import * as O from '../src/Option' import { semigroupString } from '../src/Semigroup' import { showString } from '../src/Show' import * as _ from '../src/These' @@ -69,27 +69,27 @@ describe('These', () => { }) it('traverse', () => { - const traverse = _.traverse(option)((n: number) => (n > 1 ? some(n) : none)) - assert.deepStrictEqual(pipe(_.left('a'), traverse), some(_.left('a'))) - assert.deepStrictEqual(pipe(_.right(2), traverse), some(_.right(2))) - assert.deepStrictEqual(pipe(_.right(1), traverse), none) - assert.deepStrictEqual(pipe(_.both('a', 2), traverse), some(_.both('a', 2))) + const traverse = _.traverse(O.applicativeOption)((n: number) => (n > 1 ? O.some(n) : O.none)) + assert.deepStrictEqual(pipe(_.left('a'), traverse), O.some(_.left('a'))) + assert.deepStrictEqual(pipe(_.right(2), traverse), O.some(_.right(2))) + assert.deepStrictEqual(pipe(_.right(1), traverse), O.none) + assert.deepStrictEqual(pipe(_.both('a', 2), traverse), O.some(_.both('a', 2))) assert.deepStrictEqual( pipe( _.both('a', 1), - _.traverse(option)((n) => (n >= 2 ? some(n) : none)) + _.traverse(O.applicativeOption)((n) => (n >= 2 ? O.some(n) : O.none)) ), - none + O.none ) }) it('sequence', () => { - const sequence = _.sequence(option) - assert.deepStrictEqual(sequence(_.left('a')), some(_.left('a'))) - assert.deepStrictEqual(sequence(_.right(some(1))), some(_.right(1))) - assert.deepStrictEqual(sequence(_.right(none)), none) - assert.deepStrictEqual(sequence(_.both('a', some(1))), some(_.both('a', 1))) - assert.deepStrictEqual(sequence(_.both('a', none)), none) + const sequence = _.sequence(O.applicativeOption) + assert.deepStrictEqual(sequence(_.left('a')), O.some(_.left('a'))) + assert.deepStrictEqual(sequence(_.right(O.some(1))), O.some(_.right(1))) + assert.deepStrictEqual(sequence(_.right(O.none)), O.none) + assert.deepStrictEqual(sequence(_.both('a', O.some(1))), O.some(_.both('a', 1))) + assert.deepStrictEqual(sequence(_.both('a', O.none)), O.none) }) }) @@ -158,44 +158,44 @@ describe('These', () => { }) it('getLeft', () => { - assert.deepStrictEqual(_.getLeft(_.left('a')), some('a')) - assert.deepStrictEqual(_.getLeft(_.right(1)), none) - assert.deepStrictEqual(_.getLeft(_.both('a', 1)), some('a')) + assert.deepStrictEqual(_.getLeft(_.left('a')), O.some('a')) + assert.deepStrictEqual(_.getLeft(_.right(1)), O.none) + assert.deepStrictEqual(_.getLeft(_.both('a', 1)), O.some('a')) }) it('getRight', () => { - assert.deepStrictEqual(_.getRight(_.left('a')), none) - assert.deepStrictEqual(_.getRight(_.right(1)), some(1)) - assert.deepStrictEqual(_.getRight(_.both('a', 1)), some(1)) + assert.deepStrictEqual(_.getRight(_.left('a')), O.none) + assert.deepStrictEqual(_.getRight(_.right(1)), O.some(1)) + assert.deepStrictEqual(_.getRight(_.both('a', 1)), O.some(1)) }) it('leftOrBoth', () => { - assert.deepStrictEqual(_.leftOrBoth('a')(none), _.left('a')) - assert.deepStrictEqual(_.leftOrBoth('a')(some(1)), _.both('a', 1)) + assert.deepStrictEqual(_.leftOrBoth('a')(O.none), _.left('a')) + assert.deepStrictEqual(_.leftOrBoth('a')(O.some(1)), _.both('a', 1)) }) it('rightOrBoth', () => { - assert.deepStrictEqual(_.rightOrBoth(1)(none), _.right(1)) - assert.deepStrictEqual(_.rightOrBoth(1)(some('a')), _.both('a', 1)) + assert.deepStrictEqual(_.rightOrBoth(1)(O.none), _.right(1)) + assert.deepStrictEqual(_.rightOrBoth(1)(O.some('a')), _.both('a', 1)) }) it('getLeftOnly', () => { - assert.deepStrictEqual(_.getLeftOnly(_.left('a')), some('a')) - assert.deepStrictEqual(_.getLeftOnly(_.right(1)), none) - assert.deepStrictEqual(_.getLeftOnly(_.both('a', 1)), none) + assert.deepStrictEqual(_.getLeftOnly(_.left('a')), O.some('a')) + assert.deepStrictEqual(_.getLeftOnly(_.right(1)), O.none) + assert.deepStrictEqual(_.getLeftOnly(_.both('a', 1)), O.none) }) it('getRightOnly', () => { - assert.deepStrictEqual(_.getRightOnly(_.left('a')), none) - assert.deepStrictEqual(_.getRightOnly(_.right(1)), some(1)) - assert.deepStrictEqual(_.getRightOnly(_.both('a', 1)), none) + assert.deepStrictEqual(_.getRightOnly(_.left('a')), O.none) + assert.deepStrictEqual(_.getRightOnly(_.right(1)), O.some(1)) + assert.deepStrictEqual(_.getRightOnly(_.both('a', 1)), O.none) }) it('fromOptions', () => { - assert.deepStrictEqual(_.fromOptions(none, none), none) - assert.deepStrictEqual(_.fromOptions(some('a'), none), some(_.left('a'))) - assert.deepStrictEqual(_.fromOptions(none, some(1)), some(_.right(1))) - assert.deepStrictEqual(_.fromOptions(some('a'), some(1)), some(_.both('a', 1))) + assert.deepStrictEqual(_.fromOptions(O.none, O.none), O.none) + assert.deepStrictEqual(_.fromOptions(O.some('a'), O.none), O.some(_.left('a'))) + assert.deepStrictEqual(_.fromOptions(O.none, O.some(1)), O.some(_.right(1))) + assert.deepStrictEqual(_.fromOptions(O.some('a'), O.some(1)), O.some(_.both('a', 1))) }) it('isLeft', () => { diff --git a/test/Traversable.ts b/test/Traversable.ts index fc2e38718..071ea96e4 100644 --- a/test/Traversable.ts +++ b/test/Traversable.ts @@ -1,6 +1,6 @@ import * as assert from 'assert' import * as A from '../src/ReadonlyArray' -import { none, option, some } from '../src/Option' +import * as O from '../src/Option' import { getTraversableComposition } from '../src/Traversable' export const ArrayOptionURI = 'ArrayOption' @@ -9,17 +9,20 @@ export type ArrayOptionURI = typeof ArrayOptionURI describe('Traversable', () => { it('getTraversableComposition', () => { - const T = getTraversableComposition(A.traversableArray, option) + const T = getTraversableComposition(A.traversableArray, O.traversableOption) assert.deepStrictEqual( - T.traverse(option)([some(1), some(2)], (n: number) => (n <= 2 ? some(n * 2) : none)), - some([some(2), some(4)]) + T.traverse(O.applicativeOption)([O.some(1), O.some(2)], (n: number) => (n <= 2 ? O.some(n * 2) : O.none)), + O.some([O.some(2), O.some(4)]) ) assert.deepStrictEqual( - T.traverse(option)([some(1), some(3)], (n: number) => (n <= 2 ? some(n * 2) : none)), - none + T.traverse(O.applicativeOption)([O.some(1), O.some(3)], (n: number) => (n <= 2 ? O.some(n * 2) : O.none)), + O.none ) - assert.deepStrictEqual(T.sequence(option)([some(some(1)), some(some(2))]), some([some(1), some(2)])) - assert.deepStrictEqual(T.sequence(option)([some(some(1)), none]), some([some(1), none])) - assert.deepStrictEqual(T.sequence(option)([some(some(1)), some(none)]), none) + assert.deepStrictEqual( + T.sequence(O.applicativeOption)([O.some(O.some(1)), O.some(O.some(2))]), + O.some([O.some(1), O.some(2)]) + ) + assert.deepStrictEqual(T.sequence(O.applicativeOption)([O.some(O.some(1)), O.none]), O.some([O.some(1), O.none])) + assert.deepStrictEqual(T.sequence(O.applicativeOption)([O.some(O.some(1)), O.some(O.none)]), O.none) }) }) diff --git a/test/Tree.ts b/test/Tree.ts index 0641ef892..b6467c9d2 100644 --- a/test/Tree.ts +++ b/test/Tree.ts @@ -11,12 +11,12 @@ describe('Tree', () => { describe('pipeables', () => { it('traverse', () => { const fa = _.make('a', [_.make('b'), _.make('c')]) - assert.deepStrictEqual(pipe(fa, _.traverse(O.option)(O.some)), O.some(fa)) + assert.deepStrictEqual(pipe(fa, _.traverse(O.applicativeOption)(O.some)), O.some(fa)) }) it('sequence', () => { assert.deepStrictEqual( - _.sequence(O.option)(_.make(O.some('a'), [_.make(O.some('b')), _.make(O.some('c'))])), + _.sequence(O.applicativeOption)(_.make(O.some('a'), [_.make(O.some('b')), _.make(O.some('c'))])), O.some(_.make('a', [_.make('b'), _.make('c')])) ) }) diff --git a/test/pipeable.ts b/test/pipeable.ts index 5f61e673a..6d707fd73 100644 --- a/test/pipeable.ts +++ b/test/pipeable.ts @@ -3,8 +3,8 @@ import * as A from '../src/ReadonlyArray' import * as C from '../src/Const' import * as E from '../src/Either' import { fold, monoidSum } from '../src/Monoid' -import { isSome, none, Option, option, some } from '../src/Option' -import { pipeable } from '../src/pipeable' +import * as O from '../src/Option' +import { pipeable, pipe } from '../src/pipeable' import { reader } from '../src/Reader' describe('pipeable', () => { @@ -89,9 +89,12 @@ describe('pipeable', () => { it('Filterable', () => { const { filter, filterMap, partition, partitionMap } = pipeable(A.filterableArray) - assert.deepStrictEqual(filter(isSome)([some(1), none, some(2)]), [some(1), some(2)]) - assert.deepStrictEqual(filterMap((a: Option) => a)([some(1), none, some(2)]), [1, 2]) - assert.deepStrictEqual(partition(isSome)([some(1), none, some(2)]), { left: [none], right: [some(1), some(2)] }) + assert.deepStrictEqual(filter(O.isSome)([O.some(1), O.none, O.some(2)]), [O.some(1), O.some(2)]) + assert.deepStrictEqual(filterMap((a: O.Option) => a)([O.some(1), O.none, O.some(2)]), [1, 2]) + assert.deepStrictEqual(partition(O.isSome)([O.some(1), O.none, O.some(2)]), { + left: [O.none], + right: [O.some(1), O.some(2)] + }) assert.deepStrictEqual(partitionMap((n: number) => (n > 2 ? E.right(n) : E.left(String(n))))([1, 2, 3]), { left: ['1', '2'], right: [3] @@ -102,17 +105,26 @@ describe('pipeable', () => { const { filterWithIndex, filterMapWithIndex, partitionWithIndex, partitionMapWithIndex } = pipeable( A.filterableWithIndexArray ) - assert.deepStrictEqual(filterWithIndex((i, a: Option) => i > 1 && isSome(a))([some(1), none, some(2)]), [ - some(2) - ]) assert.deepStrictEqual( - filterMapWithIndex((i, a: Option) => option.map(a, (n) => n + i))([some(1), none, some(2)]), + filterWithIndex((i, a: O.Option) => i > 1 && O.isSome(a))([O.some(1), O.none, O.some(2)]), + [O.some(2)] + ) + assert.deepStrictEqual( + filterMapWithIndex((i, a: O.Option) => + pipe( + a, + O.map((n) => n + i) + ) + )([O.some(1), O.none, O.some(2)]), [1, 4] ) - assert.deepStrictEqual(partitionWithIndex((i, a: Option) => i > 1 && isSome(a))([some(1), none, some(2)]), { - left: [some(1), none], - right: [some(2)] - }) + assert.deepStrictEqual( + partitionWithIndex((i, a: O.Option) => i > 1 && O.isSome(a))([O.some(1), O.none, O.some(2)]), + { + left: [O.some(1), O.none], + right: [O.some(2)] + } + ) assert.deepStrictEqual( partitionMapWithIndex((i, n: number) => (i < 2 && n > 1 ? E.right(n) : E.left(String(n))))([1, 2, 3]), { From 309a723e89f4b6709f6eb493d82adc653554b1ed Mon Sep 17 00:00:00 2001 From: gcanti Date: Wed, 17 Jun 2020 17:08:11 +0200 Subject: [PATCH 055/106] rename `ord` to `contravariantOrd` for consistency --- CHANGELOG.md | 2 ++ docs/modules/Ord.ts.md | 33 ++++++++++++++++++++++----------- src/Ord.ts | 11 +++++++++-- test/Array.ts | 10 ++++++++-- test/Map.ts | 13 ++++++++----- test/ReadonlyArray.ts | 10 ++++++++-- test/ReadonlyMap.ts | 15 +++++++++------ 7 files changed, 66 insertions(+), 28 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a0eb89c06..722f180ff 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -111,6 +111,8 @@ high state of flux, you're at risk of it changing without notice. - add `traversableOption` instance (@gcanti) - add `witherableOption` instance (@gcanti) - add `monadThrowOption` instance (@gcanti) + - `Ord` + - add `contravariantOrd` instance (@gcanti) - `ReadonlyArray` - add `functorArray` instance (@gcanti) - add `functorWithIndexArray` instance (@gcanti) diff --git a/docs/modules/Ord.ts.md b/docs/modules/Ord.ts.md index a80a58f79..80f6b13f0 100644 --- a/docs/modules/Ord.ts.md +++ b/docs/modules/Ord.ts.md @@ -29,14 +29,15 @@ Added in v2.0.0 - [instances](#instances) - [URI](#uri) - [URI (type alias)](#uri-type-alias) + - [contravariantOrd](#contravariantord) - [getMonoid](#getmonoid) - [getTupleOrd](#gettupleord) - - [ord](#ord) - [ordBoolean](#ordboolean) - [ordDate](#orddate) - [ordNumber](#ordnumber) - [ordString](#ordstring) - [~~getSemigroup~~](#getsemigroup) + - [~~ord~~](#ord) - [type classes](#type-classes) - [Ord (interface)](#ord-interface) - [utils](#utils) @@ -109,6 +110,16 @@ export type URI = typeof URI Added in v2.0.0 +## contravariantOrd + +**Signature** + +```ts +export declare const contravariantOrd: Contravariant1<'Ord'> +``` + +Added in v2.7.0 + ## getMonoid Returns a `Monoid` such that: @@ -207,16 +218,6 @@ assert.strictEqual(O.compare(['a', 1, true], ['a', 1, false]), 1) Added in v2.0.0 -## ord - -**Signature** - -```ts -export declare const ord: Contravariant1<'Ord'> -``` - -Added in v2.0.0 - ## ordBoolean **Signature** @@ -269,6 +270,16 @@ export declare function getSemigroup(): Semigroup> Added in v2.0.0 +## ~~ord~~ + +**Signature** + +```ts +export declare const ord: Contravariant1<'Ord'> +``` + +Added in v2.0.0 + # type classes ## Ord (interface) diff --git a/src/Ord.ts b/src/Ord.ts index 2f039ae6d..d6786af39 100644 --- a/src/Ord.ts +++ b/src/Ord.ts @@ -326,9 +326,16 @@ declare module './HKT' { /** * @category instances - * @since 2.0.0 + * @since 2.7.0 */ -export const ord: Contravariant1 = { +export const contravariantOrd: Contravariant1 = { URI, contramap: contramap_ } + +/** + * @category instances + * @since 2.0.0 + * @deprecated + */ +export const ord: Contravariant1 = contravariantOrd diff --git a/test/Array.ts b/test/Array.ts index f24214559..dbfe10d5f 100644 --- a/test/Array.ts +++ b/test/Array.ts @@ -728,8 +728,14 @@ describe('Array', () => { readonly name: string readonly age: number } - const byName = Ord.ord.contramap(Ord.ordString, (p: Person) => p.name) - const byAge = Ord.ord.contramap(Ord.ordNumber, (p: Person) => p.age) + const byName = pipe( + Ord.ordString, + Ord.contramap((p: Person) => p.name) + ) + const byAge = pipe( + Ord.ordNumber, + Ord.contramap((p: Person) => p.age) + ) const sortByNameByAge = _.sortBy([byName, byAge]) const persons: Array = [ { name: 'a', age: 1 }, diff --git a/test/Map.ts b/test/Map.ts index bece10a84..7b8ba5cba 100644 --- a/test/Map.ts +++ b/test/Map.ts @@ -6,7 +6,7 @@ import { identity, Refinement, pipe } from '../src/function' import * as _ from '../src/Map' import { monoidString } from '../src/Monoid' import * as O from '../src/Option' -import { fromCompare, ord, ordNumber, ordString } from '../src/Ord' +import * as Ord from '../src/Ord' import { getFirstSemigroup, getLastSemigroup, getStructSemigroup, semigroupSum } from '../src/Semigroup' import { getStructShow, Show, showString } from '../src/Show' import * as T from '../src/Task' @@ -15,7 +15,10 @@ interface User { readonly id: string } -const ordUser = ord.contramap(ordString, (u: User) => u.id) +const ordUser = pipe( + Ord.ordString, + Ord.contramap((u: User) => u.id) +) const eqUser: Eq = { equals: ordUser.equals } @@ -31,7 +34,7 @@ interface Value { const eqKey: Eq = fromEquals((x, y) => x.id % 3 === y.id % 3) -const ordKey = fromCompare((x, y) => ordNumber.compare(x.id % 3, y.id % 3)) +const ordKey = Ord.fromCompare((x, y) => Ord.ordNumber.compare(x.id % 3, y.id % 3)) const eqValue: Eq = fromEquals((x, y) => x.value % 3 === y.value % 3) @@ -125,7 +128,7 @@ describe('Map', () => { assert.deepStrictEqual(ks, [{ id: 'a' }, { id: 'b' }]) assert.deepStrictEqual( - _.keys(ordString)( + _.keys(Ord.ordString)( new Map([ ['a', 1], ['b', 2] @@ -134,7 +137,7 @@ describe('Map', () => { ['a', 'b'] ) assert.deepStrictEqual( - _.keys(ordString)( + _.keys(Ord.ordString)( new Map([ ['b', 2], ['a', 1] diff --git a/test/ReadonlyArray.ts b/test/ReadonlyArray.ts index f459da80f..e0673168c 100644 --- a/test/ReadonlyArray.ts +++ b/test/ReadonlyArray.ts @@ -726,8 +726,14 @@ describe('ReadonlyArray', () => { readonly name: string readonly age: number } - const byName = Ord.ord.contramap(Ord.ordString, (p: Person) => p.name) - const byAge = Ord.ord.contramap(Ord.ordNumber, (p: Person) => p.age) + const byName = pipe( + Ord.ordString, + Ord.contramap((p: Person) => p.name) + ) + const byAge = pipe( + Ord.ordNumber, + Ord.contramap((p: Person) => p.age) + ) const sortByNameByAge = _.sortBy([byName, byAge]) const persons: ReadonlyArray = [ { name: 'a', age: 1 }, diff --git a/test/ReadonlyMap.ts b/test/ReadonlyMap.ts index 652c741da..3587dee04 100644 --- a/test/ReadonlyMap.ts +++ b/test/ReadonlyMap.ts @@ -6,7 +6,7 @@ import { identity, pipe, Refinement } from '../src/function' import * as IO from '../src/IO' import { monoidString } from '../src/Monoid' import * as O from '../src/Option' -import { fromCompare, ord, ordNumber, ordString } from '../src/Ord' +import * as Ord from '../src/Ord' import * as _ from '../src/ReadonlyMap' import { getFirstSemigroup, getLastSemigroup, getStructSemigroup, semigroupSum } from '../src/Semigroup' import { getStructShow, Show, showString } from '../src/Show' @@ -16,7 +16,10 @@ interface User { readonly id: string } -const ordUser = ord.contramap(ordString, (u: User) => u.id) +const ordUser = pipe( + Ord.ordString, + Ord.contramap((u: User) => u.id) +) const eqUser: Eq = { equals: ordUser.equals } @@ -32,7 +35,7 @@ interface Value { const eqKey: Eq = fromEquals((x, y) => x.id % 3 === y.id % 3) -const ordKey = fromCompare((x, y) => ordNumber.compare(x.id % 3, y.id % 3)) +const ordKey = Ord.fromCompare((x, y) => Ord.ordNumber.compare(x.id % 3, y.id % 3)) const eqValue: Eq = fromEquals((x, y) => x.value % 3 === y.value % 3) @@ -220,7 +223,7 @@ describe('ReadonlyMap', () => { assert.deepStrictEqual(ks, [{ id: 'a' }, { id: 'b' }]) assert.deepStrictEqual( - _.keys(ordString)( + _.keys(Ord.ordString)( new Map([ ['a', 1], ['b', 2] @@ -229,7 +232,7 @@ describe('ReadonlyMap', () => { ['a', 'b'] ) assert.deepStrictEqual( - _.keys(ordString)( + _.keys(Ord.ordString)( new Map([ ['b', 2], ['a', 1] @@ -771,7 +774,7 @@ describe('ReadonlyMap', () => { const W = _.getWitherable(ordUser) it('traverseWithIndex should sort the keys', () => { - const W = _.getWitherable(ordString) + const W = _.getWitherable(Ord.ordString) // tslint:disable-next-line: readonly-array const log: Array = [] const append = (message: string): IO.IO => () => { From 962325a9d57c7da47c4dfef47c0498b8d1830520 Mon Sep 17 00:00:00 2001 From: gcanti Date: Wed, 17 Jun 2020 17:29:41 +0200 Subject: [PATCH 056/106] split `reader` mega instance --- CHANGELOG.md | 7 ++ docs/modules/Reader.ts.md | 84 +++++++++++++++++++++++- src/Reader.ts | 118 ++++++++++++++++++++++++++++------ test/Choice.ts | 16 ++--- test/Reader.ts | 4 +- test/ReaderEither.ts | 8 +-- test/ReaderTask.ts | 6 +- test/ReaderTaskEither.ts | 14 ++-- test/StateReaderTaskEither.ts | 6 +- test/Strong.ts | 10 +-- test/pipeable.ts | 6 +- 11 files changed, 222 insertions(+), 57 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 722f180ff..9ca637451 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -113,6 +113,13 @@ high state of flux, you're at risk of it changing without notice. - add `monadThrowOption` instance (@gcanti) - `Ord` - add `contravariantOrd` instance (@gcanti) + - `Reader` + - add `functorReader` instance (@gcanti) + - add `applyReader` instance (@gcanti) + - add `applicativeReader` instance (@gcanti) + - add `monadReader` instance (@gcanti) + - add `profunctorReader` instance (@gcanti) + - add `categoryReader` instance (@gcanti) - `ReadonlyArray` - add `functorArray` instance (@gcanti) - add `functorWithIndexArray` instance (@gcanti) diff --git a/docs/modules/Reader.ts.md b/docs/modules/Reader.ts.md index 58fec4b1b..897e5299c 100644 --- a/docs/modules/Reader.ts.md +++ b/docs/modules/Reader.ts.md @@ -18,6 +18,8 @@ Added in v2.0.0 - [ap](#ap) - [apFirst](#apfirst) - [apSecond](#apsecond) +- [Category](#category) + - [id](#id) - [Functor](#functor) - [map](#map) - [Monad](#monad) @@ -37,9 +39,15 @@ Added in v2.0.0 - [instances](#instances) - [URI](#uri) - [URI (type alias)](#uri-type-alias) + - [applicativeReader](#applicativereader) + - [applyReader](#applyreader) + - [categoryReader](#categoryreader) + - [functorReader](#functorreader) - [getMonoid](#getmonoid) - [getSemigroup](#getsemigroup) - - [reader](#reader) + - [monadReader](#monadreader) + - [profunctorReader](#profunctorreader) + - [~~reader~~](#reader) - [model](#model) - [Reader (interface)](#reader-interface) @@ -95,6 +103,18 @@ export declare const apSecond: (fb: Reader) => (fa: Reader) Added in v2.0.0 +# Category + +## id + +**Signature** + +```ts +export declare const id: () => Reader +``` + +Added in v2.0.0 + # Functor ## map @@ -246,6 +266,46 @@ export type URI = typeof URI Added in v2.0.0 +## applicativeReader + +**Signature** + +```ts +export declare const applicativeReader: Applicative2<'Reader'> +``` + +Added in v2.7.0 + +## applyReader + +**Signature** + +```ts +export declare const applyReader: Apply2<'Reader'> +``` + +Added in v2.7.0 + +## categoryReader + +**Signature** + +```ts +export declare const categoryReader: Category2<'Reader'> +``` + +Added in v2.7.0 + +## functorReader + +**Signature** + +```ts +export declare const functorReader: Functor2<'Reader'> +``` + +Added in v2.7.0 + ## getMonoid **Signature** @@ -266,7 +326,27 @@ export declare function getSemigroup(S: Semigroup): Semigroup +``` + +Added in v2.7.0 + +## profunctorReader + +**Signature** + +```ts +export declare const profunctorReader: Profunctor2<'Reader'> +``` + +Added in v2.7.0 + +## ~~reader~~ **Signature** diff --git a/src/Reader.ts b/src/Reader.ts index 295673fa4..ea3551165 100644 --- a/src/Reader.ts +++ b/src/Reader.ts @@ -11,6 +11,8 @@ import { Profunctor2 } from './Profunctor' import { Semigroup } from './Semigroup' import { Strong2 } from './Strong' import { Apply2 } from './Apply' +import { Functor2 } from './Functor' +import { Applicative2 } from './Applicative' // ------------------------------------------------------------------------------------- // model @@ -167,6 +169,12 @@ export const promap: (f: (d: D) => E, g: (a: A) => B) => (fbc: Reade fbc ) => promap_(fbc, f, g) +/** + * @category Category + * @since 2.0.0 + */ +export const id: Category2['id'] = () => F.identity + // ------------------------------------------------------------------------------------- // instances // ------------------------------------------------------------------------------------- @@ -195,9 +203,46 @@ const chain_: Monad2['chain'] = (ma, f) => F.pipe(ma, chain(f)) const compose_: (ab: Reader, la: Reader) => Reader = (ab, la) => (l) => ab(la(l)) const promap_: (fbc: Reader, f: (d: D) => E, g: (a: A) => B) => Reader = (mbc, f, g) => (a) => g(mbc(f(a))) +const first_: Strong2['first'] = (pab) => ([a, c]) => [pab(a), c] +const second_: Strong2['second'] = (pbc) => ([a, b]) => [a, pbc(b)] +const left_: Choice2['left'] = (pab: Reader): Reader, E.Either> => + E.fold>((a) => E.left(pab(a)), E.right) +const right_: Choice2['right'] = (pbc: Reader): Reader, E.Either> => + E.fold>(E.left, (b) => E.right(pbc(b))) + +/** + * @category instances + * @since 2.0.0 + */ +export function getSemigroup(S: Semigroup): Semigroup> { + return { + concat: (x, y) => (e) => S.concat(x(e), y(e)) + } +} /** - * @internal + * @category instances + * @since 2.0.0 + */ +export function getMonoid(M: Monoid): Monoid> { + return { + concat: getSemigroup(M).concat, + empty: () => M.empty + } +} + +/** + * @category instances + * @since 2.7.0 + */ +export const functorReader: Functor2 = { + URI, + map: map_ +} + +/** + * @category instances + * @since 2.7.0 */ export const applyReader: Apply2 = { URI, @@ -206,7 +251,19 @@ export const applyReader: Apply2 = { } /** - * @internal + * @category instances + * @since 2.7.0 + */ +export const applicativeReader: Applicative2 = { + URI, + map: map_, + ap: ap_, + of +} + +/** + * @category instances + * @since 2.7.0 */ export const monadReader: Monad2 = { URI, @@ -218,28 +275,51 @@ export const monadReader: Monad2 = { /** * @category instances - * @since 2.0.0 + * @since 2.7.0 */ -export function getSemigroup(S: Semigroup): Semigroup> { - return { - concat: (x, y) => (e) => S.concat(x(e), y(e)) - } +export const profunctorReader: Profunctor2 = { + URI, + map: map_, + promap: promap_ } /** * @category instances - * @since 2.0.0 + * @since 2.7.0 */ -export function getMonoid(M: Monoid): Monoid> { - return { - concat: getSemigroup(M).concat, - empty: () => M.empty - } +export const categoryReader: Category2 = { + URI, + compose: compose_, + id +} + +/** + * @internal instances + */ +export const strongReader: Strong2 = { + URI, + map: map_, + promap: promap_, + first: first_, + second: second_ +} + +/** + * @internal instances + */ +export const choiceReader: Choice2 = { + URI, + map: map_, + promap: promap_, + left: left_, + right: right_ } +// TODO: remove in v3 /** * @category instances * @since 2.0.0 + * @deprecated */ export const reader: Monad2 & Profunctor2 & Category2 & Strong2 & Choice2 = { URI, @@ -249,11 +329,9 @@ export const reader: Monad2 & Profunctor2 & Category2 & Strong2 F.identity, - first: (pab) => ([a, c]) => [pab(a), c], - second: (pbc) => ([a, b]) => [a, pbc(b)], - left: (pab: Reader): Reader, E.Either> => - E.fold>((a) => E.left(pab(a)), E.right), - right: (pbc: Reader): Reader, E.Either> => - E.fold>(E.left, (b) => E.right(pbc(b))) + id, + first: first_, + second: second_, + left: left_, + right: right_ } diff --git a/test/Choice.ts b/test/Choice.ts index d7b32521e..4a986554b 100644 --- a/test/Choice.ts +++ b/test/Choice.ts @@ -1,23 +1,23 @@ import * as assert from 'assert' import { fanin, splitChoice } from '../src/Choice' import { left, right } from '../src/Either' -import { reader } from '../src/Reader' +import * as R from '../src/Reader' describe('Choice', () => { it('splitChoice', () => { const ab = (s: string) => s.length const cd = (n: number) => n >= 2 - assert.deepStrictEqual(splitChoice(reader)(ab, cd)(right(3)), right(true)) - assert.deepStrictEqual(splitChoice(reader)(ab, cd)(right(1)), right(false)) - assert.deepStrictEqual(splitChoice(reader)(ab, cd)(left('foo')), left(3)) + assert.deepStrictEqual(splitChoice({ ...R.choiceReader, ...R.categoryReader })(ab, cd)(right(3)), right(true)) + assert.deepStrictEqual(splitChoice({ ...R.choiceReader, ...R.categoryReader })(ab, cd)(right(1)), right(false)) + assert.deepStrictEqual(splitChoice({ ...R.choiceReader, ...R.categoryReader })(ab, cd)(left('foo')), left(3)) }) it('fanin', () => { const ac = (s: string) => s === s.toLowerCase() const bc = (n: number) => n >= 2 - assert.deepStrictEqual(fanin(reader)(ac, bc)(right(3)), true) - assert.deepStrictEqual(fanin(reader)(ac, bc)(right(1)), false) - assert.deepStrictEqual(fanin(reader)(ac, bc)(left('foo')), true) - assert.deepStrictEqual(fanin(reader)(ac, bc)(left('A')), false) + assert.deepStrictEqual(fanin({ ...R.choiceReader, ...R.categoryReader })(ac, bc)(right(3)), true) + assert.deepStrictEqual(fanin({ ...R.choiceReader, ...R.categoryReader })(ac, bc)(right(1)), false) + assert.deepStrictEqual(fanin({ ...R.choiceReader, ...R.categoryReader })(ac, bc)(left('foo')), true) + assert.deepStrictEqual(fanin({ ...R.choiceReader, ...R.categoryReader })(ac, bc)(left('A')), false) }) }) diff --git a/test/Reader.ts b/test/Reader.ts index fa5c0d0fc..cdbe6974f 100644 --- a/test/Reader.ts +++ b/test/Reader.ts @@ -78,14 +78,14 @@ describe('Reader', () => { }) it('id', () => { - const x = _.reader.id() + const x = _.id() assert.deepStrictEqual(x(1), 1) }) it('compose', () => { const x = (s: string) => s.length const y = (n: number) => n >= 2 - const z = _.reader.compose(y, x) + const z = pipe(y, _.compose(x)) assert.deepStrictEqual(z('foo'), true) assert.deepStrictEqual(z('a'), false) }) diff --git a/test/ReaderEither.ts b/test/ReaderEither.ts index e4dba74c7..2ee3365fe 100644 --- a/test/ReaderEither.ts +++ b/test/ReaderEither.ts @@ -3,7 +3,7 @@ import * as E from '../src/Either' import { monoidString } from '../src/Monoid' import { none, some } from '../src/Option' import { pipe } from '../src/function' -import { reader } from '../src/Reader' +import * as R from '../src/Reader' import * as _ from '../src/ReaderEither' import { semigroupSum, semigroupString } from '../src/Semigroup' @@ -114,15 +114,15 @@ describe('ReaderEither', () => { it('fold', () => { const fold = _.fold( - (s: string) => reader.of(s.length), - (n: number) => reader.of(n * 2) + (s: string) => R.of(s.length), + (n: number) => R.of(n * 2) ) assert.deepStrictEqual(fold(_.right(1))({}), 2) assert.deepStrictEqual(fold(_.left('aaa'))({}), 3) }) it('getOrElse', () => { - const getOrElse = _.getOrElse((s: string) => reader.of(s.length)) + const getOrElse = _.getOrElse((s: string) => R.of(s.length)) assert.deepStrictEqual(getOrElse(_.right(1))({}), 1) assert.deepStrictEqual(getOrElse(_.left('aaa'))({}), 3) }) diff --git a/test/ReaderTask.ts b/test/ReaderTask.ts index 3cf820594..06493550c 100644 --- a/test/ReaderTask.ts +++ b/test/ReaderTask.ts @@ -1,7 +1,7 @@ import * as assert from 'assert' import * as A from '../src/Array' import { pipe } from '../src/function' -import { reader } from '../src/Reader' +import * as R from '../src/Reader' import * as _ from '../src/ReaderTask' import * as T from '../src/Task' import * as I from '../src/IO' @@ -83,7 +83,7 @@ describe('ReaderTask', () => { }) it('fromReader', async () => { - const e = await _.fromReader(reader.of(1))({})() + const e = await _.fromReader(R.of(1))({})() assert.deepStrictEqual(e, 1) }) @@ -104,7 +104,7 @@ describe('ReaderTask', () => { }) it('of', async () => { - const e = await _.fromReader(reader.of(1))({})() + const e = await _.fromReader(R.of(1))({})() assert.deepStrictEqual(e, 1) }) diff --git a/test/ReaderTaskEither.ts b/test/ReaderTaskEither.ts index a9e3433b1..82bd46ee5 100644 --- a/test/ReaderTaskEither.ts +++ b/test/ReaderTaskEither.ts @@ -6,7 +6,7 @@ import * as IE from '../src/IOEither' import { monoidSum } from '../src/Monoid' import { none, some } from '../src/Option' import { pipe } from '../src/function' -import { reader } from '../src/Reader' +import * as R from '../src/Reader' import * as RE from '../src/ReaderEither' import * as _ from '../src/ReaderTaskEither' import { semigroupString, semigroupSum } from '../src/Semigroup' @@ -203,12 +203,12 @@ describe('ReaderTaskEither', () => { }) it('rightReader', async () => { - const e = await _.run(_.rightReader(reader.of(1)), {}) + const e = await _.run(_.rightReader(R.of(1)), {}) assert.deepStrictEqual(e, E.right(1)) }) it('leftReader', async () => { - const e = await _.run(_.leftReader(reader.of(1)), {}) + const e = await _.run(_.leftReader(R.of(1)), {}) assert.deepStrictEqual(e, E.left(1)) }) @@ -237,8 +237,8 @@ describe('ReaderTaskEither', () => { it('fold', async () => { const fold = _.fold( - (l: string) => reader.of(task.of(l.length)), - (a: number) => reader.of(task.of(a * 2)) + (l: string) => R.of(task.of(l.length)), + (a: number) => R.of(task.of(a * 2)) ) const e1 = await fold(_.right(1))({})() assert.deepStrictEqual(e1, 2) @@ -249,12 +249,12 @@ describe('ReaderTaskEither', () => { it('getOrElse', async () => { const e1 = await pipe( _.right(1), - _.getOrElse((l: string) => reader.of(task.of(l.length))) + _.getOrElse((l: string) => R.of(task.of(l.length))) )({})() assert.deepStrictEqual(e1, 1) const e2 = await pipe( _.left('err'), - _.getOrElse((l: string) => reader.of(task.of(l.length))) + _.getOrElse((l: string) => R.of(task.of(l.length))) )({})() assert.deepStrictEqual(e2, 3) }) diff --git a/test/StateReaderTaskEither.ts b/test/StateReaderTaskEither.ts index 2de570096..1d44a0018 100644 --- a/test/StateReaderTaskEither.ts +++ b/test/StateReaderTaskEither.ts @@ -4,7 +4,7 @@ import * as I from '../src/IO' import * as IE from '../src/IOEither' import * as O from '../src/Option' import { pipe } from '../src/function' -import { reader } from '../src/Reader' +import * as R from '../src/Reader' import * as RE from '../src/ReaderEither' import * as RTE from '../src/ReaderTaskEither' import { State } from '../src/State' @@ -212,12 +212,12 @@ describe('StateReaderTaskEither', () => { }) it('rightReader', async () => { - const e = await _.run(_.rightReader(reader.of(1)), {}, {}) + const e = await _.run(_.rightReader(R.of(1)), {}, {}) assert.deepStrictEqual(e, E.right([1, {}])) }) it('leftReader', async () => { - const e = await _.run(_.leftReader(reader.of(1)), {}, {}) + const e = await _.run(_.leftReader(R.of(1)), {}, {}) assert.deepStrictEqual(e, E.left(1)) }) diff --git a/test/Strong.ts b/test/Strong.ts index 8a3cad6fe..1d6265a79 100644 --- a/test/Strong.ts +++ b/test/Strong.ts @@ -1,19 +1,19 @@ import * as assert from 'assert' -import { reader } from '../src/Reader' +import * as R from '../src/Reader' import { fanout, splitStrong } from '../src/Strong' describe('Strong', () => { it('splitStrong', () => { const ab = (s: string) => s.length const cd = (n: number) => n >= 2 - assert.deepStrictEqual(splitStrong(reader)(ab, cd)(['foo', 2]), [3, true]) - assert.deepStrictEqual(splitStrong(reader)(ab, cd)(['a', 1]), [1, false]) + assert.deepStrictEqual(splitStrong({ ...R.strongReader, ...R.categoryReader })(ab, cd)(['foo', 2]), [3, true]) + assert.deepStrictEqual(splitStrong({ ...R.strongReader, ...R.categoryReader })(ab, cd)(['a', 1]), [1, false]) }) it('fanout', () => { const ab = (s: string) => s.length const ac = (s: string) => s === s.toLowerCase() - assert.deepStrictEqual(fanout(reader)(ab, ac)('foo'), [3, true]) - assert.deepStrictEqual(fanout(reader)(ab, ac)('A'), [1, false]) + assert.deepStrictEqual(fanout({ ...R.strongReader, ...R.categoryReader })(ab, ac)('foo'), [3, true]) + assert.deepStrictEqual(fanout({ ...R.strongReader, ...R.categoryReader })(ab, ac)('A'), [1, false]) }) }) diff --git a/test/pipeable.ts b/test/pipeable.ts index 6d707fd73..4919b4b79 100644 --- a/test/pipeable.ts +++ b/test/pipeable.ts @@ -5,7 +5,7 @@ import * as E from '../src/Either' import { fold, monoidSum } from '../src/Monoid' import * as O from '../src/Option' import { pipeable, pipe } from '../src/pipeable' -import { reader } from '../src/Reader' +import * as R from '../src/Reader' describe('pipeable', () => { it('{}', () => { @@ -135,7 +135,7 @@ describe('pipeable', () => { }) it('Profunctor', () => { - const { promap } = pipeable(reader) + const { promap } = pipeable(R.profunctorReader) const f = promap( (s: string) => s + 'a', (n: number) => n > 2 @@ -145,7 +145,7 @@ describe('pipeable', () => { }) it('Semigroupoid', () => { - const { compose } = pipeable(reader) + const { compose } = pipeable(R.categoryReader) assert.deepStrictEqual(compose((s: string) => s.length)((n) => n * 2)('aa'), 4) }) }) From 3436eff0e9a0c3e04bc40ab9624131c1a4e306af Mon Sep 17 00:00:00 2001 From: gcanti Date: Wed, 17 Jun 2020 17:42:55 +0200 Subject: [PATCH 057/106] split `readerEither` mega instance --- CHANGELOG.md | 8 ++++ docs/modules/ReaderEither.ts.md | 77 +++++++++++++++++++++++++++++++ src/ReaderEither.ts | 81 ++++++++++++++++++++++++++++++++- 3 files changed, 164 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9ca637451..4699f74e3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -120,6 +120,14 @@ high state of flux, you're at risk of it changing without notice. - add `monadReader` instance (@gcanti) - add `profunctorReader` instance (@gcanti) - add `categoryReader` instance (@gcanti) + - `ReaderEither` + - add `functorReaderEither` instance (@gcanti) + - add `applyReaderEither` instance (@gcanti) + - add `applicativeReaderEither` instance (@gcanti) + - add `monadReaderEither` instance (@gcanti) + - add `bifunctorReaderEither` instance (@gcanti) + - add `altReaderEither` instance (@gcanti) + - add `monadThrowReaderEither` instance (@gcanti) - `ReadonlyArray` - add `functorArray` instance (@gcanti) - add `functorWithIndexArray` instance (@gcanti) diff --git a/docs/modules/ReaderEither.ts.md b/docs/modules/ReaderEither.ts.md index 5e55692d8..a20e61afc 100644 --- a/docs/modules/ReaderEither.ts.md +++ b/docs/modules/ReaderEither.ts.md @@ -53,10 +53,17 @@ Added in v2.0.0 - [instances](#instances) - [URI](#uri) - [URI (type alias)](#uri-type-alias) + - [altReaderEither](#altreadereither) + - [applicativeReaderEither](#applicativereadereither) + - [applyReaderEither](#applyreadereither) + - [bifunctorReaderEither](#bifunctorreadereither) + - [functorReaderEither](#functorreadereither) - [getApplyMonoid](#getapplymonoid) - [getApplySemigroup](#getapplysemigroup) - [getReaderValidation](#getreadervalidation) - [getSemigroup](#getsemigroup) + - [monadReaderEither](#monadreadereither) + - [monadThrowReaderEither](#monadthrowreadereither) - [readerEither](#readereither) - [model](#model) - [ReaderEither (interface)](#readereither-interface) @@ -465,6 +472,56 @@ export type URI = typeof URI Added in v2.0.0 +## altReaderEither + +**Signature** + +```ts +export declare const altReaderEither: Alt3<'ReaderEither'> +``` + +Added in v2.7.0 + +## applicativeReaderEither + +**Signature** + +```ts +export declare const applicativeReaderEither: Applicative3<'ReaderEither'> +``` + +Added in v2.7.0 + +## applyReaderEither + +**Signature** + +```ts +export declare const applyReaderEither: Apply3<'ReaderEither'> +``` + +Added in v2.7.0 + +## bifunctorReaderEither + +**Signature** + +```ts +export declare const bifunctorReaderEither: Bifunctor3<'ReaderEither'> +``` + +Added in v2.7.0 + +## functorReaderEither + +**Signature** + +```ts +export declare const functorReaderEither: Functor3<'ReaderEither'> +``` + +Added in v2.7.0 + ## getApplyMonoid **Signature** @@ -513,6 +570,26 @@ export declare function getSemigroup(S: Semigroup): Semigroup +``` + +Added in v2.7.0 + +## monadThrowReaderEither + +**Signature** + +```ts +export declare const monadThrowReaderEither: MonadThrow3<'ReaderEither'> +``` + +Added in v2.7.0 + ## readerEither **Signature** diff --git a/src/ReaderEither.ts b/src/ReaderEither.ts index 78227f695..40c624283 100644 --- a/src/ReaderEither.ts +++ b/src/ReaderEither.ts @@ -2,7 +2,7 @@ * @since 2.0.0 */ import { Alt3, Alt3C } from './Alt' -import { apComposition } from './Apply' +import { apComposition, Apply3 } from './Apply' import { Bifunctor3 } from './Bifunctor' import * as E from './Either' import { flow, identity, pipe, Predicate, Refinement } from './function' @@ -20,6 +20,8 @@ import { getValidationM } from './ValidationT' import Either = E.Either import Reader = R.Reader +import { Functor3 } from './Functor' +import { Applicative3 } from './Applicative' /** * @category model @@ -396,7 +398,6 @@ export function getApplyMonoid(M: Monoid): Monoid( } } +/** + * @category instances + * @since 2.7.0 + */ +export const functorReaderEither: Functor3 = { + URI, + map: map_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const applyReaderEither: Apply3 = { + URI, + map: map_, + ap: ap_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const applicativeReaderEither: Applicative3 = { + URI, + map: map_, + ap: ap_, + of +} + +/** + * @category instances + * @since 2.7.0 + */ +export const monadReaderEither: Monad3 = { + URI, + map: map_, + ap: ap_, + of, + chain: chain_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const bifunctorReaderEither: Bifunctor3 = { + URI, + bimap: bimap_, + mapLeft: mapLeft_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const altReaderEither: Alt3 = { + URI, + map: map_, + alt: alt_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const monadThrowReaderEither: MonadThrow3 = { + URI, + map: map_, + ap: ap_, + of, + chain: chain_, + throwError: throwError_ +} + +// TODO: remove in v3 /** * @category instances * @since 2.0.0 From a216eb7eefada291398ab6d5ac6698476129eedf Mon Sep 17 00:00:00 2001 From: gcanti Date: Thu, 18 Jun 2020 13:17:38 +0200 Subject: [PATCH 058/106] split `readerTask` mega instance --- CHANGELOG.md | 4 +++ docs/modules/ReaderTask.ts.md | 37 ++++++++++++++++++++++++-- src/ReaderTask.ts | 50 ++++++++++++++++++++++++++++------- test/ReaderTask.ts | 38 ++++++++++++++------------ 4 files changed, 101 insertions(+), 28 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4699f74e3..ea78ebe4c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -128,6 +128,10 @@ high state of flux, you're at risk of it changing without notice. - add `bifunctorReaderEither` instance (@gcanti) - add `altReaderEither` instance (@gcanti) - add `monadThrowReaderEither` instance (@gcanti) + - `ReaderTask` + - add `functorReaderTask` instance (@gcanti) + - add `applicativeReaderTaskPar` instance (@gcanti) + - add `applicativeReaderTaskSeq` instance (@gcanti) - `ReadonlyArray` - add `functorArray` instance (@gcanti) - add `functorWithIndexArray` instance (@gcanti) diff --git a/docs/modules/ReaderTask.ts.md b/docs/modules/ReaderTask.ts.md index 0d34791b6..ed7ca0483 100644 --- a/docs/modules/ReaderTask.ts.md +++ b/docs/modules/ReaderTask.ts.md @@ -40,6 +40,9 @@ Added in v2.3.0 - [instances](#instances) - [URI](#uri) - [URI (type alias)](#uri-type-alias) + - [applicativeReaderTaskPar](#applicativereadertaskpar) + - [applicativeReaderTaskSeq](#applicativereadertaskseq) + - [functorReaderTask](#functorreadertask) - [getMonoid](#getmonoid) - [getSemigroup](#getsemigroup) - [readerTask](#readertask) @@ -294,6 +297,36 @@ export type URI = typeof URI Added in v2.3.0 +## applicativeReaderTaskPar + +**Signature** + +```ts +export declare const applicativeReaderTaskPar: Applicative2<'ReaderTask'> +``` + +Added in v2.7.0 + +## applicativeReaderTaskSeq + +**Signature** + +```ts +export declare const applicativeReaderTaskSeq: Applicative2<'ReaderTask'> +``` + +Added in v2.7.0 + +## functorReaderTask + +**Signature** + +```ts +export declare const functorReaderTask: Functor2<'ReaderTask'> +``` + +Added in v2.7.0 + ## getMonoid **Signature** @@ -319,7 +352,7 @@ Added in v2.3.0 **Signature** ```ts -export declare const readerTask: Monad2<'ReaderTask'> & MonadTask2<'ReaderTask'> +export declare const readerTask: MonadTask2<'ReaderTask'> ``` Added in v2.3.0 @@ -331,7 +364,7 @@ Like `readerTask` but `ap` is sequential **Signature** ```ts -export declare const readerTaskSeq: Monad2<'ReaderTask'> & MonadTask2<'ReaderTask'> +export declare const readerTaskSeq: MonadTask2<'ReaderTask'> ``` Added in v2.3.0 diff --git a/src/ReaderTask.ts b/src/ReaderTask.ts index d326162bc..0e2a242b1 100644 --- a/src/ReaderTask.ts +++ b/src/ReaderTask.ts @@ -16,6 +16,8 @@ import * as T from './Task' import Task = T.Task import Reader = R.Reader +import { Functor2 } from './Functor' +import { Applicative2 } from './Applicative' /** * @category model @@ -227,7 +229,8 @@ declare module './HKT' { } const map_: Monad2['map'] = (fa, f) => pipe(fa, map(f)) -const ap_: Monad2['ap'] = (fab, fa) => pipe(fab, ap(fa)) +const apPar_: Monad2['ap'] = (fab, fa) => pipe(fab, ap(fa)) +const apSeq_: Monad2['ap'] = (fab, fa) => chain_(fab, (f) => map_(fa, f)) const chain_: Monad2['chain'] = (ma, f) => pipe(ma, chain(f)) /** @@ -237,7 +240,7 @@ export const monadReaderTask: Monad2 = { URI, map: map_, of, - ap: ap_, + ap: apPar_, chain: chain_ } @@ -260,20 +263,53 @@ export function getMonoid(M: Monoid): Monoid> { } } +/** + * @category instances + * @since 2.7.0 + */ +export const functorReaderTask: Functor2 = { + URI, + map: map_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const applicativeReaderTaskPar: Applicative2 = { + URI, + map: map_, + ap: apPar_, + of +} + +/** + * @category instances + * @since 2.7.0 + */ +export const applicativeReaderTaskSeq: Applicative2 = { + URI, + map: map_, + ap: apSeq_, + of +} + +// TODO: remove in v3 /** * @category instances * @since 2.3.0 */ -export const readerTask: Monad2 & MonadTask2 = { +export const readerTask: MonadTask2 = { URI, map: map_, of, - ap: ap_, + ap: apPar_, chain: chain_, fromIO, fromTask } +// TODO: remove in v3 /** * Like `readerTask` but `ap` is sequential * @@ -284,11 +320,7 @@ export const readerTaskSeq: typeof readerTask = { URI, map: map_, of, - ap: (fab, fa) => - pipe( - fab, - chain((f) => pipe(fa, map(f))) - ), + ap: apSeq_, chain: chain_, fromIO, fromTask diff --git a/test/ReaderTask.ts b/test/ReaderTask.ts index 06493550c..b85871241 100644 --- a/test/ReaderTask.ts +++ b/test/ReaderTask.ts @@ -34,8 +34,8 @@ describe('ReaderTask', () => { it('chain', async () => { const f = (a: string) => _.of(a.length) - const x = await pipe(_.of('foo'), _.chain(f))({})() - assert.deepStrictEqual(x, 3) + assert.deepStrictEqual(await pipe(_.of('foo'), _.chain(f))({})(), 3) + assert.deepStrictEqual(await _.readerTask.chain(_.of('foo'), f)({})(), 3) }) it('chainFirst', async () => { @@ -50,14 +50,6 @@ describe('ReaderTask', () => { }) }) - describe('readerTaskSeq', () => { - it('chain ', async () => { - const f = (a: string) => _.of(a.length) - const e1 = await _.readerTaskSeq.chain(_.of('foo'), f)({})() - assert.deepStrictEqual(e1, 3) - }) - }) - it('ask', async () => { const e = await _.ask()(1)() return assert.deepStrictEqual(e, 1) @@ -112,9 +104,15 @@ describe('ReaderTask', () => { // tslint:disable-next-line: readonly-array const log: Array = [] const append = (message: string): _.ReaderTask<{}, number> => _.fromTask(() => Promise.resolve(log.push(message))) - const t1 = _.readerTask.chain(append('start 1'), () => append('end 1')) - const t2 = _.readerTask.chain(append('start 2'), () => append('end 2')) - const sequenceParallel = A.sequence(_.readerTask) + const t1 = pipe( + append('start 1'), + _.chain(() => append('end 1')) + ) + const t2 = pipe( + append('start 2'), + _.chain(() => append('end 2')) + ) + const sequenceParallel = A.sequence(_.applicativeReaderTaskPar) const ns = await sequenceParallel([t1, t2])({})() assert.deepStrictEqual(ns, [3, 4]) assert.deepStrictEqual(log, ['start 1', 'start 2', 'end 1', 'end 2']) @@ -124,9 +122,15 @@ describe('ReaderTask', () => { // tslint:disable-next-line: readonly-array const log: Array = [] const append = (message: string): _.ReaderTask<{}, number> => _.fromTask(() => Promise.resolve(log.push(message))) - const t1 = _.readerTask.chain(append('start 1'), () => append('end 1')) - const t2 = _.readerTask.chain(append('start 2'), () => append('end 2')) - const sequenceSeries = A.sequence(_.readerTaskSeq) + const t1 = pipe( + append('start 1'), + _.chain(() => append('end 1')) + ) + const t2 = pipe( + append('start 2'), + _.chain(() => append('end 2')) + ) + const sequenceSeries = A.sequence(_.applicativeReaderTaskSeq) const ns = await sequenceSeries([t1, t2])({})() assert.deepStrictEqual(ns, [2, 4]) assert.deepStrictEqual(log, ['start 1', 'end 1', 'start 2', 'end 2']) @@ -134,7 +138,7 @@ describe('ReaderTask', () => { describe('MonadIO', () => { it('fromIO', async () => { - const e = await _.readerTask.fromIO(() => 1)({})() + const e = await _.fromIO(() => 1)({})() assert.deepStrictEqual(e, 1) }) }) From a7e496df9f847681bb59c74d27fa5265818e052b Mon Sep 17 00:00:00 2001 From: gcanti Date: Thu, 18 Jun 2020 14:43:42 +0200 Subject: [PATCH 059/106] split `readerTaskEither` mega instance --- CHANGELOG.md | 6 ++ docs/modules/ReaderTaskEither.ts.md | 97 ++++++++++++++++++ src/ReaderTask.ts | 22 ++-- src/ReaderTaskEither.ts | 154 +++++++++++++++++++--------- test/ReaderTaskEither.ts | 32 ++++-- 5 files changed, 241 insertions(+), 70 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ea78ebe4c..9997a4d7e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -132,6 +132,12 @@ high state of flux, you're at risk of it changing without notice. - add `functorReaderTask` instance (@gcanti) - add `applicativeReaderTaskPar` instance (@gcanti) - add `applicativeReaderTaskSeq` instance (@gcanti) + - `ReaderTaskEither` + - add `functorReaderTaskEither` instance (@gcanti) + - add `applicativeReaderTaskEitherPar` instance (@gcanti) + - add `applicativeReaderTaskEitherSeq` instance (@gcanti) + - add `bifunctorReaderTaskEither` instance (@gcanti) + - add `altReaderTaskEither` instance (@gcanti) - `ReadonlyArray` - add `functorArray` instance (@gcanti) - add `functorWithIndexArray` instance (@gcanti) diff --git a/docs/modules/ReaderTaskEither.ts.md b/docs/modules/ReaderTaskEither.ts.md index 42e98995a..5a700beed 100644 --- a/docs/modules/ReaderTaskEither.ts.md +++ b/docs/modules/ReaderTaskEither.ts.md @@ -28,6 +28,12 @@ Added in v2.0.0 - [chainFirst](#chainfirst) - [chainW](#chainw) - [flatten](#flatten) +- [MonadIO](#monadio) + - [fromIO](#fromio) +- [MonadTask](#monadtask) + - [fromTask](#fromtask) +- [MonadThrow](#monadthrow) + - [throwError](#throwerror) - [combinators](#combinators) - [chainEitherK](#chaineitherk) - [chainEitherKW](#chaineitherkw) @@ -68,6 +74,11 @@ Added in v2.0.0 - [instances](#instances) - [URI](#uri) - [URI (type alias)](#uri-type-alias) + - [altReaderTaskEither](#altreadertaskeither) + - [applicativeReaderTaskEitherPar](#applicativereadertaskeitherpar) + - [applicativeReaderTaskEitherSeq](#applicativereadertaskeitherseq) + - [bifunctorReaderTaskEither](#bifunctorreadertaskeither) + - [functorReaderTaskEither](#functorreadertaskeither) - [getApplyMonoid](#getapplymonoid) - [getApplySemigroup](#getapplysemigroup) - [getReaderTaskValidation](#getreadertaskvalidation) @@ -246,6 +257,42 @@ export declare const flatten: ( Added in v2.0.0 +# MonadIO + +## fromIO + +**Signature** + +```ts +export declare const fromIO: (fa: IO) => ReaderTaskEither +``` + +Added in v2.0.0 + +# MonadTask + +## fromTask + +**Signature** + +```ts +export declare const fromTask: (fa: Task) => ReaderTaskEither +``` + +Added in v2.0.0 + +# MonadThrow + +## throwError + +**Signature** + +```ts +export declare const throwError: (e: E) => ReaderTaskEither +``` + +Added in v2.0.0 + # combinators ## chainEitherK @@ -657,6 +704,56 @@ export type URI = typeof URI Added in v2.0.0 +## altReaderTaskEither + +**Signature** + +```ts +export declare const altReaderTaskEither: Alt3<'ReaderTaskEither'> +``` + +Added in v2.7.0 + +## applicativeReaderTaskEitherPar + +**Signature** + +```ts +export declare const applicativeReaderTaskEitherPar: Applicative3<'ReaderTaskEither'> +``` + +Added in v2.7.0 + +## applicativeReaderTaskEitherSeq + +**Signature** + +```ts +export declare const applicativeReaderTaskEitherSeq: Applicative3<'ReaderTaskEither'> +``` + +Added in v2.7.0 + +## bifunctorReaderTaskEither + +**Signature** + +```ts +export declare const bifunctorReaderTaskEither: Bifunctor3<'ReaderTaskEither'> +``` + +Added in v2.7.0 + +## functorReaderTaskEither + +**Signature** + +```ts +export declare const functorReaderTaskEither: Functor3<'ReaderTaskEither'> +``` + +Added in v2.7.0 + ## getApplyMonoid **Signature** diff --git a/src/ReaderTask.ts b/src/ReaderTask.ts index 0e2a242b1..3bed558bf 100644 --- a/src/ReaderTask.ts +++ b/src/ReaderTask.ts @@ -233,17 +233,6 @@ const apPar_: Monad2['ap'] = (fab, fa) => pipe(fab, ap(fa)) const apSeq_: Monad2['ap'] = (fab, fa) => chain_(fab, (f) => map_(fa, f)) const chain_: Monad2['chain'] = (ma, f) => pipe(ma, chain(f)) -/** - * @internal - */ -export const monadReaderTask: Monad2 = { - URI, - map: map_, - of, - ap: apPar_, - chain: chain_ -} - /** * @category instances * @since 2.3.0 @@ -294,6 +283,17 @@ export const applicativeReaderTaskSeq: Applicative2 = { of } +/** + * @internal + */ +export const monadReaderTask: Monad2 = { + URI, + map: map_, + of, + ap: apPar_, + chain: chain_ +} + // TODO: remove in v3 /** * @category instances diff --git a/src/ReaderTaskEither.ts b/src/ReaderTaskEither.ts index 2f127a3d6..0ebd3c33a 100644 --- a/src/ReaderTaskEither.ts +++ b/src/ReaderTaskEither.ts @@ -26,6 +26,9 @@ import { getValidationM } from './ValidationT' import TaskEither = TE.TaskEither import Reader = R.Reader +import { Functor3 } from './Functor' +import { Applicative3 } from './Applicative' +import { MonadIO3 } from './MonadIO' /** * @category model @@ -485,26 +488,22 @@ export const alt: ( ) => (fa: ReaderTaskEither) => ReaderTaskEither = (that) => (fa) => alt_(fa, that) /** - * Make sure that a resource is cleaned up in the event of an exception (\*). The release action is called regardless of - * whether the body action throws (\*) or returns. - * - * (\*) i.e. returns a `Left` - * - * @MonadThrow - * @since 2.0.4 + * @category MonadIO + * @since 2.0.0 */ -export function bracket( - aquire: ReaderTaskEither, - use: (a: A) => ReaderTaskEither, - release: (a: A, e: Either) => ReaderTaskEither -): ReaderTaskEither { - return (r) => - TE.bracket( - aquire(r), - (a) => use(a)(r), - (a, e) => release(a, e)(r) - ) -} +export const fromIO: MonadIO3['fromIO'] = rightIO + +/** + * @category MonadTask + * @since 2.0.0 + */ +export const fromTask: MonadTask3['fromTask'] = rightTask + +/** + * @category MonadThrow + * @since 2.0.0 + */ +export const throwError: MonadThrow3['throwError'] = left // ------------------------------------------------------------------------------------- // instances @@ -529,7 +528,8 @@ declare module './HKT' { } const map_: Monad3['map'] = (fa, f) => pipe(fa, map(f)) -const ap_: Monad3['ap'] = (fab, fa) => pipe(fab, ap(fa)) +const apPar_: Monad3['ap'] = (fab, fa) => pipe(fab, ap(fa)) +const apSeq_: Monad3['ap'] = (fab, fa) => chain_(fab, (f) => map_(fa, f)) const of = right const chain_: Monad3['chain'] = (ma, f) => pipe(ma, chain(f)) const alt_: ( @@ -548,20 +548,6 @@ const bimap_: ( const mapLeft_: (fea: ReaderTaskEither, f: (e: E) => G) => ReaderTaskEither = (ma, f) => ( e ) => pipe(ma(e), TE.mapLeft(f)) -const fromIO_ = rightIO -const fromTask_ = rightTask -const throwError_ = left - -/** - * @internal - */ -export const monadReaderTaskEither: Monad3 = { - URI, - map: map_, - of, - ap: ap_, - chain: chain_ -} /** * Semigroup returning the left-most non-`Left` value. If both operands are `Right`s then the inner values are @@ -614,12 +600,64 @@ export function getReaderTaskValidation( mapLeft: mapLeft_, ap: V.ap, alt: V.alt, - fromIO: fromIO_, - fromTask: fromTask_, - throwError: throwError_ + fromIO, + fromTask, + throwError } } +/** + * @category instances + * @since 2.7.0 + */ +export const functorReaderTaskEither: Functor3 = { + URI, + map: map_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const applicativeReaderTaskEitherPar: Applicative3 = { + URI, + map: map_, + ap: apPar_, + of +} + +/** + * @category instances + * @since 2.7.0 + */ +export const applicativeReaderTaskEitherSeq: Applicative3 = { + URI, + map: map_, + ap: apSeq_, + of +} + +/** + * @category instances + * @since 2.7.0 + */ +export const bifunctorReaderTaskEither: Bifunctor3 = { + URI, + bimap: bimap_, + mapLeft: mapLeft_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const altReaderTaskEither: Alt3 = { + URI, + map: map_, + alt: alt_ +} + +// TODO: remove in v3 /** * @category instances * @since 2.0.0 @@ -628,16 +666,17 @@ export const readerTaskEither: Monad3 & Bifunctor3 & Alt3 & Monad URI, map: map_, of, - ap: ap_, + ap: apPar_, chain: chain_, alt: alt_, bimap: bimap_, mapLeft: mapLeft_, - fromIO: fromIO_, - fromTask: fromTask_, - throwError: throwError_ + fromIO, + fromTask, + throwError } +// TODO: remove in v3 /** * Like `readerTaskEither` but `ap` is sequential * @@ -648,18 +687,14 @@ export const readerTaskEitherSeq: typeof readerTaskEither = { URI, map: map_, of, - ap: (fab, fa) => - pipe( - fab, - chain((f) => pipe(fa, map(f))) - ), + ap: apSeq_, chain: chain_, alt: alt_, bimap: bimap_, mapLeft: mapLeft_, - fromIO: fromIO_, - fromTask: fromTask_, - throwError: throwError_ + fromIO, + fromTask, + throwError } // ------------------------------------------------------------------------------------- @@ -673,3 +708,24 @@ export const readerTaskEitherSeq: typeof readerTaskEither = { export function run(ma: ReaderTaskEither, r: R): Promise> { return ma(r)() } + +/** + * Make sure that a resource is cleaned up in the event of an exception (\*). The release action is called regardless of + * whether the body action throws (\*) or returns. + * + * (\*) i.e. returns a `Left` + * + * @since 2.0.4 + */ +export function bracket( + aquire: ReaderTaskEither, + use: (a: A) => ReaderTaskEither, + release: (a: A, e: Either) => ReaderTaskEither +): ReaderTaskEither { + return (r) => + TE.bracket( + aquire(r), + (a) => use(a)(r), + (a, e) => release(a, e)(r) + ) +} diff --git a/test/ReaderTaskEither.ts b/test/ReaderTaskEither.ts index 82bd46ee5..7ecae9b70 100644 --- a/test/ReaderTaskEither.ts +++ b/test/ReaderTaskEither.ts @@ -278,27 +278,39 @@ describe('ReaderTaskEither', () => { assert.deepStrictEqual(e2, E.right(5)) }) - it('sequence parallel', async () => { + it('applicativeReaderTaskEitherPar', async () => { // tslint:disable-next-line: readonly-array const log: Array = [] const append = (message: string): _.ReaderTaskEither<{}, void, number> => _.rightTask(() => Promise.resolve(log.push(message))) - const t1 = _.readerTaskEither.chain(append('start 1'), () => append('end 1')) - const t2 = _.readerTaskEither.chain(append('start 2'), () => append('end 2')) - const sequenceParallel = A.sequence(_.readerTaskEither) + const t1 = pipe( + append('start 1'), + _.chain(() => append('end 1')) + ) + const t2 = pipe( + append('start 2'), + _.chain(() => append('end 2')) + ) + const sequenceParallel = A.sequence(_.applicativeReaderTaskEitherPar) const ns = await _.run(sequenceParallel([t1, t2]), {}) assert.deepStrictEqual(ns, E.right([3, 4])) assert.deepStrictEqual(log, ['start 1', 'start 2', 'end 1', 'end 2']) }) - it('sequence series', async () => { + it('applicativeReaderTaskEitherSeq', async () => { // tslint:disable-next-line: readonly-array const log: Array = [] const append = (message: string): _.ReaderTaskEither<{}, void, number> => _.rightTask(() => Promise.resolve(log.push(message))) - const t1 = _.readerTaskEither.chain(append('start 1'), () => append('end 1')) - const t2 = _.readerTaskEither.chain(append('start 2'), () => append('end 2')) - const sequenceSeries = A.sequence(_.readerTaskEitherSeq) + const t1 = pipe( + append('start 1'), + _.chain(() => append('end 1')) + ) + const t2 = pipe( + append('start 2'), + _.chain(() => append('end 2')) + ) + const sequenceSeries = A.sequence(_.applicativeReaderTaskEitherSeq) const ns = await _.run(sequenceSeries([t1, t2]), {}) assert.deepStrictEqual(ns, E.right([2, 4])) assert.deepStrictEqual(log, ['start 1', 'end 1', 'start 2', 'end 2']) @@ -307,7 +319,7 @@ describe('ReaderTaskEither', () => { describe('MonadIO', () => { it('fromIO', async () => { const e = await _.run( - _.readerTaskEither.fromIO(() => 1), + _.fromIO(() => 1), {} ) assert.deepStrictEqual(e, E.right(1)) @@ -406,7 +418,7 @@ describe('ReaderTaskEither', () => { const useSuccess = () => _.right('use success') const useFailure = () => _.left('use failure') const releaseSuccess = () => - _.readerTaskEither.fromIO(() => { + _.fromIO(() => { log.push('release success') }) const releaseFailure = () => _.left('release failure') From f9058630299be18a773b2a8a18821a1fa5dedf41 Mon Sep 17 00:00:00 2001 From: gcanti Date: Thu, 18 Jun 2020 15:00:52 +0200 Subject: [PATCH 060/106] split `stateReaderTaskEither` mega instance --- CHANGELOG.md | 6 ++ docs/modules/StateReaderTaskEither.ts.md | 111 +++++++++++++++++------ docs/modules/Traversable.ts.md | 3 + src/StateReaderTaskEither.ts | 105 ++++++++++++++++----- src/Traversable.ts | 15 ++- test/StateReaderTaskEither.ts | 23 +++-- 6 files changed, 202 insertions(+), 61 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9997a4d7e..ffdae7a81 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -138,6 +138,12 @@ high state of flux, you're at risk of it changing without notice. - add `applicativeReaderTaskEitherSeq` instance (@gcanti) - add `bifunctorReaderTaskEither` instance (@gcanti) - add `altReaderTaskEither` instance (@gcanti) + - `StateReaderTaskEither` + - add `functorStateReaderTaskEither` instance (@gcanti) + - add `applicativeStateReaderTaskEitherPar` instance (@gcanti) + - add `applicativeStateReaderTaskEitherSeq` instance (@gcanti) + - add `bifunctorStateReaderTaskEither` instance (@gcanti) + - add `altStateReaderTaskEither` instance (@gcanti) - `ReadonlyArray` - add `functorArray` instance (@gcanti) - add `functorWithIndexArray` instance (@gcanti) diff --git a/docs/modules/StateReaderTaskEither.ts.md b/docs/modules/StateReaderTaskEither.ts.md index 67b9dd9ed..8cb3bf233 100644 --- a/docs/modules/StateReaderTaskEither.ts.md +++ b/docs/modules/StateReaderTaskEither.ts.md @@ -67,14 +67,19 @@ Added in v2.0.0 - [instances](#instances) - [URI](#uri) - [URI (type alias)](#uri-type-alias) + - [altReaderStateTaskEither](#altreaderstatetaskeither) + - [applicativeStateReaderTaskEitherPar](#applicativestatereadertaskeitherpar) + - [applicativeStateReaderTaskEitherSeq](#applicativestatereadertaskeitherseq) + - [bifunctorStateReaderTaskEither](#bifunctorstatereadertaskeither) + - [functorStateReaderTaskEither](#functorstatereadertaskeither) + - [stateReaderTaskEither](#statereadertaskeither) + - [stateReaderTaskEitherSeq](#statereadertaskeitherseq) - [model](#model) - [StateReaderTaskEither (interface)](#statereadertaskeither-interface) - [utils](#utils) - [evalState](#evalstate) - [execState](#execstate) - [run](#run) - - [stateReaderTaskEither](#statereadertaskeither) - - [stateReaderTaskEitherSeq](#statereadertaskeitherseq) --- @@ -661,61 +666,55 @@ export type URI = typeof URI Added in v2.0.0 -# model - -## StateReaderTaskEither (interface) +## altReaderStateTaskEither **Signature** ```ts -export interface StateReaderTaskEither { - (s: S): ReaderTaskEither -} +export declare const altReaderStateTaskEither: Alt4<'StateReaderTaskEither'> ``` -Added in v2.0.0 +Added in v2.7.0 -# utils +## applicativeStateReaderTaskEitherPar -## evalState +**Signature** -Run a computation in the `StateReaderTaskEither` monad, discarding the final state +```ts +export declare const applicativeStateReaderTaskEitherPar: Applicative4<'StateReaderTaskEither'> +``` + +Added in v2.7.0 + +## applicativeStateReaderTaskEitherSeq **Signature** ```ts -export declare const evalState: ( - ma: StateReaderTaskEither, - s: S -) => RTE.ReaderTaskEither +export declare const applicativeStateReaderTaskEitherSeq: Applicative4<'StateReaderTaskEither'> ``` -Added in v2.0.0 - -## execState +Added in v2.7.0 -Run a computation in the `StateReaderTaskEither` monad discarding the result +## bifunctorStateReaderTaskEither **Signature** ```ts -export declare const execState: ( - ma: StateReaderTaskEither, - s: S -) => RTE.ReaderTaskEither +export declare const bifunctorStateReaderTaskEither: Bifunctor4<'StateReaderTaskEither'> ``` -Added in v2.0.0 +Added in v2.7.0 -## run +## functorStateReaderTaskEither **Signature** ```ts -export declare function run(ma: StateReaderTaskEither, s: S, r: R): Promise> +export declare const functorStateReaderTaskEither: Functor4<'StateReaderTaskEither'> ``` -Added in v2.0.0 +Added in v2.7.0 ## stateReaderTaskEither @@ -746,3 +745,59 @@ export declare const stateReaderTaskEitherSeq: Monad4<'StateReaderTaskEither'> & ``` Added in v2.0.0 + +# model + +## StateReaderTaskEither (interface) + +**Signature** + +```ts +export interface StateReaderTaskEither { + (s: S): ReaderTaskEither +} +``` + +Added in v2.0.0 + +# utils + +## evalState + +Run a computation in the `StateReaderTaskEither` monad, discarding the final state + +**Signature** + +```ts +export declare const evalState: ( + ma: StateReaderTaskEither, + s: S +) => RTE.ReaderTaskEither +``` + +Added in v2.0.0 + +## execState + +Run a computation in the `StateReaderTaskEither` monad discarding the result + +**Signature** + +```ts +export declare const execState: ( + ma: StateReaderTaskEither, + s: S +) => RTE.ReaderTaskEither +``` + +Added in v2.0.0 + +## run + +**Signature** + +```ts +export declare function run(ma: StateReaderTaskEither, s: S, r: R): Promise> +``` + +Added in v2.0.0 diff --git a/docs/modules/Traversable.ts.md b/docs/modules/Traversable.ts.md index f67569d7d..8e356e132 100644 --- a/docs/modules/Traversable.ts.md +++ b/docs/modules/Traversable.ts.md @@ -208,6 +208,9 @@ Added in v2.0.0 ```ts export interface Sequence1 { + (F: Applicative4): ( + ta: Kind> + ) => Kind4> (F: Applicative3): (ta: Kind>) => Kind3> (F: Applicative3C): (ta: Kind>) => Kind3> (F: Applicative2): (ta: Kind>) => Kind2> diff --git a/src/StateReaderTaskEither.ts b/src/StateReaderTaskEither.ts index f4fa33ae6..176851e98 100644 --- a/src/StateReaderTaskEither.ts +++ b/src/StateReaderTaskEither.ts @@ -23,6 +23,8 @@ import { TaskEither } from './TaskEither' // ------------------------------------------------------------------------------------- import ReaderTaskEither = RTE.ReaderTaskEither +import { Functor4 } from './Functor' +import { Applicative4 } from './Applicative' /* tslint:disable:readonly-array */ /** @@ -510,28 +512,11 @@ export const alt: ( // instances // ------------------------------------------------------------------------------------- -/** - * @category instances - * @since 2.0.0 - */ -export const URI = 'StateReaderTaskEither' - -/** - * @category instances - * @since 2.0.0 - */ -export type URI = typeof URI - -declare module './HKT' { - interface URItoKind4 { - readonly [URI]: StateReaderTaskEither - } -} - /* istanbul ignore next */ const map_: Monad4['map'] = (fa, f) => pipe(fa, map(f)) /* istanbul ignore next */ -const ap_: Monad4['ap'] = (fab, fa) => pipe(fab, ap(fa)) +const apPar_: Monad4['ap'] = (fab, fa) => pipe(fab, ap(fa)) +const apSeq_: Monad4['ap'] = (fab, fa) => chain_(fab, (f) => map_(fa, f)) /* istanbul ignore next */ const chain_: Monad4['chain'] = (ma, f) => pipe(ma, chain(f)) const of = right @@ -561,13 +546,84 @@ const mapLeft_: ( ) => StateReaderTaskEither = (fea, f) => (s) => pipe(fea(s), RTE.mapLeft(f)) /** + * @category instances + * @since 2.0.0 + */ +export const URI = 'StateReaderTaskEither' + +/** + * @category instances + * @since 2.0.0 + */ +export type URI = typeof URI + +declare module './HKT' { + interface URItoKind4 { + readonly [URI]: StateReaderTaskEither + } +} + +/** + * @category instances + * @since 2.7.0 + */ +export const functorStateReaderTaskEither: Functor4 = { + URI, + map: map_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const applicativeStateReaderTaskEitherPar: Applicative4 = { + URI, + map: map_, + ap: apPar_, + of +} + +/** + * @category instances + * @since 2.7.0 + */ +export const applicativeStateReaderTaskEitherSeq: Applicative4 = { + URI, + map: map_, + ap: apSeq_, + of +} + +/** + * @category instances + * @since 2.7.0 + */ +export const bifunctorStateReaderTaskEither: Bifunctor4 = { + URI, + bimap: bimap_, + mapLeft: mapLeft_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const altReaderStateTaskEither: Alt4 = { + URI, + map: map_, + alt: alt_ +} + +// TODO: remove in v3 +/** + * @category instances * @since 2.0.0 */ export const stateReaderTaskEither: Monad4 & Bifunctor4 & Alt4 & MonadTask4 & MonadThrow4 = { URI, map: map_, of, - ap: ap_, + ap: apPar_, chain: chain_, bimap: bimap_, mapLeft: mapLeft_, @@ -577,19 +633,18 @@ export const stateReaderTaskEither: Monad4 & Bifunctor4 & Alt4 & throwError: left } +// TODO: remove in v3 /** * Like `stateReaderTaskEither` but `ap` is sequential + * + * @category instances * @since 2.0.0 */ export const stateReaderTaskEitherSeq: typeof stateReaderTaskEither = { URI, map: map_, of, - ap: (fab, fa) => - pipe( - fab, - chain((f) => pipe(fa, map(f))) - ), + ap: apSeq_, chain: chain_, bimap: bimap_, mapLeft: mapLeft_, diff --git a/src/Traversable.ts b/src/Traversable.ts index bea97e072..96ae2d7cd 100644 --- a/src/Traversable.ts +++ b/src/Traversable.ts @@ -26,7 +26,15 @@ * * @since 2.0.0 */ -import { Applicative, Applicative1, Applicative2, Applicative2C, Applicative3, Applicative3C } from './Applicative' +import { + Applicative, + Applicative1, + Applicative2, + Applicative2C, + Applicative3, + Applicative3C, + Applicative4 +} from './Applicative' import { Foldable, Foldable1, @@ -47,7 +55,7 @@ import { FunctorComposition11, getFunctorComposition } from './Functor' -import { HKT, Kind, Kind2, Kind3, URIS, URIS2, URIS3 } from './HKT' +import { HKT, Kind, Kind2, Kind3, Kind4, URIS, URIS2, URIS3, URIS4 } from './HKT' /** * @category type classes @@ -224,6 +232,9 @@ export interface Sequence { * @since 2.0.0 */ export interface Sequence1 { + (F: Applicative4): ( + ta: Kind> + ) => Kind4> (F: Applicative3): (ta: Kind>) => Kind3> (F: Applicative3C): (ta: Kind>) => Kind3> (F: Applicative2): (ta: Kind>) => Kind2> diff --git a/test/StateReaderTaskEither.ts b/test/StateReaderTaskEither.ts index 1d44a0018..48631c47c 100644 --- a/test/StateReaderTaskEither.ts +++ b/test/StateReaderTaskEither.ts @@ -11,6 +11,7 @@ import { State } from '../src/State' import * as _ from '../src/StateReaderTaskEither' import { task } from '../src/Task' import * as TE from '../src/TaskEither' +import * as A from '../src/Array' describe('StateReaderTaskEither', () => { describe('pipeables', () => { @@ -158,12 +159,22 @@ describe('StateReaderTaskEither', () => { assert.deepStrictEqual(e, E.right(['aaa', {}])) }) - it('ap (seq)', async () => { - const len = (s: string): number => s.length - const mab = _.right(len) - const ma = _.right('aaa') - const e = await RTE.run(_.evalState(_.stateReaderTaskEitherSeq.ap(mab, ma), {}), {}) - assert.deepStrictEqual(e, E.right(3)) + it('applicativeReaderTaskEitherSeq', async () => { + // tslint:disable-next-line: readonly-array + const log: Array = [] + const append = (message: string): _.StateReaderTaskEither<{}, {}, void, number> => + _.rightTask(() => Promise.resolve(log.push(message))) + const t1 = pipe( + append('start 1'), + _.chain(() => append('end 1')) + ) + const t2 = pipe( + append('start 2'), + _.chain(() => append('end 2')) + ) + const sequence = A.sequence(_.applicativeStateReaderTaskEitherSeq) + assert.deepStrictEqual(await sequence([t1, t2])({})({})(), E.right([[2, 4], {}])) + assert.deepStrictEqual(log, ['start 1', 'end 1', 'start 2', 'end 2']) }) it('execState', async () => { From 83acde924e6a20ec90660470b7530585d4b3e55e Mon Sep 17 00:00:00 2001 From: gcanti Date: Thu, 18 Jun 2020 15:18:37 +0200 Subject: [PATCH 061/106] split `task` mega instance --- CHANGELOG.md | 4 ++ docs/modules/Task.ts.md | 47 ++++++++++++++++++ src/Task.ts | 92 ++++++++++++++++++++++++----------- src/TaskEither.ts | 2 +- src/TaskThese.ts | 2 +- test/Array.ts | 4 +- test/Either.ts | 4 +- test/Map.ts | 4 +- test/Option.ts | 4 +- test/OptionT.ts | 32 ++++++------ test/ReaderTaskEither.ts | 20 ++++---- test/ReadonlyArray.ts | 4 +- test/ReadonlyMap.ts | 4 +- test/ReadonlyRecord.ts | 4 +- test/Record.ts | 4 +- test/StateReaderTaskEither.ts | 6 +-- test/Task.ts | 22 ++++++--- 17 files changed, 175 insertions(+), 84 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ffdae7a81..4047e19c9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -144,6 +144,10 @@ high state of flux, you're at risk of it changing without notice. - add `applicativeStateReaderTaskEitherSeq` instance (@gcanti) - add `bifunctorStateReaderTaskEither` instance (@gcanti) - add `altStateReaderTaskEither` instance (@gcanti) + - `Task` + - add `functorTask` instance (@gcanti) + - add `applicativeTaskPar` instance (@gcanti) + - add `applicativeTaskSeq` instance (@gcanti) - `ReadonlyArray` - add `functorArray` instance (@gcanti) - add `functorWithIndexArray` instance (@gcanti) diff --git a/docs/modules/Task.ts.md b/docs/modules/Task.ts.md index 750552be8..2f2960fcc 100644 --- a/docs/modules/Task.ts.md +++ b/docs/modules/Task.ts.md @@ -33,6 +33,8 @@ Added in v2.0.0 - [chain](#chain) - [chainFirst](#chainfirst) - [flatten](#flatten) +- [MonadTask](#monadtask) + - [fromTask](#fromtask) - [combinators](#combinators) - [chainIOK](#chainiok) - [delay](#delay) @@ -42,6 +44,9 @@ Added in v2.0.0 - [instances](#instances) - [URI](#uri) - [URI (type alias)](#uri-type-alias) + - [applicativeTaskPar](#applicativetaskpar) + - [applicativeTaskSeq](#applicativetaskseq) + - [functorTask](#functortask) - [getMonoid](#getmonoid) - [getRaceMonoid](#getracemonoid) - [getSemigroup](#getsemigroup) @@ -156,6 +161,18 @@ export declare const flatten: (mma: Task>) => Task Added in v2.0.0 +# MonadTask + +## fromTask + +**Signature** + +```ts +export declare const fromTask: (fa: Task) => Task +``` + +Added in v2.7.0 + # combinators ## chainIOK @@ -247,6 +264,36 @@ export type URI = typeof URI Added in v2.0.0 +## applicativeTaskPar + +**Signature** + +```ts +export declare const applicativeTaskPar: Applicative1<'Task'> +``` + +Added in v2.7.0 + +## applicativeTaskSeq + +**Signature** + +```ts +export declare const applicativeTaskSeq: Applicative1<'Task'> +``` + +Added in v2.7.0 + +## functorTask + +**Signature** + +```ts +export declare const functorTask: Functor1<'Task'> +``` + +Added in v2.7.0 + ## getMonoid Lift a monoid into 'Task', the inner values are concatenated using the provided `Monoid`. diff --git a/src/Task.ts b/src/Task.ts index fe0feab16..915452cbb 100644 --- a/src/Task.ts +++ b/src/Task.ts @@ -10,13 +10,14 @@ * * @since 2.0.0 */ +import { Applicative1 } from './Applicative' import { identity } from './function' import { IO } from './IO' import { Monad1 } from './Monad' import { MonadTask1 } from './MonadTask' import { Monoid } from './Monoid' import { Semigroup } from './Semigroup' -import { Apply1 } from './Apply' +import { Functor1 } from './Functor' // ------------------------------------------------------------------------------------- // model @@ -101,8 +102,9 @@ export function chainIOK(f: (a: A) => IO): (ma: Task) => Task { // ------------------------------------------------------------------------------------- const map_: (fa: Task, f: (a: A) => B) => Task = (ma, f) => () => ma().then(f) -const ap_: (fab: Task<(a: A) => B>, fa: Task) => Task = (mab, ma) => () => +const apPar_: (fab: Task<(a: A) => B>, fa: Task) => Task = (mab, ma) => () => Promise.all([mab(), ma()]).then(([f, a]) => f(a)) +const apSeq_: Applicative1['ap'] = (fab, fa) => chain_(fab, (f) => map_(fa, f)) const chain_: (fa: Task, f: (a: A) => Task) => Task = (ma, f) => () => ma().then((a) => f(a)()) /** @@ -120,7 +122,7 @@ export const map: (f: (a: A) => B) => (fa: Task) => Task = (f) => (f * @category Apply * @since 2.0.0 */ -export const ap: (fa: Task) => (fab: Task<(a: A) => B>) => Task = (fa) => (fab) => ap_(fab, fa) +export const ap: (fa: Task) => (fab: Task<(a: A) => B>) => Task = (fa) => (fab) => apPar_(fab, fa) /** * Combine two effectful actions, keeping only the result of the first. @@ -129,7 +131,7 @@ export const ap: (fa: Task) => (fab: Task<(a: A) => B>) => Task = (f * @since 2.0.0 */ export const apFirst: (fb: Task) => (fa: Task) => Task = (fb) => (fa) => - ap_( + apPar_( map_(fa, (a) => () => a), fb ) @@ -141,7 +143,7 @@ export const apFirst: (fb: Task) => (fa: Task) => Task = (fb) => * @since 2.0.0 */ export const apSecond: (fb: Task) => (fa: Task) => Task = (fb) => (fa) => - ap_( + apPar_( map_(fa, () => (b) => b), fb ) @@ -176,6 +178,12 @@ export const chainFirst: (f: (a: A) => Task) => (ma: Task) => Task(mma: Task>) => Task = (mma) => chain_(mma, identity) +/** + * @category MonadTask + * @since 2.7.0 + */ +export const fromTask: MonadTask1['fromTask'] = identity + // ------------------------------------------------------------------------------------- // instances // ------------------------------------------------------------------------------------- @@ -198,26 +206,6 @@ declare module './HKT' { } } -/** - * @internal - */ -export const applyTask: Apply1 = { - URI, - map: map_, - ap: ap_ -} - -/** - * @internal - */ -export const monadTask: Monad1 = { - URI, - map: map_, - of, - ap: ap_, - chain: chain_ -} - /** * Lift a semigroup into 'Task', the inner values are concatenated using the provided `Semigroup`. * @@ -283,6 +271,51 @@ export function getRaceMonoid(): Monoid> { } } +/** + * @category instances + * @since 2.7.0 + */ +export const functorTask: Functor1 = { + URI, + map: map_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const applicativeTaskPar: Applicative1 = { + URI, + map: map_, + ap: apPar_, + of +} + +/** + * @category instances + * @since 2.7.0 + */ +export const applicativeTaskSeq: Applicative1 = { + URI, + map: map_, + ap: apSeq_, + of +} + +/** + * Used in TaskEither.getTaskValidation + * + * @internal + */ +export const monadTask: Monad1 = { + URI, + map: map_, + of, + ap: apPar_, + chain: chain_ +} + +// TODO: remove in v3 /** * @category instances * @since 2.0.0 @@ -291,12 +324,13 @@ export const task: Monad1 & MonadTask1 = { URI, map: map_, of, - ap: ap_, + ap: apPar_, chain: chain_, fromIO, - fromTask: identity + fromTask } +// TODO: remove in v3 /** * Like `task` but `ap` is sequential * @@ -307,10 +341,10 @@ export const taskSeq: typeof task = { URI, map: map_, of, - ap: (mab, ma) => () => mab().then((f) => ma().then((a) => f(a))), + ap: apSeq_, chain: chain_, fromIO, - fromTask: identity + fromTask } // ------------------------------------------------------------------------------------- diff --git a/src/TaskEither.ts b/src/TaskEither.ts index 1f8d4c426..5d07579dc 100644 --- a/src/TaskEither.ts +++ b/src/TaskEither.ts @@ -323,7 +323,7 @@ export const mapLeft: (f: (e: E) => G) => (fa: TaskEither) => Tas */ export const ap: (fa: TaskEither) => (fab: TaskEither B>) => TaskEither = /*#__PURE__*/ - apComposition(T.applyTask, E.applyEither) + apComposition(T.applicativeTaskPar, E.applyEither) /** * Combine two effectful actions, keeping only the result of the first. diff --git a/src/TaskThese.ts b/src/TaskThese.ts index 3db4dcfad..c072a7616 100644 --- a/src/TaskThese.ts +++ b/src/TaskThese.ts @@ -201,7 +201,7 @@ export function getSemigroup(SE: Semigroup, SA: Semigroup): Semigrou * @since 2.4.0 */ export function getMonad(S: Semigroup): Monad2C & MonadTask2C { - const ap = apComposition(T.applyTask, TH.getMonad(S)) + const ap = apComposition(T.applicativeTaskPar, TH.getMonad(S)) return { URI, _E: undefined as any, diff --git a/test/Array.ts b/test/Array.ts index dbfe10d5f..bc8103dae 100644 --- a/test/Array.ts +++ b/test/Array.ts @@ -66,13 +66,13 @@ describe('Array', () => { }) it('wither', async () => { - const wither = _.wither(T.task)((n: number) => T.of(n > 2 ? O.some(n + 1) : O.none)) + const wither = _.wither(T.applicativeTaskPar)((n: number) => T.of(n > 2 ? O.some(n + 1) : O.none)) assert.deepStrictEqual(await pipe([], wither)(), []) assert.deepStrictEqual(await pipe([1, 3], wither)(), [4]) }) it('wilt', async () => { - const wilt = _.wilt(T.task)((n: number) => T.of(n > 2 ? E.right(n + 1) : E.left(n - 1))) + const wilt = _.wilt(T.applicativeTaskPar)((n: number) => T.of(n > 2 ? E.right(n + 1) : E.left(n - 1))) assert.deepStrictEqual(await pipe([], wilt)(), { left: [], right: [] }) assert.deepStrictEqual(await pipe([1, 3], wilt)(), { left: [0], right: [4] }) }) diff --git a/test/Either.ts b/test/Either.ts index 63789c0ef..1fe6152f1 100644 --- a/test/Either.ts +++ b/test/Either.ts @@ -453,7 +453,7 @@ describe('Either', () => { }) it('wither', async () => { - const wither = W.wither(T.task) + const wither = W.wither(T.applicativeTaskPar) const f = (n: number) => T.of(p(n) ? O.some(n + 1) : O.none) assert.deepStrictEqual(await wither(_.left('foo'), f)(), _.left('foo')) assert.deepStrictEqual(await wither(_.right(1), f)(), _.left(monoidString.empty)) @@ -461,7 +461,7 @@ describe('Either', () => { }) it('wilt', async () => { - const wilt = W.wilt(T.task) + const wilt = W.wilt(T.applicativeTaskPar) const f = (n: number) => T.of(p(n) ? _.right(n + 1) : _.left(n - 1)) assert.deepStrictEqual(await wilt(_.left('foo'), f)(), { left: _.left('foo'), diff --git a/test/Map.ts b/test/Map.ts index 7b8ba5cba..33642c67a 100644 --- a/test/Map.ts +++ b/test/Map.ts @@ -922,7 +922,7 @@ describe('Map', () => { }) it('wither', async () => { - const wither = W.wither(T.task) + const wither = W.wither(T.applicativeTaskPar) const f = (n: number) => T.of(p(n) ? O.some(n + 1) : O.none) assert.deepStrictEqual(await wither(_.empty, f)(), _.empty) assert.deepStrictEqual( @@ -938,7 +938,7 @@ describe('Map', () => { }) it('wilt', async () => { - const wilt = W.wilt(T.task) + const wilt = W.wilt(T.applicativeTaskPar) const f = (n: number) => T.of(p(n) ? right(n + 1) : left(n - 1)) assert.deepStrictEqual(await wilt(_.empty, f)(), { left: _.empty, right: _.empty }) assert.deepStrictEqual( diff --git a/test/Option.ts b/test/Option.ts index cba583d6d..2498d992a 100644 --- a/test/Option.ts +++ b/test/Option.ts @@ -193,14 +193,14 @@ describe('Option', () => { }) it('wither', async () => { - const wither = _.wither(T.task)((n: number) => T.of(p(n) ? _.some(n + 1) : _.none)) + const wither = _.wither(T.applicativeTaskPar)((n: number) => T.of(p(n) ? _.some(n + 1) : _.none)) assert.deepStrictEqual(await pipe(_.none, wither)(), _.none) assert.deepStrictEqual(await pipe(_.some(1), wither)(), _.none) assert.deepStrictEqual(await pipe(_.some(3), wither)(), _.some(4)) }) it('wilt', async () => { - const wilt = _.wilt(T.task)((n: number) => T.of(p(n) ? right(n + 1) : left(n - 1))) + const wilt = _.wilt(T.applicativeTaskPar)((n: number) => T.of(p(n) ? right(n + 1) : left(n - 1))) assert.deepStrictEqual(await pipe(_.none, wilt)(), { left: _.none, right: _.none }) assert.deepStrictEqual(await pipe(_.some(1), wilt)(), { left: _.some(0), right: _.none }) assert.deepStrictEqual(await pipe(_.some(3), wilt)(), { left: _.none, right: _.some(4) }) diff --git a/test/OptionT.ts b/test/OptionT.ts index 05ec517f8..78c9dfa82 100644 --- a/test/OptionT.ts +++ b/test/OptionT.ts @@ -1,22 +1,22 @@ import * as assert from 'assert' import * as O from '../src/Option' import { getOptionM } from '../src/OptionT' -import { task } from '../src/Task' +import * as T from '../src/Task' -const T = getOptionM(task) +const MT = getOptionM(T.monadTask) describe('OptionT', () => { it('map', () => { - const greetingT = T.of('welcome') - const excitedGreetingT = T.map(greetingT, (s) => s + '!') + const greetingT = MT.of('welcome') + const excitedGreetingT = MT.map(greetingT, (s) => s + '!') return excitedGreetingT().then((o) => { assert.deepStrictEqual(o, O.some('welcome!')) }) }) it('chain', () => { - const to1 = T.chain(T.of('foo'), (a) => T.of(a.length)) - const to2 = T.chain(task.of(O.none), (a: string) => T.of(a.length)) + const to1 = MT.chain(MT.of('foo'), (a) => MT.of(a.length)) + const to2 = MT.chain(T.of(O.none), (a: string) => MT.of(a.length)) return Promise.all([to1(), to2()]).then(([o1, o2]) => { assert.deepStrictEqual(o1, O.some(3)) assert.deepStrictEqual(o2, O.none) @@ -24,36 +24,36 @@ describe('OptionT', () => { }) it('fold', async () => { - const f = () => task.of('none') - const g = (s: string) => task.of(`some${s.length}`) - const s1 = await T.fold(task.of(O.none), f, g)() + const f = () => T.of('none') + const g = (s: string) => T.of(`some${s.length}`) + const s1 = await MT.fold(T.of(O.none), f, g)() assert.deepStrictEqual(s1, 'none') - const s2 = await T.fold(T.of('s'), f, g)() + const s2 = await MT.fold(MT.of('s'), f, g)() assert.deepStrictEqual(s2, 'some1') }) it('alt', async () => { - const o1 = await T.alt(task.of(O.some(1)), () => task.of(O.some(2)))() + const o1 = await MT.alt(T.of(O.some(1)), () => T.of(O.some(2)))() assert.deepStrictEqual(o1, O.some(1)) - const o2 = await T.alt(task.of(O.none), () => task.of(O.some(2)))() + const o2 = await MT.alt(T.of(O.none), () => T.of(O.some(2)))() assert.deepStrictEqual(o2, O.some(2)) }) it('getOrElse', async () => { - const n1 = await T.getOrElse(task.of(O.some(1)), () => task.of(2))() + const n1 = await MT.getOrElse(T.of(O.some(1)), () => T.of(2))() assert.deepStrictEqual(n1, 1) - const n2 = await T.getOrElse(task.of(O.none), () => task.of(2))() + const n2 = await MT.getOrElse(T.of(O.none), () => T.of(2))() assert.deepStrictEqual(n2, 2) }) it('fromM', () => { - return T.fromM(task.of(1))().then((o) => { + return MT.fromM(T.of(1))().then((o) => { assert.deepStrictEqual(o, O.some(1)) }) }) it('none', () => { - return T.none()().then((o) => { + return MT.none()().then((o) => { assert.deepStrictEqual(o, O.none) }) }) diff --git a/test/ReaderTaskEither.ts b/test/ReaderTaskEither.ts index 7ecae9b70..1a22b62bf 100644 --- a/test/ReaderTaskEither.ts +++ b/test/ReaderTaskEither.ts @@ -10,9 +10,9 @@ import * as R from '../src/Reader' import * as RE from '../src/ReaderEither' import * as _ from '../src/ReaderTaskEither' import { semigroupString, semigroupSum } from '../src/Semigroup' -import { task } from '../src/Task' +import * as T from '../src/Task' import * as TE from '../src/TaskEither' -import { readerTask } from '../src' +import * as RT from '../src/ReaderTask' describe('ReaderTaskEither', () => { describe('pipeables', () => { @@ -183,22 +183,22 @@ describe('ReaderTaskEither', () => { }) it('leftTask', async () => { - const e = await _.run(_.leftTask(task.of(1)), {}) + const e = await _.run(_.leftTask(T.of(1)), {}) assert.deepStrictEqual(e, E.left(1)) }) it('rightTask', async () => { - const e = await _.run(_.rightTask(task.of(1)), {}) + const e = await _.run(_.rightTask(T.of(1)), {}) assert.deepStrictEqual(e, E.right(1)) }) it('leftReaderTask', async () => { - const e = await _.run(_.leftReaderTask(readerTask.of(1)), {}) + const e = await _.run(_.leftReaderTask(RT.of(1)), {}) assert.deepStrictEqual(e, E.left(1)) }) it('rightReaderTask', async () => { - const e = await _.run(_.rightReaderTask(readerTask.of(1)), {}) + const e = await _.run(_.rightReaderTask(RT.of(1)), {}) assert.deepStrictEqual(e, E.right(1)) }) @@ -237,8 +237,8 @@ describe('ReaderTaskEither', () => { it('fold', async () => { const fold = _.fold( - (l: string) => R.of(task.of(l.length)), - (a: number) => R.of(task.of(a * 2)) + (l: string) => R.of(T.of(l.length)), + (a: number) => R.of(T.of(a * 2)) ) const e1 = await fold(_.right(1))({})() assert.deepStrictEqual(e1, 2) @@ -249,12 +249,12 @@ describe('ReaderTaskEither', () => { it('getOrElse', async () => { const e1 = await pipe( _.right(1), - _.getOrElse((l: string) => R.of(task.of(l.length))) + _.getOrElse((l: string) => R.of(T.of(l.length))) )({})() assert.deepStrictEqual(e1, 1) const e2 = await pipe( _.left('err'), - _.getOrElse((l: string) => R.of(task.of(l.length))) + _.getOrElse((l: string) => R.of(T.of(l.length))) )({})() assert.deepStrictEqual(e2, 3) }) diff --git a/test/ReadonlyArray.ts b/test/ReadonlyArray.ts index e0673168c..aa90752cb 100644 --- a/test/ReadonlyArray.ts +++ b/test/ReadonlyArray.ts @@ -64,13 +64,13 @@ describe('ReadonlyArray', () => { }) it('wither', async () => { - const wither = _.wither(T.task)((n: number) => T.of(n > 2 ? O.some(n + 1) : O.none)) + const wither = _.wither(T.applicativeTaskPar)((n: number) => T.of(n > 2 ? O.some(n + 1) : O.none)) assert.deepStrictEqual(await pipe([], wither)(), []) assert.deepStrictEqual(await pipe([1, 3], wither)(), [4]) }) it('wilt', async () => { - const wilt = _.wilt(T.task)((n: number) => T.of(n > 2 ? E.right(n + 1) : E.left(n - 1))) + const wilt = _.wilt(T.applicativeTaskPar)((n: number) => T.of(n > 2 ? E.right(n + 1) : E.left(n - 1))) assert.deepStrictEqual(await pipe([], wilt)(), { left: [], right: [] }) assert.deepStrictEqual(await pipe([1, 3], wilt)(), { left: [0], right: [4] }) }) diff --git a/test/ReadonlyMap.ts b/test/ReadonlyMap.ts index 3587dee04..10adbaf43 100644 --- a/test/ReadonlyMap.ts +++ b/test/ReadonlyMap.ts @@ -958,7 +958,7 @@ describe('ReadonlyMap', () => { }) it('wither', async () => { - const wither = W.wither(T.task) + const wither = W.wither(T.applicativeTaskPar) const f = (n: number) => T.of(p(n) ? O.some(n + 1) : O.none) assert.deepStrictEqual(await wither(_.empty, f)(), _.empty) assert.deepStrictEqual( @@ -974,7 +974,7 @@ describe('ReadonlyMap', () => { }) it('wilt', async () => { - const wilt = W.wilt(T.task) + const wilt = W.wilt(T.applicativeTaskPar) const f = (n: number) => T.of(p(n) ? right(n + 1) : left(n - 1)) assert.deepStrictEqual(await wilt(_.empty, f)(), { left: _.empty, right: _.empty }) assert.deepStrictEqual( diff --git a/test/ReadonlyRecord.ts b/test/ReadonlyRecord.ts index 32b00a64a..e9aaed456 100644 --- a/test/ReadonlyRecord.ts +++ b/test/ReadonlyRecord.ts @@ -214,13 +214,13 @@ describe('ReadonlyRecord', () => { }) it('wither', async () => { - const wither = _.wither(T.task)((n: number) => T.of(p(n) ? O.some(n + 1) : O.none)) + const wither = _.wither(T.applicativeTaskPar)((n: number) => T.of(p(n) ? O.some(n + 1) : O.none)) assert.deepStrictEqual(await pipe({}, wither)(), {}) assert.deepStrictEqual(await pipe({ a: 1, b: 3 }, wither)(), { b: 4 }) }) it('wilt', async () => { - const wilt = _.wilt(T.task)((n: number) => T.of(p(n) ? right(n + 1) : left(n - 1))) + const wilt = _.wilt(T.applicativeTaskPar)((n: number) => T.of(p(n) ? right(n + 1) : left(n - 1))) assert.deepStrictEqual(await pipe({}, wilt)(), { left: {}, right: {} }) assert.deepStrictEqual(await pipe({ a: 1, b: 3 }, wilt)(), { left: { a: 0 }, right: { b: 4 } }) }) diff --git a/test/Record.ts b/test/Record.ts index 98792e6b1..20c4ede93 100644 --- a/test/Record.ts +++ b/test/Record.ts @@ -42,13 +42,13 @@ describe('Record', () => { }) it('wither', async () => { - const wither = _.wither(T.task)((n: number) => T.of(p(n) ? O.some(n + 1) : O.none)) + const wither = _.wither(T.applicativeTaskPar)((n: number) => T.of(p(n) ? O.some(n + 1) : O.none)) assert.deepStrictEqual(await pipe({}, wither)(), {}) assert.deepStrictEqual(await pipe({ a: 1, b: 3 }, wither)(), { b: 4 }) }) it('wilt', async () => { - const wilt = _.wilt(T.task)((n: number) => T.of(p(n) ? right(n + 1) : left(n - 1))) + const wilt = _.wilt(T.applicativeTaskPar)((n: number) => T.of(p(n) ? right(n + 1) : left(n - 1))) assert.deepStrictEqual(await pipe({}, wilt)(), { left: {}, right: {} }) assert.deepStrictEqual(await pipe({ a: 1, b: 3 }, wilt)(), { left: { a: 0 }, right: { b: 4 } }) }) diff --git a/test/StateReaderTaskEither.ts b/test/StateReaderTaskEither.ts index 48631c47c..50491d467 100644 --- a/test/StateReaderTaskEither.ts +++ b/test/StateReaderTaskEither.ts @@ -9,7 +9,7 @@ import * as RE from '../src/ReaderEither' import * as RTE from '../src/ReaderTaskEither' import { State } from '../src/State' import * as _ from '../src/StateReaderTaskEither' -import { task } from '../src/Task' +import * as T from '../src/Task' import * as TE from '../src/TaskEither' import * as A from '../src/Array' @@ -208,12 +208,12 @@ describe('StateReaderTaskEither', () => { }) it('rightTask', async () => { - const e = await _.run(_.rightTask(task.of(1)), {}, {}) + const e = await _.run(_.rightTask(T.of(1)), {}, {}) assert.deepStrictEqual(e, E.right([1, {}])) }) it('leftTask', async () => { - const e = await _.run(_.leftTask(task.of(1)), {}, {}) + const e = await _.run(_.leftTask(T.of(1)), {}, {}) assert.deepStrictEqual(e, E.left(1)) }) diff --git a/test/Task.ts b/test/Task.ts index 949006042..740960547 100644 --- a/test/Task.ts +++ b/test/Task.ts @@ -10,7 +10,7 @@ const delayReject = (n: number, a: A): _.Task => () => setTimeout(() => reject(a), n) }) -const delay = (millis: number, a: A): _.Task => _.delay(millis)(_.task.of(a)) +const delay = (millis: number, a: A): _.Task => _.delay(millis)(_.of(a)) describe('Task', () => { describe('pipeables', () => { @@ -100,13 +100,19 @@ describe('Task', () => { }) }) - it('taskSeq', async () => { + it('applicativeTaskSeq', async () => { // tslint:disable-next-line: readonly-array const log: Array = [] const append = (message: string): _.Task => () => Promise.resolve(log.push(message)) - const t1 = _.task.chain(append('start 1'), () => append('end 1')) - const t2 = _.task.chain(append('start 2'), () => append('end 2')) - const sequenceSeries = A.sequence(_.taskSeq) + const t1 = pipe( + append('start 1'), + _.chain(() => append('end 1')) + ) + const t2 = pipe( + append('start 2'), + _.chain(() => append('end 2')) + ) + const sequenceSeries = A.sequence(_.applicativeTaskSeq) const x = await sequenceSeries([t1, t2])() assert.deepStrictEqual(x, [2, 4]) assert.deepStrictEqual(log, ['start 1', 'end 1', 'start 2', 'end 2']) @@ -114,15 +120,15 @@ describe('Task', () => { it('fromIO', async () => { const io = () => 1 - const task = _.task.fromIO(io) + const task = _.fromIO(io) const x = await task() assert.deepStrictEqual(x, 1) }) it('fromTask', async () => { const io = () => 1 - const t = _.task.fromIO(io) - assert.deepStrictEqual(_.task.fromTask(t), t) + const t = _.fromIO(io) + assert.deepStrictEqual(_.fromTask(t), t) }) it('chainIOK', async () => { From e8fd28c7b28ab04c942c3f09afa16949f69f97a7 Mon Sep 17 00:00:00 2001 From: gcanti Date: Thu, 18 Jun 2020 16:05:16 +0200 Subject: [PATCH 062/106] split `taskEither` mega instance --- CHANGELOG.md | 6 ++ docs/modules/TaskEither.ts.md | 112 +++++++++++++++++++++++++------- src/TaskEither.ts | 118 +++++++++++++++++++++++++--------- test/ReaderTaskEither.ts | 2 +- test/StateReaderTaskEither.ts | 2 +- test/TaskEither.ts | 13 ++-- 6 files changed, 191 insertions(+), 62 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4047e19c9..9f053023f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -148,6 +148,12 @@ high state of flux, you're at risk of it changing without notice. - add `functorTask` instance (@gcanti) - add `applicativeTaskPar` instance (@gcanti) - add `applicativeTaskSeq` instance (@gcanti) + - `TaskEither` + - add `functorTaskEither` instance (@gcanti) + - add `applicativeTaskEitherPar` instance (@gcanti) + - add `applicativeTaskEitherSeq` instance (@gcanti) + - add `bifunctorTaskEither` instance (@gcanti) + - add `altTaskEither` instance (@gcanti) - `ReadonlyArray` - add `functorArray` instance (@gcanti) - add `functorWithIndexArray` instance (@gcanti) diff --git a/docs/modules/TaskEither.ts.md b/docs/modules/TaskEither.ts.md index 130ae4db4..cd709739f 100644 --- a/docs/modules/TaskEither.ts.md +++ b/docs/modules/TaskEither.ts.md @@ -17,6 +17,8 @@ Added in v2.0.0 - [Alt](#alt) - [alt](#alt) +- [Applicative](#applicative) + - [of](#of) - [Apply](#apply) - [ap](#ap) - [apFirst](#apfirst) @@ -31,8 +33,6 @@ Added in v2.0.0 - [chainFirst](#chainfirst) - [chainW](#chainw) - [flatten](#flatten) -- [MonadThrow](#monadthrow) - - [bracket](#bracket) - [combinators](#combinators) - [chainEitherK](#chaineitherk) - [chainEitherKW](#chaineitherkw) @@ -63,6 +63,11 @@ Added in v2.0.0 - [instances](#instances) - [URI](#uri) - [URI (type alias)](#uri-type-alias) + - [altTaskEither](#alttaskeither) + - [applicativeTaskEitherPar](#applicativetaskeitherpar) + - [applicativeTaskEitherSeq](#applicativetaskeitherseq) + - [bifunctorTaskEither](#bifunctortaskeither) + - [functorTaskEither](#functortaskeither) - [getApplyMonoid](#getapplymonoid) - [getApplySemigroup](#getapplysemigroup) - [getFilterable](#getfilterable) @@ -73,6 +78,7 @@ Added in v2.0.0 - [model](#model) - [TaskEither (interface)](#taskeither-interface) - [utils](#utils) + - [bracket](#bracket) - [taskify](#taskify) --- @@ -130,6 +136,18 @@ test() Added in v2.0.0 +# Applicative + +## of + +**Signature** + +```ts +export declare const of: (a: A) => TaskEither +``` + +Added in v2.0.0 + # Apply ## ap @@ -260,27 +278,6 @@ export declare const flatten: (mma: TaskEither>) => Ta Added in v2.0.0 -# MonadThrow - -## bracket - -Make sure that a resource is cleaned up in the event of an exception (\*). The release action is called regardless of -whether the body action throws (\*) or returns. - -(\*) i.e. returns a `Left` - -**Signature** - -```ts -export declare const bracket: ( - acquire: TaskEither, - use: (a: A) => TaskEither, - release: (a: A, e: E.Either) => TaskEither -) => TaskEither -``` - -Added in v2.0.0 - # combinators ## chainEitherK @@ -617,6 +614,56 @@ export type URI = typeof URI Added in v2.0.0 +## altTaskEither + +**Signature** + +```ts +export declare const altTaskEither: Alt2<'TaskEither'> +``` + +Added in v2.0.0 + +## applicativeTaskEitherPar + +**Signature** + +```ts +export declare const applicativeTaskEitherPar: Applicative2<'TaskEither'> +``` + +Added in v2.0.0 + +## applicativeTaskEitherSeq + +**Signature** + +```ts +export declare const applicativeTaskEitherSeq: Applicative2<'TaskEither'> +``` + +Added in v2.0.0 + +## bifunctorTaskEither + +**Signature** + +```ts +export declare const bifunctorTaskEither: Bifunctor2<'TaskEither'> +``` + +Added in v2.0.0 + +## functorTaskEither + +**Signature** + +```ts +export declare const functorTaskEither: Functor2<'TaskEither'> +``` + +Added in v2.0.0 + ## getApplyMonoid **Signature** @@ -719,6 +766,25 @@ Added in v2.0.0 # utils +## bracket + +Make sure that a resource is cleaned up in the event of an exception (\*). The release action is called regardless of +whether the body action throws (\*) or returns. + +(\*) i.e. returns a `Left` + +**Signature** + +```ts +export declare const bracket: ( + acquire: TaskEither, + use: (a: A) => TaskEither, + release: (a: A, e: E.Either) => TaskEither +) => TaskEither +``` + +Added in v2.0.0 + ## taskify Convert a node style callback function to one returning a `TaskEither` diff --git a/src/TaskEither.ts b/src/TaskEither.ts index 5d07579dc..ffea29bec 100644 --- a/src/TaskEither.ts +++ b/src/TaskEither.ts @@ -27,6 +27,8 @@ import { getValidationM } from './ValidationT' import Either = E.Either import Task = T.Task +import { Functor2 } from './Functor' +import { Applicative2 } from './Applicative' /** * @category model @@ -437,33 +439,10 @@ export const alt: (that: Lazy>) => (fa: TaskEither) T.chain(E.fold(that, right)) /** - * Make sure that a resource is cleaned up in the event of an exception (\*). The release action is called regardless of - * whether the body action throws (\*) or returns. - * - * (\*) i.e. returns a `Left` - * - * @category MonadThrow + * @category Applicative * @since 2.0.0 */ -export const bracket = ( - acquire: TaskEither, - use: (a: A) => TaskEither, - release: (a: A, e: Either) => TaskEither -): TaskEither => - pipe( - acquire, - chain((a) => - pipe( - pipe(use(a), T.map(E.right)), - chain((e) => - pipe( - release(a, e), - chain(() => (E.isLeft(e) ? left(e.left) : of(e.right))) - ) - ) - ) - ) - ) +export const of: Applicative2['of'] = right // ------------------------------------------------------------------------------------- // instances @@ -492,8 +471,8 @@ const map_: Monad2['map'] = (fa, f) => pipe(fa, map(f)) const bimap_: Bifunctor2['bimap'] = (fa, f, g) => pipe(fa, bimap(f, g)) /* istanbul ignore next */ const mapLeft_: Bifunctor2['mapLeft'] = (fa, f) => pipe(fa, mapLeft(f)) -const ap_: Monad2['ap'] = (fab, fa) => pipe(fab, ap(fa)) -const of = right +const apPar_: Monad2['ap'] = (fab, fa) => pipe(fab, ap(fa)) +const apSeq_: Applicative2['ap'] = (fab, fa) => chain_(fab, (f) => map_(fa, f)) const chain_: Monad2['chain'] = (ma, f) => pipe(ma, chain(f)) /* istanbul ignore next */ const alt_: Alt2['alt'] = (fa, that) => pipe(fa, alt(that)) @@ -579,6 +558,58 @@ export function getFilterable(M: Monoid): Filterable2C { } } +/** + * @category instances + * @since 2.0.0 + */ +export const functorTaskEither: Functor2 = { + URI, + map: map_ +} + +/** + * @category instances + * @since 2.0.0 + */ +export const applicativeTaskEitherPar: Applicative2 = { + URI, + map: map_, + ap: apPar_, + of +} + +/** + * @category instances + * @since 2.0.0 + */ +export const applicativeTaskEitherSeq: Applicative2 = { + URI, + map: map_, + ap: apSeq_, + of +} + +/** + * @category instances + * @since 2.0.0 + */ +export const bifunctorTaskEither: Bifunctor2 = { + URI, + bimap: bimap_, + mapLeft: mapLeft_ +} + +/** + * @category instances + * @since 2.0.0 + */ +export const altTaskEither: Alt2 = { + URI, + map: map_, + alt: alt_ +} + +// TODO: remove in v3 /** * @category instances * @since 2.0.0 @@ -589,7 +620,7 @@ export const taskEither: Monad2 & Bifunctor2 & Alt2 & MonadTask2< mapLeft: mapLeft_, map: map_, of: of, - ap: ap_, + ap: apPar_, chain: chain_, alt: alt_, fromIO: fromIO_, @@ -597,6 +628,7 @@ export const taskEither: Monad2 & Bifunctor2 & Alt2 & MonadTask2< throwError: throwError_ } +// TODO: remove in v3 /** * Like `TaskEither` but `ap` is sequential * @@ -609,7 +641,7 @@ export const taskEitherSeq: typeof taskEither = { mapLeft: mapLeft_, map: map_, of, - ap: (mab, ma) => chain_(mab, (f) => map_(ma, f)), + ap: apSeq_, chain: chain_, alt: alt_, fromIO: fromIO_, @@ -674,3 +706,31 @@ export function taskify(f: Function): () => TaskEither { }) } } + +/** + * Make sure that a resource is cleaned up in the event of an exception (\*). The release action is called regardless of + * whether the body action throws (\*) or returns. + * + * (\*) i.e. returns a `Left` + * + * @since 2.0.0 + */ +export const bracket = ( + acquire: TaskEither, + use: (a: A) => TaskEither, + release: (a: A, e: Either) => TaskEither +): TaskEither => + pipe( + acquire, + chain((a) => + pipe( + pipe(use(a), T.map(E.right)), + chain((e) => + pipe( + release(a, e), + chain(() => (E.isLeft(e) ? left(e.left) : of(e.right))) + ) + ) + ) + ) + ) diff --git a/test/ReaderTaskEither.ts b/test/ReaderTaskEither.ts index 1a22b62bf..8de9d8fbc 100644 --- a/test/ReaderTaskEither.ts +++ b/test/ReaderTaskEither.ts @@ -213,7 +213,7 @@ describe('ReaderTaskEither', () => { }) it('fromTaskEither', async () => { - const e = await _.run(_.fromTaskEither(TE.taskEither.of(1)), {}) + const e = await _.run(_.fromTaskEither(TE.of(1)), {}) assert.deepStrictEqual(e, E.right(1)) }) diff --git a/test/StateReaderTaskEither.ts b/test/StateReaderTaskEither.ts index 50491d467..381322fe1 100644 --- a/test/StateReaderTaskEither.ts +++ b/test/StateReaderTaskEither.ts @@ -218,7 +218,7 @@ describe('StateReaderTaskEither', () => { }) it('fromTaskEither', async () => { - const e = await _.run(_.fromTaskEither(TE.taskEither.of(1)), {}, {}) + const e = await _.run(_.fromTaskEither(TE.of(1)), {}, {}) assert.deepStrictEqual(e, E.right([1, {}])) }) diff --git a/test/TaskEither.ts b/test/TaskEither.ts index 758942562..0f7f7d386 100644 --- a/test/TaskEither.ts +++ b/test/TaskEither.ts @@ -296,7 +296,7 @@ describe('TaskEither', () => { }) }) - it('sequence parallel', async () => { + it('applicativeTaskEitherPar', async () => { // tslint:disable-next-line: readonly-array const log: Array = [] const append = (message: string): _.TaskEither => @@ -309,13 +309,13 @@ describe('TaskEither', () => { append('start 2'), _.chain(() => append('end 2')) ) - const sequenceParallel = A.sequence(_.taskEither) + const sequenceParallel = A.sequence(_.applicativeTaskEitherPar) const x = await sequenceParallel([t1, t2])() assert.deepStrictEqual(x, E.right([3, 4])) assert.deepStrictEqual(log, ['start 1', 'start 2', 'end 1', 'end 2']) }) - it('sequence series', async () => { + it('applicativeTaskEitherSeq', async () => { // tslint:disable-next-line: readonly-array const log: Array = [] const append = (message: string): _.TaskEither => @@ -328,7 +328,7 @@ describe('TaskEither', () => { append('start 2'), _.chain(() => append('end 2')) ) - const sequenceSeries = A.sequence(_.taskEitherSeq) + const sequenceSeries = A.sequence(_.applicativeTaskEitherSeq) const x = await sequenceSeries([t1, t2])() assert.deepStrictEqual(x, E.right([2, 4])) assert.deepStrictEqual(log, ['start 1', 'end 1', 'start 2', 'end 2']) @@ -371,10 +371,7 @@ describe('TaskEither', () => { }) describe('getFilterable', () => { - const F_ = { - ..._.taskEither, - ..._.getFilterable(A.getMonoid()) - } + const F_ = _.getFilterable(A.getMonoid()) const { filter } = pipeable(F_) it('filter', async () => { From d09d8595931615ac8dab7f5a0ce5236838823c67 Mon Sep 17 00:00:00 2001 From: gcanti Date: Thu, 18 Jun 2020 16:13:52 +0200 Subject: [PATCH 063/106] split `taskThese` mega instance --- CHANGELOG.md | 3 +++ docs/modules/TaskEither.ts.md | 10 +++++----- docs/modules/TaskThese.ts.md | 22 ++++++++++++++++++++++ src/TaskEither.ts | 10 +++++----- src/TaskThese.ts | 20 ++++++++++++++++++++ 5 files changed, 55 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9f053023f..102c3628f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -154,6 +154,9 @@ high state of flux, you're at risk of it changing without notice. - add `applicativeTaskEitherSeq` instance (@gcanti) - add `bifunctorTaskEither` instance (@gcanti) - add `altTaskEither` instance (@gcanti) + - `TaskThese` + - add `functorTaskThese` instance (@gcanti) + - add `bifunctorTaskThese` instance (@gcanti) - `ReadonlyArray` - add `functorArray` instance (@gcanti) - add `functorWithIndexArray` instance (@gcanti) diff --git a/docs/modules/TaskEither.ts.md b/docs/modules/TaskEither.ts.md index cd709739f..cb963bf6c 100644 --- a/docs/modules/TaskEither.ts.md +++ b/docs/modules/TaskEither.ts.md @@ -622,7 +622,7 @@ Added in v2.0.0 export declare const altTaskEither: Alt2<'TaskEither'> ``` -Added in v2.0.0 +Added in v2.7.0 ## applicativeTaskEitherPar @@ -632,7 +632,7 @@ Added in v2.0.0 export declare const applicativeTaskEitherPar: Applicative2<'TaskEither'> ``` -Added in v2.0.0 +Added in v2.7.0 ## applicativeTaskEitherSeq @@ -642,7 +642,7 @@ Added in v2.0.0 export declare const applicativeTaskEitherSeq: Applicative2<'TaskEither'> ``` -Added in v2.0.0 +Added in v2.7.0 ## bifunctorTaskEither @@ -652,7 +652,7 @@ Added in v2.0.0 export declare const bifunctorTaskEither: Bifunctor2<'TaskEither'> ``` -Added in v2.0.0 +Added in v2.7.0 ## functorTaskEither @@ -662,7 +662,7 @@ Added in v2.0.0 export declare const functorTaskEither: Functor2<'TaskEither'> ``` -Added in v2.0.0 +Added in v2.7.0 ## getApplyMonoid diff --git a/docs/modules/TaskThese.ts.md b/docs/modules/TaskThese.ts.md index fe5e95604..b3ae20cdc 100644 --- a/docs/modules/TaskThese.ts.md +++ b/docs/modules/TaskThese.ts.md @@ -34,6 +34,8 @@ Added in v2.4.0 - [instances](#instances) - [URI](#uri) - [URI (type alias)](#uri-type-alias) + - [bifunctorTaskThese](#bifunctortaskthese) + - [functorTaskThese](#functortaskthese) - [getMonad](#getmonad) - [getSemigroup](#getsemigroup) - [taskThese](#taskthese) @@ -225,6 +227,26 @@ export type URI = typeof URI Added in v2.4.0 +## bifunctorTaskThese + +**Signature** + +```ts +export declare const bifunctorTaskThese: Bifunctor2<'TaskThese'> +``` + +Added in v2.7.0 + +## functorTaskThese + +**Signature** + +```ts +export declare const functorTaskThese: Functor2<'TaskThese'> +``` + +Added in v2.7.0 + ## getMonad **Signature** diff --git a/src/TaskEither.ts b/src/TaskEither.ts index ffea29bec..6caba8166 100644 --- a/src/TaskEither.ts +++ b/src/TaskEither.ts @@ -560,7 +560,7 @@ export function getFilterable(M: Monoid): Filterable2C { /** * @category instances - * @since 2.0.0 + * @since 2.7.0 */ export const functorTaskEither: Functor2 = { URI, @@ -569,7 +569,7 @@ export const functorTaskEither: Functor2 = { /** * @category instances - * @since 2.0.0 + * @since 2.7.0 */ export const applicativeTaskEitherPar: Applicative2 = { URI, @@ -580,7 +580,7 @@ export const applicativeTaskEitherPar: Applicative2 = { /** * @category instances - * @since 2.0.0 + * @since 2.7.0 */ export const applicativeTaskEitherSeq: Applicative2 = { URI, @@ -591,7 +591,7 @@ export const applicativeTaskEitherSeq: Applicative2 = { /** * @category instances - * @since 2.0.0 + * @since 2.7.0 */ export const bifunctorTaskEither: Bifunctor2 = { URI, @@ -601,7 +601,7 @@ export const bifunctorTaskEither: Bifunctor2 = { /** * @category instances - * @since 2.0.0 + * @since 2.7.0 */ export const altTaskEither: Alt2 = { URI, diff --git a/src/TaskThese.ts b/src/TaskThese.ts index c072a7616..7358e5ab7 100644 --- a/src/TaskThese.ts +++ b/src/TaskThese.ts @@ -231,6 +231,26 @@ export function getMonad(S: Semigroup): Monad2C & MonadTask2C = { + URI, + map: map_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const bifunctorTaskThese: Bifunctor2 = { + URI, + bimap: bimap_, + mapLeft: mapLeft_ +} + +// TODO: remove in v3 /** * @category instances * @since 2.4.0 From 613707b3e670e56dc6df1903ecbf633f235e05e5 Mon Sep 17 00:00:00 2001 From: gcanti Date: Thu, 18 Jun 2020 16:21:23 +0200 Subject: [PATCH 064/106] split `these` mega instance --- CHANGELOG.md | 5 +++ docs/modules/These.ts.md | 44 +++++++++++++++++++++++ src/These.ts | 75 ++++++++++++++++++++++++++++++---------- 3 files changed, 106 insertions(+), 18 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 102c3628f..f160766e9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -157,6 +157,11 @@ high state of flux, you're at risk of it changing without notice. - `TaskThese` - add `functorTaskThese` instance (@gcanti) - add `bifunctorTaskThese` instance (@gcanti) + - `These` + - add `functorThese` instance (@gcanti) + - add `bifunctorThese` instance (@gcanti) + - add `foldableThese` instance (@gcanti) + - add `traversableThese` instance (@gcanti) - `ReadonlyArray` - add `functorArray` instance (@gcanti) - add `functorWithIndexArray` instance (@gcanti) diff --git a/docs/modules/These.ts.md b/docs/modules/These.ts.md index 1a5c60f6e..5749fb48d 100644 --- a/docs/modules/These.ts.md +++ b/docs/modules/These.ts.md @@ -62,11 +62,15 @@ Added in v2.0.0 - [instances](#instances) - [URI](#uri) - [URI (type alias)](#uri-type-alias) + - [bifunctorThese](#bifunctorthese) + - [foldableThese](#foldablethese) + - [functorThese](#functorthese) - [getEq](#geteq) - [getMonad](#getmonad) - [getSemigroup](#getsemigroup) - [getShow](#getshow) - [these](#these) + - [traversableThese](#traversablethese) - [model](#model) - [Both (interface)](#both-interface) - [These (type alias)](#these-type-alias) @@ -445,6 +449,36 @@ export type URI = typeof URI Added in v2.0.0 +## bifunctorThese + +**Signature** + +```ts +export declare const bifunctorThese: Bifunctor2<'These'> +``` + +Added in v2.7.0 + +## foldableThese + +**Signature** + +```ts +export declare const foldableThese: Foldable2<'These'> +``` + +Added in v2.7.0 + +## functorThese + +**Signature** + +```ts +export declare const functorThese: Functor2<'These'> +``` + +Added in v2.7.0 + ## getEq **Signature** @@ -495,6 +529,16 @@ export declare const these: Functor2<'These'> & Bifunctor2<'These'> & Foldable2< Added in v2.0.0 +## traversableThese + +**Signature** + +```ts +export declare const traversableThese: Traversable2<'These'> +``` + +Added in v2.7.0 + # model ## Both (interface) diff --git a/src/These.ts b/src/These.ts index 2543c3850..672df6807 100644 --- a/src/These.ts +++ b/src/These.ts @@ -374,21 +374,19 @@ export function fromOptions(fe: Option, fa: Option): Option(fa: These, f: (a: A) => B) => These = (fa, f) => isLeft(fa) ? fa : isRight(fa) ? right(f(fa.right)) : both(fa.left, f(fa.right)) - const bimap_: (fea: These, f: (e: E) => G, g: (a: A) => B) => These = (fea, f, g) => isLeft(fea) ? left(f(fea.left)) : isRight(fea) ? right(g(fea.right)) : both(f(fea.left), g(fea.right)) - const mapLeft_: (fea: These, f: (e: E) => G) => These = (fea, f) => isLeft(fea) ? left(f(fea.left)) : isBoth(fea) ? both(f(fea.left), fea.right) : fea - const reduce_: (fa: These, b: B, f: (b: B, a: A) => B) => B = (fa, b, f) => isLeft(fa) ? b : isRight(fa) ? f(b, fa.right) : f(b, fa.right) - const foldMap_: (M: Monoid) => (fa: These, f: (a: A) => M) => M = (M) => (fa, f) => isLeft(fa) ? M.empty : isRight(fa) ? f(fa.right) : f(fa.right) - const reduceRight_: (fa: These, b: B, f: (a: A, b: B) => B) => B = (fa, b, f) => isLeft(fa) ? b : isRight(fa) ? f(fa.right, b) : f(fa.right, b) +const traverse_ = (F: Applicative) => (ta: These, f: (a: A) => HKT): HKT> => { + return isLeft(ta) ? F.of(ta) : isRight(ta) ? F.map(f(ta.right), right) : F.map(f(ta.right), (b) => both(ta.left, b)) +} /** * Map a pair of functions over the two type arguments of the bifunctor. @@ -439,6 +437,25 @@ export const reduce: (b: B, f: (b: B, a: A) => B) => (fa: These) export const reduceRight: (b: B, f: (a: A, b: B) => B) => (fa: These) => B = (b, f) => (fa) => reduceRight_(fa, b, f) +/** + * @since 2.6.3 + */ +export const traverse: PipeableTraverse2 = ( + F: Applicative +): ((f: (a: A) => HKT) => (ta: These) => HKT>) => { + const traverseF = traverse_(F) + return (f) => (ta) => traverseF(ta, f) +} + +/** + * @since 2.6.3 + */ +export const sequence: Traversable2['sequence'] = (F: Applicative) => ( + ta: These> +): HKT> => { + return isLeft(ta) ? F.of(ta) : isRight(ta) ? F.map(ta.right, right) : F.map(ta.right, (b) => both(ta.left, b)) +} + // ------------------------------------------------------------------------------------- // instances // ------------------------------------------------------------------------------------- @@ -461,29 +478,51 @@ declare module './HKT' { } } -const traverse_ = (F: Applicative) => (ta: These, f: (a: A) => HKT): HKT> => { - return isLeft(ta) ? F.of(ta) : isRight(ta) ? F.map(f(ta.right), right) : F.map(f(ta.right), (b) => both(ta.left, b)) +/** + * @category instances + * @since 2.7.0 + */ +export const functorThese: Functor2 = { + URI, + map: map_ } /** - * @since 2.6.3 + * @category instances + * @since 2.7.0 */ -export const traverse: PipeableTraverse2 = ( - F: Applicative -): ((f: (a: A) => HKT) => (ta: These) => HKT>) => { - const traverseF = traverse_(F) - return (f) => (ta) => traverseF(ta, f) +export const bifunctorThese: Bifunctor2 = { + URI, + bimap: bimap_, + mapLeft: mapLeft_ } /** - * @since 2.6.3 + * @category instances + * @since 2.7.0 */ -export const sequence: Traversable2['sequence'] = (F: Applicative) => ( - ta: These> -): HKT> => { - return isLeft(ta) ? F.of(ta) : isRight(ta) ? F.map(ta.right, right) : F.map(ta.right, (b) => both(ta.left, b)) +export const foldableThese: Foldable2 = { + URI, + reduce: reduce_, + foldMap: foldMap_, + reduceRight: reduceRight_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const traversableThese: Traversable2 = { + URI, + map: map_, + reduce: reduce_, + foldMap: foldMap_, + reduceRight: reduceRight_, + traverse: traverse_, + sequence } +// TODO: remove in v3 /** * @category instances * @since 2.0.0 From 149c854e3ef835f4b67d127b4c5d6aec49568693 Mon Sep 17 00:00:00 2001 From: gcanti Date: Thu, 18 Jun 2020 16:23:51 +0200 Subject: [PATCH 065/106] rename `traced` to `functorTraced` for consistency --- CHANGELOG.md | 2 ++ docs/modules/Traced.ts.md | 11 +++++++++++ src/Traced.ts | 11 +++++++++-- 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f160766e9..cff2ab9ba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -162,6 +162,8 @@ high state of flux, you're at risk of it changing without notice. - add `bifunctorThese` instance (@gcanti) - add `foldableThese` instance (@gcanti) - add `traversableThese` instance (@gcanti) + - `Traced` + - rename `traced` to `functorTraced` for consistency (@gcanti) - `ReadonlyArray` - add `functorArray` instance (@gcanti) - add `functorWithIndexArray` instance (@gcanti) diff --git a/docs/modules/Traced.ts.md b/docs/modules/Traced.ts.md index 695c22bfc..c94732cd1 100644 --- a/docs/modules/Traced.ts.md +++ b/docs/modules/Traced.ts.md @@ -17,6 +17,7 @@ Added in v2.0.0 - [instances](#instances) - [URI](#uri) - [URI (type alias)](#uri-type-alias) + - [functorTraced](#functortraced) - [getComonad](#getcomonad) - [traced](#traced) - [model](#model) @@ -66,6 +67,16 @@ export type URI = typeof URI Added in v2.0.0 +## functorTraced + +**Signature** + +```ts +export declare const functorTraced: Functor2<'Traced'> +``` + +Added in v2.7.0 + ## getComonad **Signature** diff --git a/src/Traced.ts b/src/Traced.ts index bc79832c4..288b2cde3 100644 --- a/src/Traced.ts +++ b/src/Traced.ts @@ -119,9 +119,16 @@ declare module './HKT' { /** * @category instances - * @since 2.0.0 + * @since 2.7.0 */ -export const traced: Functor2 = { +export const functorTraced: Functor2 = { URI, map: map_ } + +// TODO: remove in v3 +/** + * @category instances + * @since 2.0.0 + */ +export const traced: Functor2 = functorTraced From 9ea70a23f7699121e51f4026cf163af903b343a0 Mon Sep 17 00:00:00 2001 From: gcanti Date: Thu, 18 Jun 2020 16:36:21 +0200 Subject: [PATCH 066/106] split `tree` mega instance --- CHANGELOG.md | 8 ++ docs/modules/Tree.ts.md | 88 +++++++++++++++ src/Tree.ts | 234 +++++++++++++++++++++++++++------------- test/Tree.ts | 6 +- 4 files changed, 259 insertions(+), 77 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cff2ab9ba..beb0fcdbe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -164,6 +164,14 @@ high state of flux, you're at risk of it changing without notice. - add `traversableThese` instance (@gcanti) - `Traced` - rename `traced` to `functorTraced` for consistency (@gcanti) + - `Tree` + - add `functorTree` instance (@gcanti) + - add `applicativeTree` instance (@gcanti) + - add `monadTree` instance (@gcanti) + - add `foldableTree` instance (@gcanti) + - add `traversableTree` instance (@gcanti) + - add `extendTree` instance (@gcanti) + - add `comonadTree` instance (@gcanti) - `ReadonlyArray` - add `functorArray` instance (@gcanti) - add `functorWithIndexArray` instance (@gcanti) diff --git a/docs/modules/Tree.ts.md b/docs/modules/Tree.ts.md index 062ab80c4..8974fb361 100644 --- a/docs/modules/Tree.ts.md +++ b/docs/modules/Tree.ts.md @@ -48,8 +48,15 @@ Added in v2.0.0 - [instances](#instances) - [URI](#uri) - [URI (type alias)](#uri-type-alias) + - [applicativeTree](#applicativetree) + - [comonadTree](#comonadtree) + - [extendTree](#extendtree) + - [foldableTree](#foldabletree) + - [functorTree](#functortree) - [getEq](#geteq) - [getShow](#getshow) + - [monadTree](#monadtree) + - [traversableTree](#traversabletree) - [tree](#tree) - [model](#model) - [Forest (type alias)](#forest-type-alias) @@ -58,6 +65,7 @@ Added in v2.0.0 - [drawForest](#drawforest) - [drawTree](#drawtree) - [elem](#elem) + - [of](#of) - [sequence](#sequence) - [traverse](#traverse) @@ -370,6 +378,56 @@ export type URI = typeof URI Added in v2.0.0 +## applicativeTree + +**Signature** + +```ts +export declare const applicativeTree: Applicative1<'Tree'> +``` + +Added in v2.7.0 + +## comonadTree + +**Signature** + +```ts +export declare const comonadTree: Comonad1<'Tree'> +``` + +Added in v2.7.0 + +## extendTree + +**Signature** + +```ts +export declare const extendTree: Extend1<'Tree'> +``` + +Added in v2.7.0 + +## foldableTree + +**Signature** + +```ts +export declare const foldableTree: Foldable1<'Tree'> +``` + +Added in v2.7.0 + +## functorTree + +**Signature** + +```ts +export declare const functorTree: Functor1<'Tree'> +``` + +Added in v2.7.0 + ## getEq **Signature** @@ -390,6 +448,26 @@ export declare function getShow(S: Show): Show> Added in v2.0.0 +## monadTree + +**Signature** + +```ts +export declare const monadTree: Monad1<'Tree'> +``` + +Added in v2.7.0 + +## traversableTree + +**Signature** + +```ts +export declare const traversableTree: Traversable1<'Tree'> +``` + +Added in v2.7.0 + ## tree **Signature** @@ -479,6 +557,16 @@ export declare function elem(E: Eq): (a: A, fa: Tree) => boolean Added in v2.0.0 +## of + +**Signature** + +```ts +export declare const of: (a: A) => Tree +``` + +Added in v2.7.0 + ## sequence **Signature** diff --git a/src/Tree.ts b/src/Tree.ts index 3ed361b51..5a4f4756d 100644 --- a/src/Tree.ts +++ b/src/Tree.ts @@ -7,7 +7,7 @@ * * @since 2.0.0 */ -import { Applicative } from './Applicative' +import { Applicative, Applicative1 } from './Applicative' import * as A from './Array' import { Comonad1 } from './Comonad' import { Eq, fromEquals } from './Eq' @@ -18,6 +18,8 @@ import { Monad, Monad1, Monad2, Monad2C, Monad3, Monad3C } from './Monad' import { Monoid } from './Monoid' import { Show } from './Show' import { Traversable1, PipeableTraverse1 } from './Traversable' +import { Functor1 } from './Functor' +import { Extend1 } from './Extend' // tslint:disable:readonly-array @@ -257,51 +259,6 @@ export function fold(f: (a: A, bs: Array) => B): (tree: Tree) => B { // pipeables // ------------------------------------------------------------------------------------- -const map_: (fa: Tree, f: (a: A) => B) => Tree = (fa, f) => ({ - value: f(fa.value), - forest: fa.forest.map((t) => map_(t, f)) -}) - -const ap_: (fab: Tree<(a: A) => B>, fa: Tree) => Tree = (fab, fa) => chain_(fab, (f) => map_(fa, f)) - -const chain_ = (fa: Tree, f: (a: A) => Tree): Tree => { - const { value, forest } = f(fa.value) - const concat = A.getMonoid>().concat - return { - value, - forest: concat( - forest, - fa.forest.map((t) => chain_(t, f)) - ) - } -} - -const reduce_ = (fa: Tree, b: B, f: (b: B, a: A) => B): B => { - let r: B = f(b, fa.value) - const len = fa.forest.length - for (let i = 0; i < len; i++) { - r = reduce_(fa.forest[i], r, f) - } - return r -} - -const foldMap_: (M: Monoid) => (fa: Tree, f: (a: A) => M) => M = (M) => (fa, f) => - reduce_(fa, M.empty, (acc, a) => M.concat(acc, f(a))) - -const reduceRight_ = (fa: Tree, b: B, f: (a: A, b: B) => B): B => { - let r: B = b - const len = fa.forest.length - for (let i = len - 1; i >= 0; i--) { - r = reduceRight_(fa.forest[i], r, f) - } - return f(fa.value, r) -} - -const extend_: (wa: Tree, f: (wa: Tree) => B) => Tree = (wa, f) => ({ - value: f(wa), - forest: wa.forest.map((t) => extend_(t, f)) -}) - /** * Apply a function to an argument under a type constructor. * @@ -407,28 +364,83 @@ export const reduceRight: (b: B, f: (a: A, b: B) => B) => (fa: Tree) => */ export const extract: (wa: Tree) => A = (wa) => wa.value -// ------------------------------------------------------------------------------------- -// instances -// ------------------------------------------------------------------------------------- +/** + * @since 2.6.3 + */ +export const traverse: PipeableTraverse1 = ( + F: Applicative +): ((f: (a: A) => HKT) => (ta: Tree) => HKT>) => { + const traverseF = traverse_(F) + return (f) => (ta) => traverseF(ta, f) +} /** - * @category instances - * @since 2.0.0 + * @since 2.6.3 */ -export const URI = 'Tree' +export const sequence: Traversable1['sequence'] = ( + F: Applicative +): ((ta: Tree>) => HKT>) => { + const traverseF = traverse_(F) + return (ta) => traverseF(ta, identity) +} /** - * @category instances - * @since 2.0.0 + * @since 2.7.0 */ -export type URI = typeof URI +export const of: Applicative1['of'] = (a) => ({ + value: a, + forest: A.empty +}) -declare module './HKT' { - interface URItoKind { - readonly [URI]: Tree +// ------------------------------------------------------------------------------------- +// instances +// ------------------------------------------------------------------------------------- + +const map_: (fa: Tree, f: (a: A) => B) => Tree = (fa, f) => ({ + value: f(fa.value), + forest: fa.forest.map((t) => map_(t, f)) +}) + +const ap_: (fab: Tree<(a: A) => B>, fa: Tree) => Tree = (fab, fa) => chain_(fab, (f) => map_(fa, f)) + +const chain_ = (fa: Tree, f: (a: A) => Tree): Tree => { + const { value, forest } = f(fa.value) + const concat = A.getMonoid>().concat + return { + value, + forest: concat( + forest, + fa.forest.map((t) => chain_(t, f)) + ) + } +} + +const reduce_ = (fa: Tree, b: B, f: (b: B, a: A) => B): B => { + let r: B = f(b, fa.value) + const len = fa.forest.length + for (let i = 0; i < len; i++) { + r = reduce_(fa.forest[i], r, f) } + return r } +const foldMap_: (M: Monoid) => (fa: Tree, f: (a: A) => M) => M = (M) => (fa, f) => + reduce_(fa, M.empty, (acc, a) => M.concat(acc, f(a))) + +const reduceRight_ = (fa: Tree, b: B, f: (a: A, b: B) => B): B => { + let r: B = b + const len = fa.forest.length + for (let i = len - 1; i >= 0; i--) { + r = reduceRight_(fa.forest[i], r, f) + } + return f(fa.value, r) +} + +const extend_: (wa: Tree, f: (wa: Tree) => B) => Tree = (wa, f) => ({ + value: f(wa), + forest: wa.forest.map((t) => extend_(t, f)) +}) + const traverse_ = (F: Applicative): ((ta: Tree, f: (a: A) => HKT) => HKT>) => { const traverseF = A.traverse(F) const r = (ta: Tree, f: (a: A) => HKT): HKT> => @@ -446,25 +458,102 @@ const traverse_ = (F: Applicative): ((ta: Tree, f: (a: A) => HKT< } /** - * @since 2.6.3 + * @category instances + * @since 2.0.0 */ -export const traverse: PipeableTraverse1 = ( - F: Applicative -): ((f: (a: A) => HKT) => (ta: Tree) => HKT>) => { - const traverseF = traverse_(F) - return (f) => (ta) => traverseF(ta, f) +export const URI = 'Tree' + +/** + * @category instances + * @since 2.0.0 + */ +export type URI = typeof URI + +declare module './HKT' { + interface URItoKind { + readonly [URI]: Tree + } } /** - * @since 2.6.3 + * @category instances + * @since 2.7.0 */ -export const sequence: Traversable1['sequence'] = ( - F: Applicative -): ((ta: Tree>) => HKT>) => { - const traverseF = traverse_(F) - return (ta) => traverseF(ta, identity) +export const functorTree: Functor1 = { + URI, + map: map_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const applicativeTree: Applicative1 = { + URI, + map: map_, + ap: ap_, + of +} + +/** + * @category instances + * @since 2.7.0 + */ +export const monadTree: Monad1 = { + URI, + map: map_, + ap: ap_, + of, + chain: chain_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const foldableTree: Foldable1 = { + URI, + reduce: reduce_, + foldMap: foldMap_, + reduceRight: reduceRight_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const traversableTree: Traversable1 = { + URI, + map: map_, + reduce: reduce_, + foldMap: foldMap_, + reduceRight: reduceRight_, + traverse: traverse_, + sequence +} + +/** + * @category instances + * @since 2.7.0 + */ +export const extendTree: Extend1 = { + URI, + map: map_, + extend: extend_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const comonadTree: Comonad1 = { + URI, + map: map_, + extend: extend_, + extract } +// TODO: remove in v3 /** * @category instances * @since 2.0.0 @@ -472,10 +561,7 @@ export const sequence: Traversable1['sequence'] = ( export const tree: Monad1 & Foldable1 & Traversable1 & Comonad1 = { URI, map: map_, - of: (a) => ({ - value: a, - forest: A.empty - }), + of, ap: ap_, chain: chain_, reduce: reduce_, diff --git a/test/Tree.ts b/test/Tree.ts index b6467c9d2..539a78caf 100644 --- a/test/Tree.ts +++ b/test/Tree.ts @@ -31,7 +31,7 @@ describe('Tree', () => { it('ap', () => { const double = (n: number): number => n * 2 - const fab = _.tree.of(double) + const fab = _.of(double) const fa = _.make(1, [_.make(2), _.make(3)]) const expected = _.make(2, [_.make(4), _.make(6)]) assert.deepStrictEqual(pipe(fab, _.ap(fa)), expected) @@ -46,14 +46,14 @@ describe('Tree', () => { }) it('chain', () => { - const f = (n: number) => _.tree.of(n * 2) + const f = (n: number) => _.of(n * 2) const fa = _.make(1, [_.make(2), _.make(3)]) const expected = _.make(2, [_.make(4), _.make(6)]) assert.deepStrictEqual(pipe(fa, _.chain(f)), expected) }) it('chainFirst', () => { - const f = (n: number) => _.tree.of(n * 2) + const f = (n: number) => _.of(n * 2) const fa = _.make(1, [_.make(2), _.make(3)]) assert.deepStrictEqual(pipe(fa, _.chainFirst(f)), fa) }) From 9f283be2f490c7768889caf4e5186fa558573a10 Mon Sep 17 00:00:00 2001 From: gcanti Date: Thu, 18 Jun 2020 16:49:40 +0200 Subject: [PATCH 067/106] rename `writer` to `functorWriter` for consistency --- CHANGELOG.md | 70 ++++++++++++++++++++------------------- docs/modules/Writer.ts.md | 11 ++++++ src/Writer.ts | 10 ++++-- 3 files changed, 55 insertions(+), 36 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index beb0fcdbe..0e7b964a3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -138,40 +138,6 @@ high state of flux, you're at risk of it changing without notice. - add `applicativeReaderTaskEitherSeq` instance (@gcanti) - add `bifunctorReaderTaskEither` instance (@gcanti) - add `altReaderTaskEither` instance (@gcanti) - - `StateReaderTaskEither` - - add `functorStateReaderTaskEither` instance (@gcanti) - - add `applicativeStateReaderTaskEitherPar` instance (@gcanti) - - add `applicativeStateReaderTaskEitherSeq` instance (@gcanti) - - add `bifunctorStateReaderTaskEither` instance (@gcanti) - - add `altStateReaderTaskEither` instance (@gcanti) - - `Task` - - add `functorTask` instance (@gcanti) - - add `applicativeTaskPar` instance (@gcanti) - - add `applicativeTaskSeq` instance (@gcanti) - - `TaskEither` - - add `functorTaskEither` instance (@gcanti) - - add `applicativeTaskEitherPar` instance (@gcanti) - - add `applicativeTaskEitherSeq` instance (@gcanti) - - add `bifunctorTaskEither` instance (@gcanti) - - add `altTaskEither` instance (@gcanti) - - `TaskThese` - - add `functorTaskThese` instance (@gcanti) - - add `bifunctorTaskThese` instance (@gcanti) - - `These` - - add `functorThese` instance (@gcanti) - - add `bifunctorThese` instance (@gcanti) - - add `foldableThese` instance (@gcanti) - - add `traversableThese` instance (@gcanti) - - `Traced` - - rename `traced` to `functorTraced` for consistency (@gcanti) - - `Tree` - - add `functorTree` instance (@gcanti) - - add `applicativeTree` instance (@gcanti) - - add `monadTree` instance (@gcanti) - - add `foldableTree` instance (@gcanti) - - add `traversableTree` instance (@gcanti) - - add `extendTree` instance (@gcanti) - - add `comonadTree` instance (@gcanti) - `ReadonlyArray` - add `functorArray` instance (@gcanti) - add `functorWithIndexArray` instance (@gcanti) @@ -207,6 +173,42 @@ high state of flux, you're at risk of it changing without notice. - add `altNonEmptyArray` instance (@gcanti) - add `extendNonEmptyArray` instance (@gcanti) - add `comonadNonEmptyArray` instance (@gcanti) + - `StateReaderTaskEither` + - add `functorStateReaderTaskEither` instance (@gcanti) + - add `applicativeStateReaderTaskEitherPar` instance (@gcanti) + - add `applicativeStateReaderTaskEitherSeq` instance (@gcanti) + - add `bifunctorStateReaderTaskEither` instance (@gcanti) + - add `altStateReaderTaskEither` instance (@gcanti) + - `Task` + - add `functorTask` instance (@gcanti) + - add `applicativeTaskPar` instance (@gcanti) + - add `applicativeTaskSeq` instance (@gcanti) + - `TaskEither` + - add `functorTaskEither` instance (@gcanti) + - add `applicativeTaskEitherPar` instance (@gcanti) + - add `applicativeTaskEitherSeq` instance (@gcanti) + - add `bifunctorTaskEither` instance (@gcanti) + - add `altTaskEither` instance (@gcanti) + - `TaskThese` + - add `functorTaskThese` instance (@gcanti) + - add `bifunctorTaskThese` instance (@gcanti) + - `These` + - add `functorThese` instance (@gcanti) + - add `bifunctorThese` instance (@gcanti) + - add `foldableThese` instance (@gcanti) + - add `traversableThese` instance (@gcanti) + - `Traced` + - rename `traced` to `functorTraced` for consistency (@gcanti) + - `Tree` + - add `functorTree` instance (@gcanti) + - add `applicativeTree` instance (@gcanti) + - add `monadTree` instance (@gcanti) + - add `foldableTree` instance (@gcanti) + - add `traversableTree` instance (@gcanti) + - add `extendTree` instance (@gcanti) + - add `comonadTree` instance (@gcanti) + - `Traced` + - rename `writer` to `functorWriter` for consistency (@gcanti) # 2.6.7 diff --git a/docs/modules/Writer.ts.md b/docs/modules/Writer.ts.md index 14a188705..2819e167c 100644 --- a/docs/modules/Writer.ts.md +++ b/docs/modules/Writer.ts.md @@ -23,6 +23,7 @@ Added in v2.0.0 - [instances](#instances) - [URI](#uri) - [URI (type alias)](#uri-type-alias) + - [functorWriter](#functorwriter) - [getMonad](#getmonad) - [writer](#writer) - [model](#model) @@ -132,6 +133,16 @@ export type URI = typeof URI Added in v2.0.0 +## functorWriter + +**Signature** + +```ts +export declare const functorWriter: Functor2<'Writer'> +``` + +Added in v2.7.0 + ## getMonad **Signature** diff --git a/src/Writer.ts b/src/Writer.ts index 19083de95..769bfbb64 100644 --- a/src/Writer.ts +++ b/src/Writer.ts @@ -149,13 +149,19 @@ export function getMonad(M: Monoid): Monad2C { /** * @category instances - * @since 2.0.0 + * @since 2.7.0 */ -export const writer: Functor2 = { +export const functorWriter: Functor2 = { URI, map: map_ } +/** + * @category instances + * @since 2.0.0 + */ +export const writer: Functor2 = functorWriter + // ------------------------------------------------------------------------------------- // utils // ------------------------------------------------------------------------------------- From df84cbb0db0c801be0eeb8caa83c9cff17ff516d Mon Sep 17 00:00:00 2001 From: gcanti Date: Thu, 18 Jun 2020 17:39:39 +0200 Subject: [PATCH 068/106] split `record` / `readonlyRecord` mega instance --- CHANGELOG.md | 20 ++ docs/modules/ReadonlyRecord.ts.md | 118 +++++++++- docs/modules/Record.ts.md | 142 ++++++++++-- src/ReadonlyRecord.ts | 166 +++++++++++++- src/Record.ts | 221 +++++++++++++++++- src/Writer.ts | 1 + test/ReadonlyRecord.ts | 1 + test/Record.ts | 362 +++++++++++++++++------------- 8 files changed, 834 insertions(+), 197 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0e7b964a3..7ffb75d4a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -173,6 +173,26 @@ high state of flux, you're at risk of it changing without notice. - add `altNonEmptyArray` instance (@gcanti) - add `extendNonEmptyArray` instance (@gcanti) - add `comonadNonEmptyArray` instance (@gcanti) + - `ReadonlyRecord` + - add `functorRecord` instance (@gcanti) + - add `functorWithIndexRecord` instance (@gcanti) + - add `foldableRecord` instance (@gcanti) + - add `compactableRecord` instance (@gcanti) + - add `filterableRecord` instance (@gcanti) + - add `filterableWithIndexRecord` instance (@gcanti) + - add `traversableRecord` instance (@gcanti) + - add `traversableWithIndexRecord` instance (@gcanti) + - add `witherableRecord` instance (@gcanti) + - `Record` + - add `functorRecord` instance (@gcanti) + - add `functorWithIndexRecord` instance (@gcanti) + - add `foldableRecord` instance (@gcanti) + - add `compactableRecord` instance (@gcanti) + - add `filterableRecord` instance (@gcanti) + - add `filterableWithIndexRecord` instance (@gcanti) + - add `traversableRecord` instance (@gcanti) + - add `traversableWithIndexRecord` instance (@gcanti) + - add `witherableRecord` instance (@gcanti) - `StateReaderTaskEither` - add `functorStateReaderTaskEither` instance (@gcanti) - add `applicativeStateReaderTaskEitherPar` instance (@gcanti) diff --git a/docs/modules/ReadonlyRecord.ts.md b/docs/modules/ReadonlyRecord.ts.md index 96636352a..ff3c5a539 100644 --- a/docs/modules/ReadonlyRecord.ts.md +++ b/docs/modules/ReadonlyRecord.ts.md @@ -43,10 +43,20 @@ Added in v2.5.0 - [instances](#instances) - [URI](#uri) - [URI (type alias)](#uri-type-alias) + - [compactableRecord](#compactablerecord) + - [filterableRecord](#filterablerecord) + - [filterableWithIndexRecord](#filterablewithindexrecord) + - [foldableRecord](#foldablerecord) + - [foldableWithIndexRecord](#foldablewithindexrecord) + - [functorRecord](#functorrecord) + - [functorWithIndexRecord](#functorwithindexrecord) - [getEq](#geteq) - [getMonoid](#getmonoid) - [getShow](#getshow) - [readonlyRecord](#readonlyrecord) + - [traversableRecord](#traversablerecord) + - [traversableWithIndexRecord](#traversablewithindexrecord) + - [witherableRecord](#witherablerecord) - [model](#model) - [ReadonlyRecord (type alias)](#readonlyrecord-type-alias) - [utils](#utils) @@ -366,6 +376,76 @@ export type URI = typeof URI Added in v2.5.0 +## compactableRecord + +**Signature** + +```ts +export declare const compactableRecord: Compactable1<'ReadonlyRecord'> +``` + +Added in v2.7.0 + +## filterableRecord + +**Signature** + +```ts +export declare const filterableRecord: Filterable1<'ReadonlyRecord'> +``` + +Added in v2.7.0 + +## filterableWithIndexRecord + +**Signature** + +```ts +export declare const filterableWithIndexRecord: FilterableWithIndex1<'ReadonlyRecord', string> +``` + +Added in v2.7.0 + +## foldableRecord + +**Signature** + +```ts +export declare const foldableRecord: Foldable1<'ReadonlyRecord'> +``` + +Added in v2.7.0 + +## foldableWithIndexRecord + +**Signature** + +```ts +export declare const foldableWithIndexRecord: FoldableWithIndex1<'ReadonlyRecord', string> +``` + +Added in v2.7.0 + +## functorRecord + +**Signature** + +```ts +export declare const functorRecord: Functor1<'ReadonlyRecord'> +``` + +Added in v2.7.0 + +## functorWithIndexRecord + +**Signature** + +```ts +export declare const functorWithIndexRecord: FunctorWithIndex1<'ReadonlyRecord', string> +``` + +Added in v2.7.0 + ## getEq **Signature** @@ -414,16 +494,44 @@ Added in v2.5.0 ```ts export declare const readonlyRecord: FunctorWithIndex1<'ReadonlyRecord', string> & - Foldable1<'ReadonlyRecord'> & - TraversableWithIndex1<'ReadonlyRecord', string> & - Compactable1<'ReadonlyRecord'> & + FoldableWithIndex1<'ReadonlyRecord', string> & FilterableWithIndex1<'ReadonlyRecord', string> & - Witherable1<'ReadonlyRecord'> & - FoldableWithIndex1<'ReadonlyRecord', string> + TraversableWithIndex1<'ReadonlyRecord', string> & + Witherable1<'ReadonlyRecord'> ``` Added in v2.5.0 +## traversableRecord + +**Signature** + +```ts +export declare const traversableRecord: Traversable1<'ReadonlyRecord'> +``` + +Added in v2.7.0 + +## traversableWithIndexRecord + +**Signature** + +```ts +export declare const traversableWithIndexRecord: TraversableWithIndex1<'ReadonlyRecord', string> +``` + +Added in v2.7.0 + +## witherableRecord + +**Signature** + +```ts +export declare const witherableRecord: Witherable1<'ReadonlyRecord'> +``` + +Added in v2.7.0 + # model ## ReadonlyRecord (type alias) diff --git a/docs/modules/Record.ts.md b/docs/modules/Record.ts.md index 45716a6e9..38b93e79e 100644 --- a/docs/modules/Record.ts.md +++ b/docs/modules/Record.ts.md @@ -30,6 +30,17 @@ Added in v2.0.0 - [instances](#instances) - [URI](#uri) - [URI (type alias)](#uri-type-alias) + - [compactableRecord](#compactablerecord) + - [filterableRecord](#filterablerecord) + - [filterableWithIndexRecord](#filterablewithindexrecord) + - [foldableRecord](#foldablerecord) + - [foldableWithIndexRecord](#foldablewithindexrecord) + - [functorRecord](#functorrecord) + - [functorWithIndexRecord](#functorwithindexrecord) + - [record](#record) + - [traversableRecord](#traversablerecord) + - [traversableWithIndexRecord](#traversablewithindexrecord) + - [witherableRecord](#witherablerecord) - [utils](#utils) - [collect](#collect) - [deleteAt](#deleteat) @@ -56,7 +67,6 @@ Added in v2.0.0 - [partitionMapWithIndex](#partitionmapwithindex) - [partitionWithIndex](#partitionwithindex) - [pop](#pop) - - [record](#record) - [reduceRightWithIndex](#reducerightwithindex) - [reduceWithIndex](#reducewithindex) - [sequence](#sequence) @@ -223,6 +233,120 @@ export type URI = typeof URI Added in v2.0.0 +## compactableRecord + +**Signature** + +```ts +export declare const compactableRecord: Compactable1<'Record'> +``` + +Added in v2.7.0 + +## filterableRecord + +**Signature** + +```ts +export declare const filterableRecord: Filterable1<'Record'> +``` + +Added in v2.7.0 + +## filterableWithIndexRecord + +**Signature** + +```ts +export declare const filterableWithIndexRecord: FilterableWithIndex1<'Record', string> +``` + +Added in v2.7.0 + +## foldableRecord + +**Signature** + +```ts +export declare const foldableRecord: Foldable1<'Record'> +``` + +Added in v2.7.0 + +## foldableWithIndexRecord + +**Signature** + +```ts +export declare const foldableWithIndexRecord: FoldableWithIndex1<'Record', string> +``` + +Added in v2.7.0 + +## functorRecord + +**Signature** + +```ts +export declare const functorRecord: Functor1<'Record'> +``` + +Added in v2.7.0 + +## functorWithIndexRecord + +**Signature** + +```ts +export declare const functorWithIndexRecord: FunctorWithIndex1<'Record', string> +``` + +Added in v2.7.0 + +## record + +**Signature** + +```ts +export declare const record: FunctorWithIndex1<'Record', string> & + FoldableWithIndex1<'Record', string> & + FilterableWithIndex1<'Record', string> & + TraversableWithIndex1<'Record', string> & + Witherable1<'Record'> +``` + +Added in v2.0.0 + +## traversableRecord + +**Signature** + +```ts +export declare const traversableRecord: Traversable1<'Record'> +``` + +Added in v2.7.0 + +## traversableWithIndexRecord + +**Signature** + +```ts +export declare const traversableWithIndexRecord: TraversableWithIndex1<'Record', string> +``` + +Added in v2.7.0 + +## witherableRecord + +**Signature** + +```ts +export declare const witherableRecord: Witherable1<'Record'> +``` + +Added in v2.7.0 + # utils ## collect @@ -626,22 +750,6 @@ export declare function pop( Added in v2.0.0 -## record - -**Signature** - -```ts -export declare const record: FunctorWithIndex1<'Record', string> & - Foldable1<'Record'> & - TraversableWithIndex1<'Record', string> & - Compactable1<'Record'> & - FilterableWithIndex1<'Record', string> & - Witherable1<'Record'> & - FoldableWithIndex1<'Record', string> -``` - -Added in v2.0.0 - ## reduceRightWithIndex **Signature** diff --git a/src/ReadonlyRecord.ts b/src/ReadonlyRecord.ts index c49c5d12c..a974f074a 100644 --- a/src/ReadonlyRecord.ts +++ b/src/ReadonlyRecord.ts @@ -5,10 +5,12 @@ import { Applicative, Applicative1, Applicative2, Applicative2C, Applicative3, A import { Compactable1, Separated } from './Compactable' import { Either } from './Either' import { Eq, fromEquals } from './Eq' +import { Filterable1 } from './Filterable' import { FilterableWithIndex1, PredicateWithIndex, RefinementWithIndex } from './FilterableWithIndex' import { Foldable, Foldable1, Foldable2, Foldable3 } from './Foldable' import { FoldableWithIndex1 } from './FoldableWithIndex' import { identity, Predicate, Refinement } from './function' +import { Functor1 } from './Functor' import { FunctorWithIndex1 } from './FunctorWithIndex' import { HKT, Kind, Kind2, Kind3, URIS, URIS2, URIS3 } from './HKT' import { Magma } from './Magma' @@ -16,9 +18,10 @@ import { Monoid } from './Monoid' import { isNone, isSome, none, Option, some as optionSome } from './Option' import { Semigroup } from './Semigroup' import { Show } from './Show' +import { Traversable1 } from './Traversable' import { TraversableWithIndex1 } from './TraversableWithIndex' import { Unfoldable, Unfoldable1 } from './Unfoldable' -import { Witherable1, PipeableWither1, PipeableWilt1 } from './Witherable' +import { PipeableWilt1, PipeableWither1, Witherable1 } from './Witherable' /** * @category model @@ -1086,17 +1089,160 @@ declare module './HKT' { } } +/** + * @category instances + * @since 2.7.0 + */ +export const functorRecord: Functor1 = { + URI, + map: map_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const functorWithIndexRecord: FunctorWithIndex1 = { + URI, + map: map_, + mapWithIndex: mapWithIndex_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const foldableRecord: Foldable1 = { + URI, + reduce: reduce_, + foldMap: foldMap_, + reduceRight: reduceRight_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const foldableWithIndexRecord: FoldableWithIndex1 = { + URI, + reduce: reduce_, + foldMap: foldMap_, + reduceRight: reduceRight_, + reduceWithIndex: reduceWithIndex_, + foldMapWithIndex: foldMapWithIndex_, + reduceRightWithIndex: reduceRightWithIndex_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const compactableRecord: Compactable1 = { + URI, + compact, + separate +} + +/** + * @category instances + * @since 2.7.0 + */ +export const filterableRecord: Filterable1 = { + URI, + map: map_, + compact, + separate, + filter: filter_, + filterMap: filterMap_, + partition: partition_, + partitionMap: partitionMap_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const filterableWithIndexRecord: FilterableWithIndex1 = { + URI, + map: map_, + mapWithIndex: mapWithIndex_, + compact, + separate, + filter: filter_, + filterMap: filterMap_, + partition: partition_, + partitionMap: partitionMap_, + filterMapWithIndex: filterMapWithIndex_, + filterWithIndex: filterWithIndex_, + partitionMapWithIndex: partitionMapWithIndex_, + partitionWithIndex: partitionWithIndex_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const traversableRecord: Traversable1 = { + URI, + map: map_, + reduce: reduce_, + foldMap: foldMap_, + reduceRight: reduceRight_, + traverse: traverse_, + sequence +} + +/** + * @category instances + * @since 2.7.0 + */ +export const traversableWithIndexRecord: TraversableWithIndex1 = { + URI, + map: map_, + mapWithIndex: mapWithIndex_, + reduce: reduce_, + foldMap: foldMap_, + reduceRight: reduceRight_, + reduceWithIndex: reduceWithIndex_, + foldMapWithIndex: foldMapWithIndex_, + reduceRightWithIndex: reduceRightWithIndex_, + traverse: traverse_, + sequence, + traverseWithIndex: traverseWithIndex_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const witherableRecord: Witherable1 = { + URI, + map: map_, + reduce: reduce_, + foldMap: foldMap_, + reduceRight: reduceRight_, + traverse: traverse_, + sequence, + compact, + separate, + filter: filter_, + filterMap: filterMap_, + partition: partition_, + partitionMap: partitionMap_, + wither: wither_, + wilt: wilt_ +} + +// TODO: remove in v3 /** * @category instances * @since 2.5.0 */ export const readonlyRecord: FunctorWithIndex1 & - Foldable1 & - TraversableWithIndex1 & - Compactable1 & + FoldableWithIndex1 & FilterableWithIndex1 & - Witherable1 & - FoldableWithIndex1 = { + TraversableWithIndex1 & + Witherable1 = { URI, map: map_, reduce: reduce_, @@ -1114,11 +1260,11 @@ export const readonlyRecord: FunctorWithIndex1 & reduceWithIndex: reduceWithIndex_, foldMapWithIndex: foldMapWithIndex_, reduceRightWithIndex: reduceRightWithIndex_, - partitionMapWithIndex: partitionMapWithIndex_, - partitionWithIndex: partitionWithIndex_, filterMapWithIndex: filterMapWithIndex_, filterWithIndex: filterWithIndex_, + partitionMapWithIndex: partitionMapWithIndex_, + partitionWithIndex: partitionWithIndex_, + traverseWithIndex: traverseWithIndex_, wither: wither_, - wilt: wilt_, - traverseWithIndex: traverseWithIndex_ + wilt: wilt_ } diff --git a/src/Record.ts b/src/Record.ts index 0a7636ee7..360d361a8 100644 --- a/src/Record.ts +++ b/src/Record.ts @@ -5,10 +5,12 @@ import { Applicative, Applicative1, Applicative2, Applicative2C, Applicative3, A import { Compactable1, Separated } from './Compactable' import { Either } from './Either' import { Eq } from './Eq' +import { Filterable1 } from './Filterable' import { FilterableWithIndex1, PredicateWithIndex, RefinementWithIndex } from './FilterableWithIndex' import { Foldable, Foldable1, Foldable2, Foldable3 } from './Foldable' import { FoldableWithIndex1 } from './FoldableWithIndex' import { Predicate, Refinement } from './function' +import { Functor1 } from './Functor' import { FunctorWithIndex1 } from './FunctorWithIndex' import { HKT, Kind, Kind2, Kind3, URIS, URIS2, URIS3 } from './HKT' import { Magma } from './Magma' @@ -17,9 +19,10 @@ import { Option } from './Option' import * as RR from './ReadonlyRecord' import { Semigroup } from './Semigroup' import { Show } from './Show' +import { Traversable1 } from './Traversable' import { TraversableWithIndex1 } from './TraversableWithIndex' import { Unfoldable, Unfoldable1 } from './Unfoldable' -import { Witherable1, PipeableWither1, PipeableWilt1 } from './Witherable' +import { PipeableWilt1, PipeableWither1, Witherable1 } from './Witherable' /* tslint:disable:readonly-array */ @@ -568,6 +571,39 @@ export const separate: (fa: Record>) => Separated['map'] = RR.functorRecord.map +const mapWithIndex_: FunctorWithIndex1['mapWithIndex'] = RR.functorWithIndexRecord.mapWithIndex +const reduce_: Foldable1['reduce'] = RR.foldableRecord.reduce +const foldMap_: Foldable1['foldMap'] = RR.foldableRecord.foldMap +const reduceRight_: Foldable1['reduceRight'] = RR.foldableRecord.reduceRight +const reduceWithIndex_: FoldableWithIndex1['reduceWithIndex'] = RR.foldableWithIndexRecord.reduceWithIndex +const foldMapWithIndex_: FoldableWithIndex1['foldMapWithIndex'] = + RR.foldableWithIndexRecord.foldMapWithIndex +const reduceRightWithIndex_: FoldableWithIndex1['reduceRightWithIndex'] = + RR.foldableWithIndexRecord.reduceRightWithIndex +const filter_: Filterable1['filter'] = RR.filterableRecord.filter as any +const filterMap_: Filterable1['filterMap'] = RR.filterableRecord.filterMap +const partition_: Filterable1['partition'] = RR.filterableRecord.partition as any +const partitionMap_: Filterable1['partitionMap'] = RR.filterableRecord.partitionMap +const filterWithIndex_: FilterableWithIndex1['filterWithIndex'] = RR.filterableWithIndexRecord + .filterWithIndex as any +const filterMapWithIndex_: FilterableWithIndex1['filterMapWithIndex'] = + RR.filterableWithIndexRecord.filterMapWithIndex +const partitionWithIndex_: FilterableWithIndex1['partitionWithIndex'] = RR.filterableWithIndexRecord + .partitionWithIndex as any +const partitionMapWithIndex_: FilterableWithIndex1['partitionMapWithIndex'] = + RR.filterableWithIndexRecord.partitionMapWithIndex +const traverseWithIndex_: TraversableWithIndex1['traverseWithIndex'] = RR.traversableWithIndexRecord + .traverseWithIndex as any +const wither_: Witherable1['wither'] = RR.witherableRecord.wither as any +const wilt_: Witherable1['wilt'] = RR.witherableRecord.wilt as any +const traverse_: Traversable1['traverse'] = ( + F: Applicative +): ((ta: Record, f: (a: A) => HKT) => HKT>) => { + const traverseF = traverse(F) + return (ta, f) => traverseF(f)(ta) +} + /** * @category instances * @since 2.0.0 @@ -587,16 +623,181 @@ declare module './HKT' { } /** + * @category instances + * @since 2.7.0 + */ +export const functorRecord: Functor1 = { + URI, + map: map_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const functorWithIndexRecord: FunctorWithIndex1 = { + URI, + map: map_, + mapWithIndex: mapWithIndex_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const foldableRecord: Foldable1 = { + URI, + reduce: reduce_, + foldMap: foldMap_, + reduceRight: reduceRight_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const foldableWithIndexRecord: FoldableWithIndex1 = { + URI, + reduce: reduce_, + foldMap: foldMap_, + reduceRight: reduceRight_, + reduceWithIndex: reduceWithIndex_, + foldMapWithIndex: foldMapWithIndex_, + reduceRightWithIndex: reduceRightWithIndex_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const compactableRecord: Compactable1 = { + URI, + compact, + separate +} + +/** + * @category instances + * @since 2.7.0 + */ +export const filterableRecord: Filterable1 = { + URI, + map: map_, + compact, + separate, + filter: filter_, + filterMap: filterMap_, + partition: partition_, + partitionMap: partitionMap_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const filterableWithIndexRecord: FilterableWithIndex1 = { + URI, + map: map_, + mapWithIndex: mapWithIndex_, + compact, + separate, + filter: filter_, + filterMap: filterMap_, + partition: partition_, + partitionMap: partitionMap_, + filterMapWithIndex: filterMapWithIndex_, + filterWithIndex: filterWithIndex_, + partitionMapWithIndex: partitionMapWithIndex_, + partitionWithIndex: partitionWithIndex_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const traversableRecord: Traversable1 = { + URI, + map: map_, + reduce: reduce_, + foldMap: foldMap_, + reduceRight: reduceRight_, + traverse: traverse_, + sequence +} + +/** + * @category instances + * @since 2.7.0 + */ +export const traversableWithIndexRecord: TraversableWithIndex1 = { + URI, + map: map_, + mapWithIndex: mapWithIndex_, + reduce: reduce_, + foldMap: foldMap_, + reduceRight: reduceRight_, + reduceWithIndex: reduceWithIndex_, + foldMapWithIndex: foldMapWithIndex_, + reduceRightWithIndex: reduceRightWithIndex_, + traverse: traverse_, + sequence, + traverseWithIndex: traverseWithIndex_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const witherableRecord: Witherable1 = { + URI, + map: map_, + reduce: reduce_, + foldMap: foldMap_, + reduceRight: reduceRight_, + traverse: traverse_, + sequence, + compact, + separate, + filter: filter_, + filterMap: filterMap_, + partition: partition_, + partitionMap: partitionMap_, + wither: wither_, + wilt: wilt_ +} + +// TODO: remove in v3 +/** + * @category instances * @since 2.0.0 */ export const record: FunctorWithIndex1 & - Foldable1 & - TraversableWithIndex1 & - Compactable1 & + FoldableWithIndex1 & FilterableWithIndex1 & - Witherable1 & - FoldableWithIndex1 = - /*#__PURE__*/ - (() => { - return Object.assign({}, RR.readonlyRecord as any, { URI }) - })() + TraversableWithIndex1 & + Witherable1 = { + URI, + map: map_, + reduce: reduce_, + foldMap: foldMap_, + reduceRight: reduceRight_, + traverse: traverse_, + sequence, + compact, + separate, + filter: filter_, + filterMap: filterMap_, + partition: partition_, + partitionMap: partitionMap_, + mapWithIndex: mapWithIndex_, + reduceWithIndex: reduceWithIndex_, + foldMapWithIndex: foldMapWithIndex_, + reduceRightWithIndex: reduceRightWithIndex_, + filterMapWithIndex: filterMapWithIndex_, + filterWithIndex: filterWithIndex_, + partitionMapWithIndex: partitionMapWithIndex_, + partitionWithIndex: partitionWithIndex_, + traverseWithIndex: traverseWithIndex_, + wither: wither_, + wilt: wilt_ +} diff --git a/src/Writer.ts b/src/Writer.ts index 769bfbb64..27fcb6afa 100644 --- a/src/Writer.ts +++ b/src/Writer.ts @@ -156,6 +156,7 @@ export const functorWriter: Functor2 = { map: map_ } +// TODO: remove in v3 /** * @category instances * @since 2.0.0 diff --git a/test/ReadonlyRecord.ts b/test/ReadonlyRecord.ts index e9aaed456..fffe94ba5 100644 --- a/test/ReadonlyRecord.ts +++ b/test/ReadonlyRecord.ts @@ -21,6 +21,7 @@ describe('ReadonlyRecord', () => { const double = (n: number): number => n * 2 assert.deepStrictEqual(pipe({ k1: 1, k2: 2 }, _.map(double)), { k1: 2, k2: 4 }) assert.deepStrictEqual(pipe({ a: 1, b: 2 }, _.map(double)), { a: 2, b: 4 }) + assert.deepStrictEqual(_.functorRecord.map({ a: 1, b: 2 }, double), { a: 2, b: 4 }) }) it('reduce', () => { diff --git a/test/Record.ts b/test/Record.ts index 20c4ede93..69e075db3 100644 --- a/test/Record.ts +++ b/test/Record.ts @@ -2,9 +2,10 @@ import * as assert from 'assert' import { left, right } from '../src/Either' import { eqNumber } from '../src/Eq' import { identity, pipe } from '../src/function' +import * as IO from '../src/IO' import { monoidString } from '../src/Monoid' import * as O from '../src/Option' -import * as A from '../src/ReadonlyArray' +import * as A from '../src/Array' import * as _ from '../src/Record' import { getFirstSemigroup, getLastSemigroup, semigroupSum } from '../src/Semigroup' import { showString } from '../src/Show' @@ -14,8 +15,184 @@ const p = (n: number) => n > 2 const noPrototype = Object.create(null) -describe('Record', () => { +describe('ReadonlyRecord', () => { describe('pipeables', () => { + it('map', () => { + const double = (n: number): number => n * 2 + assert.deepStrictEqual(pipe({ k1: 1, k2: 2 }, _.map(double)), { k1: 2, k2: 4 }) + assert.deepStrictEqual(pipe({ a: 1, b: 2 }, _.map(double)), { a: 2, b: 4 }) + }) + + it('mapWithIndex', () => { + const double = (_: string, n: number): number => n * 2 + assert.deepStrictEqual(pipe({ a: 1, b: 2 }, _.mapWithIndex(double)), { a: 2, b: 4 }) + }) + + it('reduce', () => { + assert.deepStrictEqual( + pipe( + { k1: 'a', k2: 'b' }, + _.reduce('', (b, a) => b + a) + ), + 'ab' + ) + assert.deepStrictEqual( + pipe( + { k2: 'b', k1: 'a' }, + _.reduce('', (b, a) => b + a) + ), + 'ab' + ) + }) + + it('foldMap', () => { + assert.deepStrictEqual(pipe({ a: 'a', b: 'b' }, _.foldMap(monoidString)(identity)), 'ab') + }) + + it('reduceRight', () => { + const f = (a: string, acc: string) => acc + a + assert.deepStrictEqual(pipe({ a: 'a', b: 'b' }, _.reduceRight('', f)), 'ba') + }) + + it('compact', () => { + assert.deepStrictEqual(_.compact({ foo: O.none, bar: O.some(123) }), { bar: 123 }) + }) + + it('separate', () => { + assert.deepStrictEqual(_.separate({ foo: left(123), bar: right(123) }), { + left: { foo: 123 }, + right: { bar: 123 } + }) + }) + + it('filter', () => { + const d = { a: 1, b: 3 } + assert.deepStrictEqual(pipe(d, _.filter(p)), { b: 3 }) + + // refinements + const isNumber = (u: string | number): u is number => typeof u === 'number' + const y: Record = { a: 1, b: 'foo' } + const actual = pipe(y, _.filter(isNumber)) + assert.deepStrictEqual(actual, { a: 1 }) + assert.deepStrictEqual( + pipe( + y, + _.filter((_) => true) + ), + y + ) + + const x = Object.assign(Object.create({ c: true }), { a: 1, b: 'foo' }) + assert.deepStrictEqual(pipe(x, _.filter(isNumber)), { a: 1 }) + assert.deepStrictEqual(pipe(noPrototype, _.filter(isNumber)), noPrototype) + }) + + it('filterMap', () => { + const f = (n: number) => (p(n) ? O.some(n + 1) : O.none) + assert.deepStrictEqual(pipe({}, _.filterMap(f)), {}) + assert.deepStrictEqual(pipe({ a: 1, b: 3 }, _.filterMap(f)), { b: 4 }) + }) + + it('partition', () => { + assert.deepStrictEqual(pipe({}, _.partition(p)), { left: {}, right: {} }) + assert.deepStrictEqual(pipe({ a: 1, b: 3 }, _.partition(p)), { + left: { a: 1 }, + right: { b: 3 } + }) + }) + + it('partitionMap', () => { + const f = (n: number) => (p(n) ? right(n + 1) : left(n - 1)) + assert.deepStrictEqual(pipe({}, _.partitionMap(f)), { left: {}, right: {} }) + assert.deepStrictEqual(pipe({ a: 1, b: 3 }, _.partitionMap(f)), { + left: { a: 0 }, + right: { b: 4 } + }) + }) + + it('reduceWithIndex', () => { + assert.deepStrictEqual( + pipe( + { k1: 'a', k2: 'b' }, + _.reduceWithIndex('', (k, b, a) => b + k + a) + ), + 'k1ak2b' + ) + assert.deepStrictEqual( + pipe( + { k2: 'b', k1: 'a' }, + _.reduceWithIndex('', (k, b, a) => b + k + a) + ), + 'k1ak2b' + ) + }) + + it('foldMapWithIndex', () => { + assert.deepStrictEqual( + pipe( + { k1: 'a', k2: 'b' }, + _.foldMapWithIndex(monoidString)((k, a) => k + a) + ), + 'k1ak2b' + ) + }) + + it('reduceRightWithIndex', () => { + assert.deepStrictEqual( + pipe( + { k1: 'a', k2: 'b' }, + _.reduceRightWithIndex('', (k, a, b) => b + k + a) + ), + 'k2bk1a' + ) + }) + + it('partitionMapWithIndex', () => { + assert.deepStrictEqual( + pipe( + { a: 1, b: 2 }, + _.partitionMapWithIndex((k, a: number) => (a > 1 ? right(a) : left(k))) + ), + { + left: { a: 'a' }, + right: { b: 2 } + } + ) + }) + + it('partitionWithIndex', () => { + assert.deepStrictEqual( + pipe( + { a: 1, b: 2 }, + _.partitionWithIndex((_, a: number) => a > 1) + ), + { + left: { a: 1 }, + right: { b: 2 } + } + ) + }) + + it('filterMapWithIndex', () => { + assert.deepStrictEqual( + pipe( + { a: 1, b: 2 }, + _.filterMapWithIndex((_, a: number) => (a > 1 ? O.some(a) : O.none)) + ), + { b: 2 } + ) + }) + + it('filterWithIndex', () => { + assert.deepStrictEqual( + pipe( + { a: 1, b: 2 }, + _.filterWithIndex((_, a: number) => a > 1) + ), + { b: 2 } + ) + }) + it('traverse', () => { assert.deepStrictEqual( _.traverse(O.applicativeOption)((n: number) => (n <= 2 ? O.some(n) : O.none))({ a: 1, b: 2 }), @@ -25,6 +202,15 @@ describe('Record', () => { _.traverse(O.applicativeOption)((n: number) => (n >= 2 ? O.some(n) : O.none))({ a: 1, b: 2 }), O.none ) + + assert.deepStrictEqual( + _.traversableRecord.traverse(O.applicativeOption)({ a: 1, b: 2 }, (n: number) => (n <= 2 ? O.some(n) : O.none)), + O.some({ a: 1, b: 2 }) + ) + assert.deepStrictEqual( + _.traversableRecord.traverse(O.applicativeOption)({ a: 1, b: 2 }, (n: number) => (n >= 2 ? O.some(n) : O.none)), + O.none + ) }) it('sequence', () => { @@ -64,45 +250,6 @@ describe('Record', () => { assert.deepStrictEqual(M.concat(d1, {}), d1) }) - it('map', () => { - const d1 = { k1: 1, k2: 2 } - const double = (n: number): number => n * 2 - assert.deepStrictEqual(_.map(double)(d1), { k1: 2, k2: 4 }) - }) - - it('record.map', () => { - const double = (n: number): number => n * 2 - assert.deepStrictEqual(_.record.map({ a: 1, b: 2 }, double), { a: 2, b: 4 }) - }) - - it('reduce', () => { - const d1 = { k1: 'a', k2: 'b' } - assert.deepStrictEqual( - _.record.reduce(d1, '', (b, a) => b + a), - 'ab' - ) - const d2 = { k2: 'b', k1: 'a' } - assert.deepStrictEqual( - _.record.reduce(d2, '', (b, a) => b + a), - 'ab' - ) - }) - - it('foldMap', () => { - const foldMap = _.record.foldMap(monoidString) - const x1 = { a: 'a', b: 'b' } - const f1 = identity - assert.deepStrictEqual(foldMap(x1, f1), 'ab') - }) - - it('reduceRight', () => { - const reduceRight = _.record.reduceRight - const x1 = { a: 'a', b: 'b' } - const init1 = '' - const f1 = (a: string, acc: string) => acc + a - assert.deepStrictEqual(reduceRight(x1, init1, f1), 'ba') - }) - it('getEq', () => { assert.deepStrictEqual(_.getEq(eqNumber).equals({ a: 1 }, { a: 1 }), true) assert.deepStrictEqual(_.getEq(eqNumber).equals({ a: 1 }, { a: 2 }), false) @@ -150,21 +297,24 @@ describe('Record', () => { ) }) - it('toArray', () => { - assert.deepStrictEqual(_.toArray({ a: 1, b: 2 }), [ - ['a', 1], - ['b', 2] - ]) - assert.deepStrictEqual(_.toArray({ b: 2, a: 1 }), [ - ['a', 1], - ['b', 2] - ]) - }) - it('toUnfoldable', () => { assert.deepStrictEqual(_.toUnfoldable(A.unfoldableArray)({ a: 1 }), [['a', 1]]) }) + it('traverseWithIndex should sort the keys', () => { + // tslint:disable-next-line: readonly-array + const log: Array = [] + const append = (message: string): IO.IO => () => { + log.push(message) + } + + pipe( + { b: append('b'), a: append('a') }, + _.traverseWithIndex(IO.applicativeIO)((_, io) => io) + )() + assert.deepStrictEqual(log, ['a', 'b']) + }) + it('size', () => { assert.deepStrictEqual(_.size({}), 0) assert.deepStrictEqual(_.size({ a: 1 }), 1) @@ -196,78 +346,6 @@ describe('Record', () => { assert.deepStrictEqual(_.pop('c')({ a: 1, b: 2 }), O.none) }) - it('compact', () => { - assert.deepStrictEqual(_.record.compact({ foo: O.none, bar: O.some(123) }), { bar: 123 }) - }) - - it('separate', () => { - assert.deepStrictEqual(_.record.separate({ foo: left(123), bar: right(123) }), { - left: { foo: 123 }, - right: { bar: 123 } - }) - }) - - it('filter', () => { - const d = { a: 1, b: 3 } - assert.deepStrictEqual(_.record.filter(d, p), { b: 3 }) - - // refinements - const isNumber = (u: string | number): u is number => typeof u === 'number' - const y: Record = { a: 1, b: 'foo' } - const actual = _.record.filter(y, isNumber) - assert.deepStrictEqual(actual, { a: 1 }) - - assert.deepStrictEqual( - _.record.filter(y, (_) => true), - y - ) - - const x = Object.assign(Object.create({ c: true }), { a: 1, b: 'foo' }) - assert.deepStrictEqual(_.record.filter(x, isNumber), { a: 1 }) - - assert.deepStrictEqual(_.record.filter(noPrototype, isNumber), noPrototype) - }) - - it('filterMap', () => { - const f = (n: number) => (p(n) ? O.some(n + 1) : O.none) - assert.deepStrictEqual(_.record.filterMap({}, f), {}) - assert.deepStrictEqual(_.record.filterMap({ a: 1, b: 3 }, f), { b: 4 }) - }) - - it('partition', () => { - assert.deepStrictEqual(_.record.partition({}, p), { left: {}, right: {} }) - assert.deepStrictEqual(_.record.partition({ a: 1, b: 3 }, p), { - left: { a: 1 }, - right: { b: 3 } - }) - }) - - it('partitionMap', () => { - const f = (n: number) => (p(n) ? right(n + 1) : left(n - 1)) - assert.deepStrictEqual(_.record.partitionMap({}, f), { left: {}, right: {} }) - assert.deepStrictEqual(_.record.partitionMap({ a: 1, b: 3 }, f), { - left: { a: 0 }, - right: { b: 4 } - }) - }) - - it('reduceWithIndex', () => { - const d1 = { k1: 'a', k2: 'b' } - assert.deepStrictEqual(_.reduceWithIndex('', (k, b, a) => b + k + a)(d1), 'k1ak2b') - const d2 = { k2: 'b', k1: 'a' } - assert.deepStrictEqual(_.reduceWithIndex('', (k, b, a) => b + k + a)(d2), 'k1ak2b') - }) - - it('foldMapWithIndex', () => { - const x1 = { k1: 'a', k2: 'b' } - assert.deepStrictEqual(_.foldMapWithIndex(monoidString)((k, a) => k + a)(x1), 'k1ak2b') - }) - - it('reduceRightWithIndex', () => { - const x1 = { k1: 'a', k2: 'b' } - assert.deepStrictEqual(_.reduceRightWithIndex('', (k, a, b) => b + k + a)(x1), 'k2bk1a') - }) - it('every', () => { const x: Record = { a: 1, b: 2 } const y: Record = { a: 1, b: 2 } @@ -291,8 +369,9 @@ describe('Record', () => { }) it('fromFoldableMap', () => { - const zipObject = (keys: ReadonlyArray, values: ReadonlyArray): Record => - _.fromFoldableMap(getLastSemigroup(), A.foldableArray)(A.zip(keys, values), ([k, a]) => [k, a]) + // tslint:disable-next-line: readonly-array + const zipObject = (keys: Array, values: Array): Record => + _.fromFoldableMap(getLastSemigroup(), A.foldableArray)(A.zip(keys, values), identity) assert.deepStrictEqual(zipObject(['a', 'b'], [1, 2, 3]), { a: 1, b: 2 }) @@ -301,7 +380,8 @@ describe('Record', () => { readonly name: string } - const users: ReadonlyArray = [ + // tslint:disable-next-line: readonly-array + const users: Array = [ { id: 'id1', name: 'name1' }, { id: 'id2', name: 'name2' }, { id: 'id1', name: 'name3' } @@ -333,34 +413,6 @@ describe('Record', () => { assert.deepStrictEqual(_.hasOwnProperty('b', x), false) }) - it('partitionMapWithIndex', () => { - assert.deepStrictEqual(_.partitionMapWithIndex((k, a: number) => (a > 1 ? right(a) : left(k)))({ a: 1, b: 2 }), { - left: { a: 'a' }, - right: { b: 2 } - }) - }) - - it('partitionWithIndex', () => { - assert.deepStrictEqual(_.partitionWithIndex((_, a: number) => a > 1)({ a: 1, b: 2 }), { - left: { a: 1 }, - right: { b: 2 } - }) - }) - - it('filterMapWithIndex', () => { - assert.deepStrictEqual(_.filterMapWithIndex((_, a: number) => (a > 1 ? O.some(a) : O.none))({ a: 1, b: 2 }), { - b: 2 - }) - }) - - it('filterWithIndex', () => { - assert.deepStrictEqual(_.filterWithIndex((_, a: number) => a > 1)({ a: 1, b: 2 }), { b: 2 }) - }) - - it('mapWithIndex', () => { - assert.deepStrictEqual(_.mapWithIndex((k, a: number) => k + String(a))({ a: 1, b: 2 }), { a: 'a1', b: 'b2' }) - }) - it('updateAt', () => { const x: Record = { a: 1 } assert.deepStrictEqual(_.updateAt('b', 2)(x), O.none) From c2d86f45f54c841b67f543c3ceb4f7004007a864 Mon Sep 17 00:00:00 2001 From: gcanti Date: Thu, 18 Jun 2020 17:54:17 +0200 Subject: [PATCH 069/106] split `tuple` / `readonlyTuple` mega instance --- CHANGELOG.md | 16 ++++ docs/modules/ReadonlyTuple.ts.md | 77 +++++++++++++++++ docs/modules/Tuple.ts.md | 77 +++++++++++++++++ src/ReadonlyTuple.ts | 143 +++++++++++++++++++++++-------- src/Tuple.ts | 106 +++++++++++++++++++++-- 5 files changed, 377 insertions(+), 42 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7ffb75d4a..e5c39dc13 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -183,6 +183,14 @@ high state of flux, you're at risk of it changing without notice. - add `traversableRecord` instance (@gcanti) - add `traversableWithIndexRecord` instance (@gcanti) - add `witherableRecord` instance (@gcanti) + - `ReadonlyTuple` + - add `functorTuple` instance (@gcanti) + - add `bifunctorTuple` instance (@gcanti) + - add `semigroupoidTuple` instance (@gcanti) + - add `extendTuple` instance (@gcanti) + - add `comonadTuple` instance (@gcanti) + - add `foldableTuple` instance (@gcanti) + - add `traversableTuple` instance (@gcanti) - `Record` - add `functorRecord` instance (@gcanti) - add `functorWithIndexRecord` instance (@gcanti) @@ -229,6 +237,14 @@ high state of flux, you're at risk of it changing without notice. - add `comonadTree` instance (@gcanti) - `Traced` - rename `writer` to `functorWriter` for consistency (@gcanti) + - `Tuple` + - add `functorTuple` instance (@gcanti) + - add `bifunctorTuple` instance (@gcanti) + - add `semigroupoidTuple` instance (@gcanti) + - add `extendTuple` instance (@gcanti) + - add `comonadTuple` instance (@gcanti) + - add `foldableTuple` instance (@gcanti) + - add `traversableTuple` instance (@gcanti) # 2.6.7 diff --git a/docs/modules/ReadonlyTuple.ts.md b/docs/modules/ReadonlyTuple.ts.md index df488088e..17171dde6 100644 --- a/docs/modules/ReadonlyTuple.ts.md +++ b/docs/modules/ReadonlyTuple.ts.md @@ -36,12 +36,19 @@ Added in v2.5.0 - [instances](#instances) - [URI](#uri) - [URI (type alias)](#uri-type-alias) + - [bifunctorTuple](#bifunctortuple) + - [comonadTuple](#comonadtuple) + - [extendTuple](#extendtuple) + - [foldableTuple](#foldabletuple) + - [functorTuple](#functortuple) - [getApplicative](#getapplicative) - [getApply](#getapply) - [getChain](#getchain) - [getChainRec](#getchainrec) - [getMonad](#getmonad) - [readonlyTuple](#readonlytuple) + - [semigroupoidTuple](#semigroupoidtuple) + - [traversableTuple](#traversabletuple) - [utils](#utils) - [sequence](#sequence) - [traverse](#traverse) @@ -223,6 +230,56 @@ export type URI = typeof URI Added in v2.5.0 +## bifunctorTuple + +**Signature** + +```ts +export declare const bifunctorTuple: Bifunctor2<'ReadonlyTuple'> +``` + +Added in v2.7.0 + +## comonadTuple + +**Signature** + +```ts +export declare const comonadTuple: Comonad2<'ReadonlyTuple'> +``` + +Added in v2.7.0 + +## extendTuple + +**Signature** + +```ts +export declare const extendTuple: Extend2<'ReadonlyTuple'> +``` + +Added in v2.7.0 + +## foldableTuple + +**Signature** + +```ts +export declare const foldableTuple: Foldable2<'ReadonlyTuple'> +``` + +Added in v2.7.0 + +## functorTuple + +**Signature** + +```ts +export declare const functorTuple: Functor2<'ReadonlyTuple'> +``` + +Added in v2.7.0 + ## getApplicative **Signature** @@ -287,6 +344,26 @@ export declare const readonlyTuple: Semigroupoid2<'ReadonlyTuple'> & Added in v2.5.0 +## semigroupoidTuple + +**Signature** + +```ts +export declare const semigroupoidTuple: Semigroupoid2<'ReadonlyTuple'> +``` + +Added in v2.7.0 + +## traversableTuple + +**Signature** + +```ts +export declare const traversableTuple: Traversable2<'ReadonlyTuple'> +``` + +Added in v2.7.0 + # utils ## sequence diff --git a/docs/modules/Tuple.ts.md b/docs/modules/Tuple.ts.md index 0b82a0f15..d7449f490 100644 --- a/docs/modules/Tuple.ts.md +++ b/docs/modules/Tuple.ts.md @@ -36,11 +36,18 @@ Added in v2.0.0 - [instances](#instances) - [URI](#uri) - [URI (type alias)](#uri-type-alias) + - [bifunctorTuple](#bifunctortuple) + - [comonadTuple](#comonadtuple) + - [extendTuple](#extendtuple) + - [foldableTuple](#foldabletuple) + - [functorTuple](#functortuple) - [getApplicative](#getapplicative) - [getApply](#getapply) - [getChain](#getchain) - [getChainRec](#getchainrec) - [getMonad](#getmonad) + - [semigroupoidTuple](#semigroupoidtuple) + - [traversableTuple](#traversabletuple) - [tuple](#tuple) - [utils](#utils) - [sequence](#sequence) @@ -223,6 +230,56 @@ export type URI = typeof URI Added in v2.0.0 +## bifunctorTuple + +**Signature** + +```ts +export declare const bifunctorTuple: Bifunctor2<'Tuple'> +``` + +Added in v2.7.0 + +## comonadTuple + +**Signature** + +```ts +export declare const comonadTuple: Comonad2<'Tuple'> +``` + +Added in v2.7.0 + +## extendTuple + +**Signature** + +```ts +export declare const extendTuple: Extend2<'Tuple'> +``` + +Added in v2.7.0 + +## foldableTuple + +**Signature** + +```ts +export declare const foldableTuple: Foldable2<'Tuple'> +``` + +Added in v2.7.0 + +## functorTuple + +**Signature** + +```ts +export declare const functorTuple: Functor2<'Tuple'> +``` + +Added in v2.7.0 + ## getApplicative **Signature** @@ -273,6 +330,26 @@ export declare const getMonad: (M: Monoid) => Monad2C<'Tuple', S> Added in v2.0.0 +## semigroupoidTuple + +**Signature** + +```ts +export declare const semigroupoidTuple: Semigroupoid2<'Tuple'> +``` + +Added in v2.7.0 + +## traversableTuple + +**Signature** + +```ts +export declare const traversableTuple: Traversable2<'Tuple'> +``` + +Added in v2.7.0 + ## tuple **Signature** diff --git a/src/ReadonlyTuple.ts b/src/ReadonlyTuple.ts index cae3344cb..80d24836e 100644 --- a/src/ReadonlyTuple.ts +++ b/src/ReadonlyTuple.ts @@ -16,6 +16,8 @@ import { Monoid } from './Monoid' import { Semigroup } from './Semigroup' import { Semigroupoid2 } from './Semigroupoid' import { Traversable2, PipeableTraverse2 } from './Traversable' +import { Functor2 } from './Functor' +import { Extend2 } from './Extend' // ------------------------------------------------------------------------------------- // model @@ -144,28 +146,6 @@ export function getChainRec(M: Monoid): ChainRec2C { // pipeables // ------------------------------------------------------------------------------------- -const compose_: (ab: readonly [B, A], la: readonly [A, E]) => readonly [B, E] = (ba, ae) => [fst(ba), snd(ae)] - -const map_: (fa: readonly [A, E], f: (a: A) => B) => readonly [B, E] = (ae, f) => [f(fst(ae)), snd(ae)] - -const bimap_: (fea: readonly [A, E], f: (e: E) => G, g: (a: A) => B) => readonly [B, G] = (fea, f, g) => [ - g(fst(fea)), - f(snd(fea)) -] - -const mapLeft_: (fea: readonly [A, E], f: (e: E) => G) => readonly [A, G] = (fea, f) => [fst(fea), f(snd(fea))] - -const extend_: (wa: readonly [A, E], f: (wa: readonly [A, E]) => B) => readonly [B, E] = (ae, f) => [ - f(ae), - snd(ae) -] - -const reduce_: (fa: readonly [A, E], b: B, f: (b: B, a: A) => B) => B = (ae, b, f) => f(b, fst(ae)) - -const foldMap_: (M: Monoid) => (fa: readonly [A, E], f: (a: A) => M) => M = (_) => (ae, f) => f(fst(ae)) - -const reduceRight_: (fa: readonly [A, E], b: B, f: (a: A, b: B) => B) => B = (ae, b, f) => f(fst(ae), b) - /** * Map a pair of functions over the two type arguments of the bifunctor. * @@ -245,10 +225,49 @@ export const reduce: (b: B, f: (b: B, a: A) => B) => (fa: readonly [A, export const reduceRight: (b: B, f: (a: A, b: B) => B) => (fa: readonly [A, E]) => B = (b, f) => (fa) => reduceRight_(fa, b, f) +/** + * @since 2.6.3 + */ +export const traverse: PipeableTraverse2 = ( + F: Applicative +): ((f: (a: A) => HKT) => (as: readonly [A, S]) => HKT) => { + return (f) => (ta) => traverse_(F)(ta, f) +} + +/** + * @since 2.6.3 + */ +export const sequence: Traversable2['sequence'] = (F: Applicative) => ( + fas: readonly [HKT, S] +): HKT => { + return F.map(fst(fas), (a) => [a, snd(fas)]) +} + // ------------------------------------------------------------------------------------- // instances // ------------------------------------------------------------------------------------- +const compose_: (ab: readonly [B, A], la: readonly [A, E]) => readonly [B, E] = (ba, ae) => [fst(ba), snd(ae)] +const map_: (fa: readonly [A, E], f: (a: A) => B) => readonly [B, E] = (ae, f) => [f(fst(ae)), snd(ae)] +const bimap_: (fea: readonly [A, E], f: (e: E) => G, g: (a: A) => B) => readonly [B, G] = (fea, f, g) => [ + g(fst(fea)), + f(snd(fea)) +] +const mapLeft_: (fea: readonly [A, E], f: (e: E) => G) => readonly [A, G] = (fea, f) => [fst(fea), f(snd(fea))] +const extend_: (wa: readonly [A, E], f: (wa: readonly [A, E]) => B) => readonly [B, E] = (ae, f) => [ + f(ae), + snd(ae) +] +const reduce_: (fa: readonly [A, E], b: B, f: (b: B, a: A) => B) => B = (ae, b, f) => f(b, fst(ae)) +const foldMap_: (M: Monoid) => (fa: readonly [A, E], f: (a: A) => M) => M = (_) => (ae, f) => f(fst(ae)) +const reduceRight_: (fa: readonly [A, E], b: B, f: (a: A, b: B) => B) => B = (ae, b, f) => f(fst(ae), b) +const traverse_ = (F: Applicative) => ( + as: readonly [A, S], + f: (a: A) => HKT +): HKT => { + return F.map(f(fst(as)), (b) => [b, snd(as)]) +} + /** * @category instances * @since 2.5.0 @@ -267,31 +286,81 @@ declare module './HKT' { } } -const traverse_ = (F: Applicative) => ( - as: readonly [A, S], - f: (a: A) => HKT -): HKT => { - return F.map(f(fst(as)), (b) => [b, snd(as)]) +/** + * @category instances + * @since 2.7.0 + */ +export const functorTuple: Functor2 = { + URI, + map: map_ } /** - * @since 2.6.3 + * @category instances + * @since 2.7.0 */ -export const traverse: PipeableTraverse2 = ( - F: Applicative -): ((f: (a: A) => HKT) => (as: readonly [A, S]) => HKT) => { - return (f) => (ta) => traverse_(F)(ta, f) +export const bifunctorTuple: Bifunctor2 = { + URI, + bimap: bimap_, + mapLeft: mapLeft_ } /** - * @since 2.6.3 + * @category instances + * @since 2.7.0 */ -export const sequence: Traversable2['sequence'] = (F: Applicative) => ( - fas: readonly [HKT, S] -): HKT => { - return F.map(fst(fas), (a) => [a, snd(fas)]) +export const semigroupoidTuple: Semigroupoid2 = { + URI, + compose: compose_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const extendTuple: Extend2 = { + URI, + map: map_, + extend: extend_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const comonadTuple: Comonad2 = { + URI, + map: map_, + extend: extend_, + extract +} + +/** + * @category instances + * @since 2.7.0 + */ +export const foldableTuple: Foldable2 = { + URI, + reduce: reduce_, + foldMap: foldMap_, + reduceRight: reduceRight_ } +/** + * @category instances + * @since 2.7.0 + */ +export const traversableTuple: Traversable2 = { + URI, + map: map_, + reduce: reduce_, + foldMap: foldMap_, + reduceRight: reduceRight_, + traverse: traverse_, + sequence +} + +// TODO: remove in v3 /** * @category instances * @since 2.5.0 diff --git a/src/Tuple.ts b/src/Tuple.ts index d51ffce31..c8c6463d2 100644 --- a/src/Tuple.ts +++ b/src/Tuple.ts @@ -14,6 +14,8 @@ import * as RT from './ReadonlyTuple' import { Semigroup } from './Semigroup' import { Semigroupoid2 } from './Semigroupoid' import { Traversable2, PipeableTraverse2 } from './Traversable' +import { Functor2 } from './Functor' +import { Extend2 } from './Extend' // tslint:disable:readonly-array @@ -155,6 +157,16 @@ export const sequence: Traversable2['sequence'] = RT.sequence as any // instances // ------------------------------------------------------------------------------------- +const map_: Functor2['map'] = RT.functorTuple.map as any +const bimap_: Bifunctor2['bimap'] = RT.bifunctorTuple.bimap as any +const mapLeft_: Bifunctor2['mapLeft'] = RT.bifunctorTuple.mapLeft as any +const compose_: Semigroupoid2['compose'] = RT.semigroupoidTuple.compose as any +const extend_: Extend2['extend'] = RT.extendTuple.extend as any +const reduce_: Foldable2['reduce'] = RT.foldableTuple.reduce +const foldMap_: Foldable2['foldMap'] = RT.foldableTuple.foldMap +const reduceRight_: Foldable2['reduceRight'] = RT.foldableTuple.reduceRight +const traverse_: Traversable2['traverse'] = RT.traversableTuple.traverse as any + /** * @category instances * @since 2.0.0 @@ -173,12 +185,96 @@ declare module './HKT' { } } +/** + * @category instances + * @since 2.7.0 + */ +export const functorTuple: Functor2 = { + URI, + map: map_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const bifunctorTuple: Bifunctor2 = { + URI, + bimap: bimap_, + mapLeft: mapLeft_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const semigroupoidTuple: Semigroupoid2 = { + URI, + compose: compose_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const extendTuple: Extend2 = { + URI, + map: map_, + extend: extend_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const comonadTuple: Comonad2 = { + URI, + map: map_, + extend: extend_, + extract +} + +/** + * @category instances + * @since 2.7.0 + */ +export const foldableTuple: Foldable2 = { + URI, + reduce: reduce_, + foldMap: foldMap_, + reduceRight: reduceRight_ +} + +/** + * @category instances + * @since 2.7.0 + */ +export const traversableTuple: Traversable2 = { + URI, + map: map_, + reduce: reduce_, + foldMap: foldMap_, + reduceRight: reduceRight_, + traverse: traverse_, + sequence +} + +// TODO: remove in v3 /** * @category instances * @since 2.0.0 */ -export const tuple: Semigroupoid2 & Bifunctor2 & Comonad2 & Foldable2 & Traversable2 = - /*#__PURE__*/ - (() => { - return Object.assign({}, RT.readonlyTuple as any, { URI }) - })() +export const tuple: Semigroupoid2 & Bifunctor2 & Comonad2 & Foldable2 & Traversable2 = { + URI, + compose: compose_, + map: map_, + bimap: bimap_, + mapLeft: mapLeft_, + extract, + extend: extend_, + reduce: reduce_, + foldMap: foldMap_, + reduceRight: reduceRight_, + traverse: traverse_, + sequence +} From aa31d40cf85f34ae13ab0a865d0df6a5d4dadc7c Mon Sep 17 00:00:00 2001 From: gcanti Date: Thu, 18 Jun 2020 18:14:54 +0200 Subject: [PATCH 070/106] split `state` mega instance --- CHANGELOG.md | 4 ++++ docs/modules/State.ts.md | 33 +++++++++++++++++++++++++++ src/State.ts | 49 ++++++++++++++++++++++++++++++++-------- test/State.ts | 12 +++++----- 4 files changed, 82 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e5c39dc13..fa54659e7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -201,6 +201,10 @@ high state of flux, you're at risk of it changing without notice. - add `traversableRecord` instance (@gcanti) - add `traversableWithIndexRecord` instance (@gcanti) - add `witherableRecord` instance (@gcanti) + - `State` + - add `functorState` instance (@gcanti) + - add `applicativeState` instance (@gcanti) + - add `monadState` instance (@gcanti) - `StateReaderTaskEither` - add `functorStateReaderTaskEither` instance (@gcanti) - add `applicativeStateReaderTaskEitherPar` instance (@gcanti) diff --git a/docs/modules/State.ts.md b/docs/modules/State.ts.md index c73e1a6b9..5aedb3474 100644 --- a/docs/modules/State.ts.md +++ b/docs/modules/State.ts.md @@ -32,6 +32,9 @@ Added in v2.0.0 - [instances](#instances) - [URI](#uri) - [URI (type alias)](#uri-type-alias) + - [applicativeState](#applicativestate) + - [functorState](#functorstate) + - [monadState](#monadstate) - [state](#state) - [model](#model) - [State (interface)](#state-interface) @@ -215,6 +218,36 @@ export type URI = typeof URI Added in v2.0.0 +## applicativeState + +**Signature** + +```ts +export declare const applicativeState: Applicative2<'State'> +``` + +Added in v2.7.0 + +## functorState + +**Signature** + +```ts +export declare const functorState: Functor2<'State'> +``` + +Added in v2.7.0 + +## monadState + +**Signature** + +```ts +export declare const monadState: Monad2<'State'> +``` + +Added in v2.7.0 + ## state **Signature** diff --git a/src/State.ts b/src/State.ts index 488d3bb40..40f88b74d 100644 --- a/src/State.ts +++ b/src/State.ts @@ -1,8 +1,10 @@ /** * @since 2.0.0 */ -import { Monad2 } from './Monad' import { identity, pipe } from './function' +import { Functor2 } from './Functor' +import { Monad2 } from './Monad' +import { Applicative2 } from './Applicative' // ------------------------------------------------------------------------------------- // model @@ -152,6 +154,13 @@ export const flatten: (mma: State>) => State = // instances // ------------------------------------------------------------------------------------- +/* istanbul ignore next */ +const map_: Monad2['map'] = (fa, f) => pipe(fa, map(f)) +/* istanbul ignore next */ +const ap_: Monad2['ap'] = (fab, fa) => pipe(fab, ap(fa)) +/* istanbul ignore next */ +const chain_: Monad2['chain'] = (ma, f) => pipe(ma, chain(f)) + /** * @category instances * @since 2.0.0 @@ -170,25 +179,45 @@ declare module './HKT' { } } -/* istanbul ignore next */ -const map_: Monad2['map'] = (fa, f) => pipe(fa, map(f)) -/* istanbul ignore next */ -const ap_: Monad2['ap'] = (fab, fa) => pipe(fab, ap(fa)) -/* istanbul ignore next */ -const chain_: Monad2['chain'] = (ma, f) => pipe(ma, chain(f)) +/** + * @category instances + * @since 2.7.0 + */ +export const functorState: Functor2 = { + URI, + map: map_ +} /** * @category instances - * @since 2.0.0 + * @since 2.7.0 */ -export const state: Monad2 = { +export const applicativeState: Applicative2 = { + URI, + map: map_, + ap: ap_, + of +} + +/** + * @category instances + * @since 2.7.0 + */ +export const monadState: Monad2 = { URI, map: map_, - of, ap: ap_, + of, chain: chain_ } +// TODO: remove in v3 +/** + * @category instances + * @since 2.0.0 + */ +export const state: Monad2 = monadState + // ------------------------------------------------------------------------------------- // utils // ------------------------------------------------------------------------------------- diff --git a/test/State.ts b/test/State.ts index 1c5f9825a..e9a2fcb7e 100644 --- a/test/State.ts +++ b/test/State.ts @@ -12,15 +12,15 @@ describe('State', () => { it('ap', () => { const double = (n: number) => n * 2 - assert.deepStrictEqual(pipe(_.state.of(double), _.ap(_.state.of(1)))(0), [2, 0]) + assert.deepStrictEqual(pipe(_.of(double), _.ap(_.of(1)))(0), [2, 0]) }) it('apFirst', () => { - assert.deepStrictEqual(pipe(_.state.of('a'), _.apFirst(_.state.of('b')))(0), ['a', 0]) + assert.deepStrictEqual(pipe(_.of('a'), _.apFirst(_.of('b')))(0), ['a', 0]) }) it('apSecond', () => { - assert.deepStrictEqual(pipe(_.state.of('a'), _.apSecond(_.state.of('b')))(0), ['b', 0]) + assert.deepStrictEqual(pipe(_.of('a'), _.apSecond(_.of('b')))(0), ['b', 0]) }) it('chain', () => { @@ -36,16 +36,16 @@ describe('State', () => { }) it('flatten', () => { - assert.deepStrictEqual(pipe(_.state.of(_.state.of('a')), _.flatten)(0), ['a', 0]) + assert.deepStrictEqual(pipe(_.of(_.of('a')), _.flatten)(0), ['a', 0]) }) }) it('eval', () => { - assert.deepStrictEqual(_.evalState(_.state.of('a'), 0), 'a') + assert.deepStrictEqual(_.evalState(_.of('a'), 0), 'a') }) it('exec', () => { - assert.deepStrictEqual(_.execState(_.state.of('a'), 0), 0) + assert.deepStrictEqual(_.execState(_.of('a'), 0), 0) }) it('put', () => { From 518f9f90ffe22c4883483b974119be0f9c223758 Mon Sep 17 00:00:00 2001 From: gcanti Date: Thu, 18 Jun 2020 18:20:47 +0200 Subject: [PATCH 071/106] split `store` mega instance --- CHANGELOG.md | 4 ++++ docs/modules/Store.ts.md | 33 +++++++++++++++++++++++++++++++++ src/Store.ts | 33 ++++++++++++++++++++++++++++++--- test/Store.ts | 2 +- 4 files changed, 68 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fa54659e7..735727b53 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -205,6 +205,10 @@ high state of flux, you're at risk of it changing without notice. - add `functorState` instance (@gcanti) - add `applicativeState` instance (@gcanti) - add `monadState` instance (@gcanti) + - `Store` + - add `functorStore` instance (@gcanti) + - add `extendStore` instance (@gcanti) + - add `comonadStore` instance (@gcanti) - `StateReaderTaskEither` - add `functorStateReaderTaskEither` instance (@gcanti) - add `applicativeStateReaderTaskEitherPar` instance (@gcanti) diff --git a/docs/modules/Store.ts.md b/docs/modules/Store.ts.md index 3328e3fed..0cb58670c 100644 --- a/docs/modules/Store.ts.md +++ b/docs/modules/Store.ts.md @@ -22,6 +22,9 @@ Added in v2.0.0 - [instances](#instances) - [URI](#uri) - [URI (type alias)](#uri-type-alias) + - [comonadStore](#comonadstore) + - [extendStore](#extendstore) + - [functorStore](#functorstore) - [store](#store) - [model](#model) - [Store (interface)](#store-interface) @@ -104,6 +107,36 @@ export type URI = typeof URI Added in v2.0.0 +## comonadStore + +**Signature** + +```ts +export declare const comonadStore: Comonad2<'Store'> +``` + +Added in v2.7.0 + +## extendStore + +**Signature** + +```ts +export declare const extendStore: Extend2<'Store'> +``` + +Added in v2.7.0 + +## functorStore + +**Signature** + +```ts +export declare const functorStore: Functor2<'Store'> +``` + +Added in v2.7.0 + ## store **Signature** diff --git a/src/Store.ts b/src/Store.ts index 7fe5224ad..ee849a110 100644 --- a/src/Store.ts +++ b/src/Store.ts @@ -5,6 +5,7 @@ import { Comonad2 } from './Comonad' import { Endomorphism, identity } from './function' import { Functor, Functor1, Functor2, Functor2C, Functor3, Functor3C } from './Functor' import { HKT, Kind, Kind2, Kind3, URIS, URIS2, URIS3 } from './HKT' +import { Extend2 } from './Extend' // ------------------------------------------------------------------------------------- // model @@ -137,11 +138,37 @@ declare module './HKT' { /** * @category instances - * @since 2.0.0 + * @since 2.7.0 + */ +export const functorStore: Functor2 = { + URI, + map: map_ +} + +/** + * @category instances + * @since 2.7.0 */ -export const store: Comonad2 = { +export const extendStore: Extend2 = { URI, map: map_, - extract, extend: extend_ } + +/** + * @category instances + * @since 2.7.0 + */ +export const comonadStore: Comonad2 = { + URI, + map: map_, + extend: extend_, + extract +} + +// TODO: remove in v3 +/** + * @category instances + * @since 2.0.0 + */ +export const store: Comonad2 = comonadStore diff --git a/test/Store.ts b/test/Store.ts index ad3887903..a71cab7e9 100644 --- a/test/Store.ts +++ b/test/Store.ts @@ -54,7 +54,7 @@ describe('Store', () => { it('seeks', () => { const wa: _.Store = { peek: len, pos: 'a' } assert.deepStrictEqual( - _.store.extract( + _.extract( pipe( wa, _.seeks((s) => s + 'a') From c9ad5f08b600c77b8000f6c01b5c27e4e69fa6f9 Mon Sep 17 00:00:00 2001 From: gcanti Date: Thu, 18 Jun 2020 18:43:39 +0200 Subject: [PATCH 072/106] export all zero, fromIO, fromTask and throwError --- docs/modules/Array.ts.md | 14 +++++++++++ docs/modules/Either.ts.md | 14 +++++++++++ docs/modules/IO.ts.md | 14 +++++++++++ docs/modules/IOEither.ts.md | 25 ++++++++++++++++++++ docs/modules/ReaderEither.ts.md | 14 +++++++++++ docs/modules/ReadonlyArray.ts.md | 39 ++++++++++++++++++++++--------- docs/modules/TaskEither.ts.md | 39 +++++++++++++++++++++++++++++++ src/Array.ts | 11 ++++++--- src/Either.ts | 13 +++++++---- src/IO.ts | 11 ++++++--- src/IOEither.ts | 26 ++++++++++++++------- src/ReaderEither.ts | 11 ++++++--- src/ReadonlyArray.ts | 17 +++++++++----- src/TaskEither.ts | 40 ++++++++++++++++++++++---------- 14 files changed, 238 insertions(+), 50 deletions(-) diff --git a/docs/modules/Array.ts.md b/docs/modules/Array.ts.md index 3e44d2248..5bd19b0dd 100644 --- a/docs/modules/Array.ts.md +++ b/docs/modules/Array.ts.md @@ -14,6 +14,8 @@ Added in v2.0.0 - [Alt](#alt) - [alt](#alt) +- [Alternative](#alternative) + - [zero](#zero) - [Apply](#apply) - [ap](#ap) - [apFirst](#apfirst) @@ -167,6 +169,18 @@ export declare const alt: (that: Lazy) => (fa: A[]) => A[] Added in v2.0.0 +# Alternative + +## zero + +**Signature** + +```ts +export declare const zero: () => A[] +``` + +Added in v2.7.0 + # Apply ## ap diff --git a/docs/modules/Either.ts.md b/docs/modules/Either.ts.md index 3a4de4707..45ebf2f0e 100644 --- a/docs/modules/Either.ts.md +++ b/docs/modules/Either.ts.md @@ -47,6 +47,8 @@ Added in v2.0.0 - [chainFirst](#chainfirst) - [chainW](#chainw) - [flatten](#flatten) +- [MonadThrow](#monadthrow) + - [throwError](#throwerror) - [Traversable](#traversable) - [sequence](#sequence) - [traverse](#traverse) @@ -305,6 +307,18 @@ export declare const flatten: (mma: Either>) => Either(e: E) => Either +``` + +Added in v2.6.3 + # Traversable ## sequence diff --git a/docs/modules/IO.ts.md b/docs/modules/IO.ts.md index 08457181d..3df762673 100644 --- a/docs/modules/IO.ts.md +++ b/docs/modules/IO.ts.md @@ -34,6 +34,8 @@ Added in v2.0.0 - [chain](#chain) - [chainFirst](#chainfirst) - [flatten](#flatten) +- [MonadIO](#monadio) + - [fromIO](#fromio) - [instances](#instances) - [URI](#uri) - [URI (type alias)](#uri-type-alias) @@ -151,6 +153,18 @@ export declare const flatten: (mma: IO>) => IO Added in v2.0.0 +# MonadIO + +## fromIO + +**Signature** + +```ts +export declare const fromIO: (fa: IO) => IO +``` + +Added in v2.7.0 + # instances ## URI diff --git a/docs/modules/IOEither.ts.md b/docs/modules/IOEither.ts.md index 564fc783b..bb02f2fa1 100644 --- a/docs/modules/IOEither.ts.md +++ b/docs/modules/IOEither.ts.md @@ -31,8 +31,11 @@ Added in v2.0.0 - [chainFirst](#chainfirst) - [chainW](#chainw) - [flatten](#flatten) +- [MonadIO](#monadio) + - [fromIO](#fromio) - [MonadThrow](#monadthrow) - [bracket](#bracket) + - [throwError](#throwerror) - [combinators](#combinators) - [chainEitherK](#chaineitherk) - [chainEitherKW](#chaineitherkw) @@ -218,6 +221,18 @@ export declare const flatten: (mma: IOEither>) => IOEith Added in v2.0.0 +# MonadIO + +## fromIO + +**Signature** + +```ts +export declare const fromIO: (fa: I.IO) => IOEither +``` + +Added in v2.7.0 + # MonadThrow ## bracket @@ -239,6 +254,16 @@ export declare const bracket: ( Added in v2.0.0 +## throwError + +**Signature** + +```ts +export declare const throwError: (e: E) => IOEither +``` + +Added in v2.7.0 + # combinators ## chainEitherK diff --git a/docs/modules/ReaderEither.ts.md b/docs/modules/ReaderEither.ts.md index a20e61afc..2effeae3f 100644 --- a/docs/modules/ReaderEither.ts.md +++ b/docs/modules/ReaderEither.ts.md @@ -28,6 +28,8 @@ Added in v2.0.0 - [chainFirst](#chainfirst) - [chainW](#chainw) - [flatten](#flatten) +- [MonadThrow](#monadthrow) + - [throwError](#throwerror) - [combinators](#combinators) - [chainEitherK](#chaineitherk) - [chainEitherKW](#chaineitherkw) @@ -227,6 +229,18 @@ export declare const flatten: (mma: ReaderEither(e: E) => ReaderEither +``` + +Added in v2.7.0 + # combinators ## chainEitherK diff --git a/docs/modules/ReadonlyArray.ts.md b/docs/modules/ReadonlyArray.ts.md index 6c6dbc8a6..75d4f40b8 100644 --- a/docs/modules/ReadonlyArray.ts.md +++ b/docs/modules/ReadonlyArray.ts.md @@ -14,6 +14,10 @@ Added in v2.5.0 - [Alt](#alt) - [alt](#alt) +- [Alternative](#alternative) + - [zero](#zero) +- [Applicative](#applicative) + - [of](#of) - [Apply](#apply) - [ap](#ap) - [apFirst](#apfirst) @@ -144,7 +148,6 @@ Added in v2.5.0 - [lefts](#lefts) - [lookup](#lookup) - [modifyAt](#modifyat) - - [of](#of) - [spanLeft](#spanleft) - [splitAt](#splitat) - [tail](#tail) @@ -169,6 +172,30 @@ export declare const alt: (that: Lazy) => (fa: readonly A[]) => Added in v2.5.0 +# Alternative + +## zero + +**Signature** + +```ts +export declare const zero: () => readonly A[] +``` + +Added in v2.7.0 + +# Applicative + +## of + +**Signature** + +```ts +export declare const of: (a: A) => readonly A[] +``` + +Added in v2.5.0 + # Apply ## ap @@ -2050,16 +2077,6 @@ assert.deepStrictEqual(modifyAt(1, double)([]), none) Added in v2.5.0 -## of - -**Signature** - -```ts -export declare const of: (a: A) => readonly A[] -``` - -Added in v2.5.0 - ## spanLeft Split an array into two parts: diff --git a/docs/modules/TaskEither.ts.md b/docs/modules/TaskEither.ts.md index cb963bf6c..9fa9ebbe2 100644 --- a/docs/modules/TaskEither.ts.md +++ b/docs/modules/TaskEither.ts.md @@ -33,6 +33,11 @@ Added in v2.0.0 - [chainFirst](#chainfirst) - [chainW](#chainw) - [flatten](#flatten) +- [MonadIO](#monadio) + - [fromIO](#fromio) +- [MonadTask](#monadtask) + - [fromTask](#fromtask) + - [throwError](#throwerror) - [combinators](#combinators) - [chainEitherK](#chaineitherk) - [chainEitherKW](#chaineitherkw) @@ -278,6 +283,40 @@ export declare const flatten: (mma: TaskEither>) => Ta Added in v2.0.0 +# MonadIO + +## fromIO + +**Signature** + +```ts +export declare const fromIO: (fa: IO) => TaskEither +``` + +Added in v2.7.0 + +# MonadTask + +## fromTask + +**Signature** + +```ts +export declare const fromTask: (fa: T.Task) => TaskEither +``` + +Added in v2.7.0 + +## throwError + +**Signature** + +```ts +export declare const throwError: (e: E) => TaskEither +``` + +Added in v2.7.0 + # combinators ## chainEitherK diff --git a/src/Array.ts b/src/Array.ts index 034bb66ab..747329dbc 100644 --- a/src/Array.ts +++ b/src/Array.ts @@ -1209,6 +1209,12 @@ export const wilt: PipeableWilt1 = RA.wilt as any */ export const unfold: (b: B, f: (b: B) => Option) => Array = RA.unfold as any +/** + * @category Alternative + * @since 2.7.0 + */ +export const zero: Alternative1['zero'] = RA.alternativeArray.zero as any + // ------------------------------------------------------------------------------------- // instances // ------------------------------------------------------------------------------------- @@ -1234,7 +1240,6 @@ const foldMap_: Foldable1['foldMap'] = RA.foldableArray.foldMap const reduceRight_: Foldable1['reduceRight'] = RA.foldableArray.reduceRight const traverse_: Traversable1['traverse'] = RA.traversableArray.traverse as any const alt_: Alternative1['alt'] = RA.alternativeArray.alt as any -const zero_: Alternative1['zero'] = RA.alternativeArray.zero as any const reduceWithIndex_: FoldableWithIndex1['reduceWithIndex'] = RA.foldableWithIndexArray.reduceWithIndex const foldMapWithIndex_: FoldableWithIndex1['foldMapWithIndex'] = RA.foldableWithIndexArray.foldMapWithIndex @@ -1345,7 +1350,7 @@ export const alternativeArray: Alternative1 = { ap: ap_, of, alt: alt_, - zero: zero_ + zero } /** @@ -1514,7 +1519,7 @@ export const array: FunctorWithIndex1 & filterMapWithIndex: filterMapWithIndex_, filterWithIndex: filterWithIndex_, alt: alt_, - zero: zero_, + zero, unfold, reduce: reduce_, foldMap: foldMap_, diff --git a/src/Either.ts b/src/Either.ts index f64953ca6..11eef3593 100644 --- a/src/Either.ts +++ b/src/Either.ts @@ -496,6 +496,12 @@ export const sequence: Traversable2['sequence'] = (F: Applicative) => return isLeft(ma) ? F.of(left(ma.left)) : F.map>(ma.right, right) } +/** + * @category MonadThrow + * @since 2.6.3 + */ +export const throwError: MonadThrow2['throwError'] = left + // ------------------------------------------------------------------------------------- // instances // ------------------------------------------------------------------------------------- @@ -531,7 +537,6 @@ const chainRec_: (a: A, f: (a: A) => Either>) => Either tailRec(f(a), (e) => isLeft(e) ? right(left(e.left)) : isLeft(e.right) ? left(f(e.right.left)) : right(right(e.right.right)) ) -const throwError_ = left /** * @category instances @@ -747,7 +752,7 @@ export function getValidation( traverse: traverse_, sequence, chainRec: chainRec_, - throwError: throwError_, + throwError, ap: (mab, ma) => isLeft(mab) ? isLeft(ma) @@ -902,7 +907,7 @@ export const monadThrowEither: MonadThrow2 = { ap: ap_, of, chain: chain_, - throwError: throwError_ + throwError: throwError } // TODO: remove in v3 @@ -944,7 +949,7 @@ export const either: Monad2 & alt: alt_, extend: extend_, chainRec: chainRec_, - throwError: throwError_ + throwError: throwError } // ------------------------------------------------------------------------------------- diff --git a/src/IO.ts b/src/IO.ts index 12b8d0159..440150b14 100644 --- a/src/IO.ts +++ b/src/IO.ts @@ -106,6 +106,12 @@ export const chainFirst: (f: (a: A) => IO) => (ma: IO) => IO = (f */ export const flatten: (mma: IO>) => IO = (mma) => chain_(mma, identity) +/** + * @category MonadIO + * @since 2.7.0 + */ +export const fromIO: MonadIO1['fromIO'] = identity + // ------------------------------------------------------------------------------------- // instances // ------------------------------------------------------------------------------------- @@ -113,7 +119,6 @@ export const flatten: (mma: IO>) => IO = (mma) => chain_(mma, identi const map_: (fa: IO, f: (a: A) => B) => IO = (ma, f) => () => f(ma()) const ap_: (fab: IO<(a: A) => B>, fa: IO) => IO = (mab, ma) => () => mab()(ma()) const chain_: (fa: IO, f: (a: A) => IO) => IO = (ma, f) => () => f(ma())() -const fromIO_ = identity const chainRec_: ChainRec1['chainRec'] = (a, f) => () => { let e = f(a)() while (e._tag === 'Left') { @@ -213,7 +218,7 @@ export const monadIOIO: MonadIO1 = { ap: ap_, of, chain: chain_, - fromIO: fromIO_ + fromIO } /** @@ -239,6 +244,6 @@ export const io: Monad1 & MonadIO1 & ChainRec1 = { of, ap: ap_, chain: chain_, - fromIO: fromIO_, + fromIO, chainRec: chainRec_ } diff --git a/src/IOEither.ts b/src/IOEither.ts index c29e4f001..5404a78aa 100644 --- a/src/IOEither.ts +++ b/src/IOEither.ts @@ -335,6 +335,18 @@ export const fromPredicate: { export const fromEither: (ma: E.Either) => IOEither = (ma) => E.isLeft(ma) ? left(ma.left) : right(ma.right) +/** + * @category MonadIO + * @since 2.7.0 + */ +export const fromIO: MonadIO2['fromIO'] = rightIO + +/** + * @category MonadThrow + * @since 2.7.0 + */ +export const throwError: MonadThrow2['throwError'] = left + // ------------------------------------------------------------------------------------- // instances // ------------------------------------------------------------------------------------- @@ -370,8 +382,6 @@ const of = right const chain_: Monad2['chain'] = (ma, f) => pipe(ma, chain(f)) /* istanbul ignore next */ const alt_: Alt2['alt'] = (fa, that) => pipe(fa, alt(that)) -const fromIO_ = rightIO -const throwError_ = left /** * Semigroup returning the left-most non-`Left` value. If both operands are `Right`s then the inner values are @@ -425,8 +435,8 @@ export function getIOValidation( bimap: bimap_, mapLeft: mapLeft_, alt: V.alt, - fromIO: fromIO_, - throwError: throwError_ + fromIO, + throwError } } @@ -523,7 +533,7 @@ export const monadIOIOEither: MonadIO2 = { ap: ap_, of, chain: chain_, - fromIO: fromIO_ + fromIO: fromIO } /** @@ -536,7 +546,7 @@ export const monadThrowIOEither: MonadThrow2 = { ap: ap_, of, chain: chain_, - throwError: throwError_ + throwError } // TODO: remove in v3 @@ -553,6 +563,6 @@ export const ioEither: Monad2 & Bifunctor2 & Alt2 & MonadIO2 ap: ap_, chain: chain_, alt: alt_, - fromIO: fromIO_, - throwError: throwError_ + fromIO, + throwError } diff --git a/src/ReaderEither.ts b/src/ReaderEither.ts index 40c624283..12ec70650 100644 --- a/src/ReaderEither.ts +++ b/src/ReaderEither.ts @@ -328,6 +328,12 @@ export const alt: ( that: () => ReaderEither ) => (fa: ReaderEither) => ReaderEither = (that) => R.chain(E.fold(that, right)) +/** + * @category MonadThrow + * @since 2.7.0 + */ +export const throwError: MonadThrow3['throwError'] = left + // ------------------------------------------------------------------------------------- // instances // ------------------------------------------------------------------------------------- @@ -363,7 +369,6 @@ const of = right const chain_: Monad3['chain'] = (ma, f) => pipe(ma, chain(f)) /* istanbul ignore next */ const alt_: Alt3['alt'] = (fa, that) => pipe(fa, alt(that)) -const throwError_ = left /** * Semigroup returning the left-most non-`Left` value. If both operands are `Right`s then the inner values are @@ -416,7 +421,7 @@ export function getReaderValidation( bimap: bimap_, mapLeft: mapLeft_, alt: V.alt, - throwError: throwError_ + throwError } } @@ -492,7 +497,7 @@ export const monadThrowReaderEither: MonadThrow3 = { ap: ap_, of, chain: chain_, - throwError: throwError_ + throwError } // TODO: remove in v3 diff --git a/src/ReadonlyArray.ts b/src/ReadonlyArray.ts index 4b78dadd3..fa9c61072 100644 --- a/src/ReadonlyArray.ts +++ b/src/ReadonlyArray.ts @@ -1414,10 +1414,17 @@ export function difference( } /** + * @category Applicative * @since 2.5.0 */ export const of = (a: A): ReadonlyArray => [a] +/** + * @category Alternative + * @since 2.7.0 + */ +export const zero: Alternative1['zero'] = () => empty + // ------------------------------------------------------------------------------------- // pipeables // ------------------------------------------------------------------------------------- @@ -1494,8 +1501,6 @@ const partitionMapWithIndex_ = ( const alt_: (fa: ReadonlyArray, that: Lazy>) => ReadonlyArray = (fa, that) => concat(fa, that()) -const zero_: () => ReadonlyArray = () => empty - const chain_: (fa: ReadonlyArray, f: (a: A) => ReadonlyArray) => ReadonlyArray = (fa, f) => { let outLen = 0 const l = fa.length @@ -1580,7 +1585,7 @@ const traverseWithIndex_ = (F: Applicative) => ( ta: ReadonlyArray, f: (i: number, a: A) => HKT ): HKT> => { - return reduceWithIndex_(ta, F.of>(zero_()), (i, fbs, a) => + return reduceWithIndex_(ta, F.of>(zero()), (i, fbs, a) => F.ap( F.map(fbs, (bs) => (b: B) => snoc(bs, b)), f(i, a) @@ -1873,7 +1878,7 @@ export const traverse: PipeableTraverse1 = ( export const sequence: Traversable1['sequence'] = (F: Applicative) => ( ta: ReadonlyArray> ): HKT> => { - return reduce_(ta, F.of(zero_()), (fas, fa) => + return reduce_(ta, F.of(zero()), (fas, fa) => F.ap( F.map(fas, (as) => (a: A) => snoc(as, a)), fa @@ -2040,7 +2045,7 @@ export const alternativeArray: Alternative1 = { ap: ap_, of, alt: alt_, - zero: zero_ + zero } /** @@ -2209,7 +2214,7 @@ export const readonlyArray: FunctorWithIndex1 & filterMapWithIndex: filterMapWithIndex_, filterWithIndex: filterWithIndex_, alt: alt_, - zero: zero_, + zero, unfold, reduce: reduce_, foldMap: foldMap_, diff --git a/src/TaskEither.ts b/src/TaskEither.ts index 6caba8166..eac31b844 100644 --- a/src/TaskEither.ts +++ b/src/TaskEither.ts @@ -29,6 +29,7 @@ import Either = E.Either import Task = T.Task import { Functor2 } from './Functor' import { Applicative2 } from './Applicative' +import { MonadIO2 } from './MonadIO' /** * @category model @@ -444,6 +445,24 @@ export const alt: (that: Lazy>) => (fa: TaskEither) */ export const of: Applicative2['of'] = right +/** + * @category MonadIO + * @since 2.7.0 + */ +export const fromIO: MonadIO2['fromIO'] = rightIO + +/** + * @category MonadTask + * @since 2.7.0 + */ +export const fromTask: MonadTask2['fromTask'] = rightTask + +/** + * @category MonadTask + * @since 2.7.0 + */ +export const throwError: MonadThrow2['throwError'] = left + // ------------------------------------------------------------------------------------- // instances // ------------------------------------------------------------------------------------- @@ -476,9 +495,6 @@ const apSeq_: Applicative2['ap'] = (fab, fa) => chain_(fab, (f) => map_(fa, const chain_: Monad2['chain'] = (ma, f) => pipe(ma, chain(f)) /* istanbul ignore next */ const alt_: Alt2['alt'] = (fa, that) => pipe(fa, alt(that)) -const fromIO_ = rightIO -const fromTask_ = rightTask -const throwError_ = left /** * Semigroup returning the left-most non-`Left` value. If both operands are `Right`s then the inner values are @@ -531,9 +547,9 @@ export function getTaskValidation( bimap: bimap_, mapLeft: mapLeft_, alt: V.alt, - fromIO: fromIO_, - fromTask: fromTask_, - throwError: throwError_ + fromIO, + fromTask, + throwError } } @@ -623,9 +639,9 @@ export const taskEither: Monad2 & Bifunctor2 & Alt2 & MonadTask2< ap: apPar_, chain: chain_, alt: alt_, - fromIO: fromIO_, - fromTask: fromTask_, - throwError: throwError_ + fromIO, + fromTask, + throwError } // TODO: remove in v3 @@ -644,9 +660,9 @@ export const taskEitherSeq: typeof taskEither = { ap: apSeq_, chain: chain_, alt: alt_, - fromIO: fromIO_, - fromTask: fromTask_, - throwError: throwError_ + fromIO, + fromTask, + throwError } // ------------------------------------------------------------------------------------- From 870a3775db58b092703038a82e87ea18424df16a Mon Sep 17 00:00:00 2001 From: gcanti Date: Thu, 18 Jun 2020 19:12:26 +0200 Subject: [PATCH 073/106] remove run from tests --- docs/modules/Either.ts.md | 8 +- docs/modules/IOEither.ts.md | 43 +++---- docs/modules/Option.ts.md | 6 +- src/Either.ts | 21 +--- src/IOEither.ts | 61 +++++----- src/Option.ts | 12 +- src/ReaderTask.ts | 1 + src/ReaderTaskEither.ts | 1 + src/StateReaderTaskEither.ts | 1 + src/TaskEither.ts | 2 +- test/ReaderTask.ts | 4 +- test/ReaderTaskEither.ts | 210 ++++++++++++++-------------------- test/StateReaderTaskEither.ts | 157 ++++++++++++------------- 13 files changed, 233 insertions(+), 294 deletions(-) diff --git a/docs/modules/Either.ts.md b/docs/modules/Either.ts.md index 45ebf2f0e..df614f1ec 100644 --- a/docs/modules/Either.ts.md +++ b/docs/modules/Either.ts.md @@ -433,7 +433,7 @@ structure **Signature** ```ts -export declare function left(e: E): Either +export declare const left: (e: E) => Either ``` Added in v2.0.0 @@ -467,7 +467,7 @@ of this structure **Signature** ```ts -export declare function right(a: A): Either +export declare const right: (a: A) => Either ``` Added in v2.0.0 @@ -602,7 +602,7 @@ Returns `true` if the either is an instance of `Left`, `false` otherwise **Signature** ```ts -export declare function isLeft(ma: Either): ma is Left +export declare const isLeft: (ma: Either) => ma is Left ``` Added in v2.0.0 @@ -614,7 +614,7 @@ Returns `true` if the either is an instance of `Right`, `false` otherwise **Signature** ```ts -export declare function isRight(ma: Either): ma is Right +export declare const isRight: (ma: Either) => ma is Right ``` Added in v2.0.0 diff --git a/docs/modules/IOEither.ts.md b/docs/modules/IOEither.ts.md index bb02f2fa1..72ad1d1dc 100644 --- a/docs/modules/IOEither.ts.md +++ b/docs/modules/IOEither.ts.md @@ -34,7 +34,6 @@ Added in v2.0.0 - [MonadIO](#monadio) - [fromIO](#fromio) - [MonadThrow](#monadthrow) - - [bracket](#bracket) - [throwError](#throwerror) - [combinators](#combinators) - [chainEitherK](#chaineitherk) @@ -75,6 +74,8 @@ Added in v2.0.0 - [monadThrowIOEither](#monadthrowioeither) - [model](#model) - [IOEither (interface)](#ioeither-interface) +- [utils](#utils) + - [bracket](#bracket) --- @@ -235,25 +236,6 @@ Added in v2.7.0 # MonadThrow -## bracket - -Make sure that a resource is cleaned up in the event of an exception (\*). The release action is called regardless of -whether the body action throws (\*) or returns. - -(\*) i.e. returns a `Left` - -**Signature** - -```ts -export declare const bracket: ( - acquire: IOEither, - use: (a: A) => IOEither, - release: (a: A, e: E.Either) => IOEither -) => IOEither -``` - -Added in v2.0.0 - ## throwError **Signature** @@ -644,3 +626,24 @@ export interface IOEither extends IO> {} ``` Added in v2.0.0 + +# utils + +## bracket + +Make sure that a resource is cleaned up in the event of an exception (\*). The release action is called regardless of +whether the body action throws (\*) or returns. + +(\*) i.e. returns a `Left` + +**Signature** + +```ts +export declare const bracket: ( + acquire: IOEither, + use: (a: A) => IOEither, + release: (a: A, e: E.Either) => IOEither +) => IOEither +``` + +Added in v2.0.0 diff --git a/docs/modules/Option.ts.md b/docs/modules/Option.ts.md index a8a113173..bd582d9bb 100644 --- a/docs/modules/Option.ts.md +++ b/docs/modules/Option.ts.md @@ -589,7 +589,7 @@ Added in v2.0.0 **Signature** ```ts -export declare function some(a: A): Option +export declare const some: (a: A) => Option ``` Added in v2.0.0 @@ -767,7 +767,7 @@ Returns `true` if the option is `None`, `false` otherwise **Signature** ```ts -export declare function isNone(fa: Option): fa is None +export declare const isNone: (fa: Option) => fa is None ``` **Example** @@ -788,7 +788,7 @@ Returns `true` if the option is an instance of `Some`, `false` otherwise **Signature** ```ts -export declare function isSome(fa: Option): fa is Some +export declare const isSome: (fa: Option) => fa is Some ``` **Example** diff --git a/src/Either.ts b/src/Either.ts index 11eef3593..89cb7df08 100644 --- a/src/Either.ts +++ b/src/Either.ts @@ -72,14 +72,7 @@ export type Either = Left | Right * @category guards * @since 2.0.0 */ -export function isLeft(ma: Either): ma is Left { - switch (ma._tag) { - case 'Left': - return true - case 'Right': - return false - } -} +export const isLeft = (ma: Either): ma is Left => ma._tag === 'Left' /** * Returns `true` if the either is an instance of `Right`, `false` otherwise @@ -87,9 +80,7 @@ export function isLeft(ma: Either): ma is Left { * @category guards * @since 2.0.0 */ -export function isRight(ma: Either): ma is Right { - return isLeft(ma) ? false : true -} +export const isRight = (ma: Either): ma is Right => ma._tag === 'Right' // ------------------------------------------------------------------------------------- // constructors @@ -102,9 +93,7 @@ export function isRight(ma: Either): ma is Right { * @category constructors * @since 2.0.0 */ -export function left(e: E): Either { - return { _tag: 'Left', left: e } -} +export const left = (e: E): Either => ({ _tag: 'Left', left: e }) /** * Constructs a new `Either` holding a `Right` value. This usually represents a successful value due to the right bias @@ -113,9 +102,7 @@ export function left(e: E): Either { * @category constructors * @since 2.0.0 */ -export function right(a: A): Either { - return { _tag: 'Right', right: a } -} +export const right = (a: A): Either => ({ _tag: 'Right', right: a }) // TODO: make lazy in v3 /** diff --git a/src/IOEither.ts b/src/IOEither.ts index 5404a78aa..f443b4b85 100644 --- a/src/IOEither.ts +++ b/src/IOEither.ts @@ -283,35 +283,6 @@ export const flatten: (mma: IOEither>) => IOEither export const alt: (that: Lazy>) => (fa: IOEither) => IOEither = (that) => I.chain(E.fold(that, right)) -/** - * Make sure that a resource is cleaned up in the event of an exception (\*). The release action is called regardless of - * whether the body action throws (\*) or returns. - * - * (\*) i.e. returns a `Left` - * - * @category MonadThrow - * @since 2.0.0 - */ -export const bracket = ( - acquire: IOEither, - use: (a: A) => IOEither, - release: (a: A, e: Either) => IOEither -): IOEither => - pipe( - acquire, - chain((a) => - pipe( - pipe(use(a), I.map(E.right)), - chain((e) => - pipe( - release(a, e), - chain(() => (E.isLeft(e) ? left(e.left) : of(e.right))) - ) - ) - ) - ) - ) - /** * @category constructors * @since 2.0.0 @@ -566,3 +537,35 @@ export const ioEither: Monad2 & Bifunctor2 & Alt2 & MonadIO2 fromIO, throwError } + +// ------------------------------------------------------------------------------------- +// utils +// ------------------------------------------------------------------------------------- + +/** + * Make sure that a resource is cleaned up in the event of an exception (\*). The release action is called regardless of + * whether the body action throws (\*) or returns. + * + * (\*) i.e. returns a `Left` + * + * @since 2.0.0 + */ +export const bracket = ( + acquire: IOEither, + use: (a: A) => IOEither, + release: (a: A, e: Either) => IOEither +): IOEither => + pipe( + acquire, + chain((a) => + pipe( + pipe(use(a), I.map(E.right)), + chain((e) => + pipe( + release(a, e), + chain(() => (E.isLeft(e) ? left(e.left) : of(e.right))) + ) + ) + ) + ) + ) diff --git a/src/Option.ts b/src/Option.ts index 8f7aa0dc3..43c801f0d 100644 --- a/src/Option.ts +++ b/src/Option.ts @@ -77,9 +77,7 @@ export type Option = None | Some * @category guards * @since 2.0.0 */ -export function isSome(fa: Option): fa is Some { - return fa._tag === 'Some' -} +export const isSome = (fa: Option): fa is Some => fa._tag === 'Some' /** * Returns `true` if the option is `None`, `false` otherwise @@ -93,9 +91,7 @@ export function isSome(fa: Option): fa is Some { * @category guards * @since 2.0.0 */ -export function isNone(fa: Option): fa is None { - return fa._tag === 'None' -} +export const isNone = (fa: Option): fa is None => fa._tag === 'None' // ------------------------------------------------------------------------------------- // constructors @@ -111,9 +107,7 @@ export const none: Option = { _tag: 'None' } * @category constructors * @since 2.0.0 */ -export function some(a: A): Option { - return { _tag: 'Some', value: a } -} +export const some = (a: A): Option => ({ _tag: 'Some', value: a }) /** * Constructs a new `Option` from a nullable type. If the value is `null` or `undefined`, returns `None`, otherwise diff --git a/src/ReaderTask.ts b/src/ReaderTask.ts index 3bed558bf..9d15b0bd0 100644 --- a/src/ReaderTask.ts +++ b/src/ReaderTask.ts @@ -334,6 +334,7 @@ export const readerTaskSeq: typeof readerTask = { /** * @since 2.4.0 */ +/* istanbul ignore next */ export function run(ma: ReaderTask, r: R): Promise { return ma(r)() } diff --git a/src/ReaderTaskEither.ts b/src/ReaderTaskEither.ts index 0ebd3c33a..708d69e1b 100644 --- a/src/ReaderTaskEither.ts +++ b/src/ReaderTaskEither.ts @@ -705,6 +705,7 @@ export const readerTaskEitherSeq: typeof readerTaskEither = { /** * @since 2.0.0 */ +/* istanbul ignore next */ export function run(ma: ReaderTaskEither, r: R): Promise> { return ma(r)() } diff --git a/src/StateReaderTaskEither.ts b/src/StateReaderTaskEither.ts index 176851e98..9211b1023 100644 --- a/src/StateReaderTaskEither.ts +++ b/src/StateReaderTaskEither.ts @@ -663,6 +663,7 @@ export const stateReaderTaskEitherSeq: typeof stateReaderTaskEither = { /** * @since 2.0.0 */ +/* istanbul ignore next */ export function run(ma: StateReaderTaskEither, s: S, r: R): Promise> { return ma(s)(r)() } diff --git a/src/TaskEither.ts b/src/TaskEither.ts index eac31b844..9e9a06937 100644 --- a/src/TaskEither.ts +++ b/src/TaskEither.ts @@ -635,7 +635,7 @@ export const taskEither: Monad2 & Bifunctor2 & Alt2 & MonadTask2< bimap: bimap_, mapLeft: mapLeft_, map: map_, - of: of, + of, ap: apPar_, chain: chain_, alt: alt_, diff --git a/test/ReaderTask.ts b/test/ReaderTask.ts index b85871241..f69f0c705 100644 --- a/test/ReaderTask.ts +++ b/test/ReaderTask.ts @@ -145,13 +145,13 @@ describe('ReaderTask', () => { it('chainIOK', async () => { const f = (s: string) => I.of(s.length) - const x = await _.run(pipe(_.of('a'), _.chainIOK(f)), undefined) + const x = await pipe(_.of('a'), _.chainIOK(f))(undefined)() assert.deepStrictEqual(x, 1) }) it('chainTaskK', async () => { const f = (s: string) => T.of(s.length) - const x = await _.run(pipe(_.of('a'), _.chainTaskK(f)), undefined) + const x = await pipe(_.of('a'), _.chainTaskK(f))(undefined)() assert.deepStrictEqual(x, 1) }) diff --git a/test/ReaderTaskEither.ts b/test/ReaderTaskEither.ts index 8de9d8fbc..95658c85b 100644 --- a/test/ReaderTaskEither.ts +++ b/test/ReaderTaskEither.ts @@ -18,86 +18,77 @@ describe('ReaderTaskEither', () => { describe('pipeables', () => { it('map', async () => { const double = (n: number): number => n * 2 - const x = await _.run(pipe(_.right(1), _.map(double)), {}) + const x = await pipe(_.right(1), _.map(double))({})() assert.deepStrictEqual(x, E.right(2)) }) it('ap', async () => { const double = (n: number): number => n * 2 - const x = await _.run(pipe(_.right(double), _.ap(_.right(1))), {}) + const x = await pipe(_.right(double), _.ap(_.right(1)))({})() assert.deepStrictEqual(x, E.right(2)) }) it('apFirst', async () => { - const x = await _.run(pipe(_.right('a'), _.apFirst(_.right('b'))), {}) + const x = await pipe(_.right('a'), _.apFirst(_.right('b')))({})() assert.deepStrictEqual(x, E.right('a')) }) it('apSecond', async () => { - const x = await _.run(pipe(_.right('a'), _.apSecond(_.right('b'))), {}) + const x = await pipe(_.right('a'), _.apSecond(_.right('b')))({})() assert.deepStrictEqual(x, E.right('b')) }) it('chain', async () => { const f = (a: string) => (a.length > 2 ? _.right(a.length) : _.left('b')) - const e1 = await _.run(pipe(_.right('aaa'), _.chain(f)), {}) + const e1 = await pipe(_.right('aaa'), _.chain(f))({})() assert.deepStrictEqual(e1, E.right(3)) - const e2 = await _.run(pipe(_.right('a'), _.chain(f)), {}) + const e2 = await pipe(_.right('a'), _.chain(f))({})() assert.deepStrictEqual(e2, E.left('b')) }) it('chainFirst', async () => { const f = (a: string) => (a.length > 2 ? _.right(a.length) : _.left('b')) - const e = await _.run(pipe(_.right('aaa'), _.chainFirst(f)), {}) + const e = await pipe(_.right('aaa'), _.chainFirst(f))({})() assert.deepStrictEqual(e, E.right('aaa')) }) it('flatten', async () => { - const e = await _.run(pipe(_.right(_.right('a')), _.flatten), {}) + const e = await pipe(_.right(_.right('a')), _.flatten)({})() assert.deepStrictEqual(e, E.right('a')) }) it('bimap', async () => { const f = (s: string): number => s.length const g = (n: number): boolean => n > 2 - const e1 = await _.run(pipe(_.right(1), _.bimap(f, g)), {}) + const e1 = await pipe(_.right(1), _.bimap(f, g))({})() assert.deepStrictEqual(e1, E.right(false)) - const e2 = await _.run(pipe(_.left('error'), _.bimap(f, g)), {}) + const e2 = await pipe(_.left('error'), _.bimap(f, g))({})() assert.deepStrictEqual(e2, E.left(5)) }) it('mapLeft', async () => { const len = (s: string): number => s.length - const e1 = await _.run(pipe(_.right(1), _.mapLeft(len)), {}) + const e1 = await pipe(_.right(1), _.mapLeft(len))({})() assert.deepStrictEqual(e1, E.right(1)) - const e2 = await _.run(pipe(_.left('err'), _.mapLeft(len)), {}) + const e2 = await pipe(_.left('err'), _.mapLeft(len))({})() assert.deepStrictEqual(e2, E.left(3)) }) it('alt', async () => { - const e1 = await _.run( - pipe( - _.right(1), - _.alt(() => _.right(2)) - ), - {} - ) + const e1 = await pipe( + _.right(1), + _.alt(() => _.right(2)) + )({})() assert.deepStrictEqual(e1, E.right(1)) - const e2 = await _.run( - pipe( - _.left('a'), - _.alt(() => _.right(2)) - ), - {} - ) + const e2 = await pipe( + _.left('a'), + _.alt(() => _.right(2)) + )({})() assert.deepStrictEqual(e2, E.right(2)) - const e3 = await _.run( - pipe( - _.left('a'), - _.alt(() => _.left('b')) - ), - {} - ) + const e3 = await pipe( + _.left('a'), + _.alt(() => _.left('b')) + )({})() assert.deepStrictEqual(e3, E.left('b')) }) @@ -108,130 +99,112 @@ describe('ReaderTaskEither', () => { const refinement = (u: string | number): u is number => typeof u === 'number' const isNumber = _.fromPredicate(refinement, (u) => `Invalid number ${String(u)}`) - const e1 = await _.run(gt2(3), {}) - const e2 = await _.run(gt2(1), {}) - const e3 = await _.run(isNumber(4), {}) + const e1 = await gt2(3)({})() + const e2 = await gt2(1)({})() + const e3 = await isNumber(4)({})() assert.deepStrictEqual(e1, E.right(3)) assert.deepStrictEqual(e2, E.left('Invalid number 1')) assert.deepStrictEqual(e3, E.right(4)) }) it('fromEither', async () => { - const e1 = await _.run(_.fromEither(E.right(1)), {}) + const e1 = await _.fromEither(E.right(1))({})() assert.deepStrictEqual(e1, E.right(1)) - const e2 = await _.run(_.fromEither(E.left('a')), {}) + const e2 = await _.fromEither(E.left('a'))({})() assert.deepStrictEqual(e2, E.left('a')) }) it('fromOption', async () => { - const e1 = await _.run(_.fromOption(() => 'none')(none), {}) + const e1 = await _.fromOption(() => 'none')(none)({})() assert.deepStrictEqual(e1, E.left('none')) - const e2 = await _.run(_.fromOption(() => 'none')(some(1)), {}) + const e2 = await _.fromOption(() => 'none')(some(1))({})() assert.deepStrictEqual(e2, E.right(1)) }) it('filterOrElse', async () => { - const e1 = await _.run( - pipe( - _.right(12), - _.filterOrElse( - (n) => n > 10, - () => 'a' - ) - ), - {} - ) + const e1 = await pipe( + _.right(12), + _.filterOrElse( + (n) => n > 10, + () => 'a' + ) + )({})() assert.deepStrictEqual(e1, E.right(12)) - const e2 = await _.run( - pipe( - _.right(8), - _.filterOrElse( - (n) => n > 10, - () => 'a' - ) - ), - {} - ) + const e2 = await pipe( + _.right(8), + _.filterOrElse( + (n) => n > 10, + () => 'a' + ) + )({})() assert.deepStrictEqual(e2, E.left('a')) }) }) it('ask', async () => { - const e = await _.run(_.ask(), 1) + const e = await _.ask()(1)() return assert.deepStrictEqual(e, E.right(1)) }) it('asks', async () => { - const e = await _.run( - _.asks((s: string) => s.length), - 'foo' - ) + const e = await _.asks((s: string) => s.length)('foo')() return assert.deepStrictEqual(e, E.right(3)) }) it('local', async () => { const len = (s: string): number => s.length - const e = await _.run( - pipe( - _.asks((n: number) => n + 1), - _.local(len) - ), - 'aaa' - ) + const e = await pipe( + _.asks((n: number) => n + 1), + _.local(len) + )('aaa')() assert.deepStrictEqual(e, E.right(4)) }) it('leftTask', async () => { - const e = await _.run(_.leftTask(T.of(1)), {}) + const e = await _.leftTask(T.of(1))({})() assert.deepStrictEqual(e, E.left(1)) }) it('rightTask', async () => { - const e = await _.run(_.rightTask(T.of(1)), {}) + const e = await _.rightTask(T.of(1))({})() assert.deepStrictEqual(e, E.right(1)) }) it('leftReaderTask', async () => { - const e = await _.run(_.leftReaderTask(RT.of(1)), {}) + const e = await _.leftReaderTask(RT.of(1))({})() assert.deepStrictEqual(e, E.left(1)) }) it('rightReaderTask', async () => { - const e = await _.run(_.rightReaderTask(RT.of(1)), {}) + const e = await _.rightReaderTask(RT.of(1))({})() assert.deepStrictEqual(e, E.right(1)) }) it('rightReader', async () => { - const e = await _.run(_.rightReader(R.of(1)), {}) + const e = await _.rightReader(R.of(1))({})() assert.deepStrictEqual(e, E.right(1)) }) it('leftReader', async () => { - const e = await _.run(_.leftReader(R.of(1)), {}) + const e = await _.leftReader(R.of(1))({})() assert.deepStrictEqual(e, E.left(1)) }) it('fromTaskEither', async () => { - const e = await _.run(_.fromTaskEither(TE.of(1)), {}) + const e = await _.fromTaskEither(TE.of(1))({})() assert.deepStrictEqual(e, E.right(1)) }) it('leftIO', async () => { - const e = await _.run(_.leftIO(I.of(1)), {}) + const e = await _.leftIO(I.of(1))({})() assert.deepStrictEqual(e, E.left(1)) }) it('fromIOEither', async () => { - const e1 = await _.run( - _.fromIOEither(() => E.right(1)), - {} - ) + const e1 = await _.fromIOEither(() => E.right(1))({})() assert.deepStrictEqual(e1, E.right(1)) - const e2 = await _.run( - _.fromIOEither(() => E.left('error')), - {} - ) + const e2 = await _.fromIOEither(() => E.left('error'))({})() assert.deepStrictEqual(e2, E.left('error')) }) @@ -260,21 +233,15 @@ describe('ReaderTaskEither', () => { }) it('orElse', async () => { - const e1 = await _.run( - pipe( - _.right(1), - _.orElse((s: string) => _.right(s.length)) - ), - {} - ) + const e1 = await pipe( + _.right(1), + _.orElse((s: string) => _.right(s.length)) + )({})() assert.deepStrictEqual(e1, E.right(1)) - const e2 = await _.run( - pipe( - _.left('error'), - _.orElse((s) => _.right(s.length)) - ), - {} - ) + const e2 = await pipe( + _.left('error'), + _.orElse((s) => _.right(s.length)) + )({})() assert.deepStrictEqual(e2, E.right(5)) }) @@ -292,7 +259,7 @@ describe('ReaderTaskEither', () => { _.chain(() => append('end 2')) ) const sequenceParallel = A.sequence(_.applicativeReaderTaskEitherPar) - const ns = await _.run(sequenceParallel([t1, t2]), {}) + const ns = await sequenceParallel([t1, t2])({})() assert.deepStrictEqual(ns, E.right([3, 4])) assert.deepStrictEqual(log, ['start 1', 'start 2', 'end 1', 'end 2']) }) @@ -311,41 +278,38 @@ describe('ReaderTaskEither', () => { _.chain(() => append('end 2')) ) const sequenceSeries = A.sequence(_.applicativeReaderTaskEitherSeq) - const ns = await _.run(sequenceSeries([t1, t2]), {}) + const ns = await sequenceSeries([t1, t2])({})() assert.deepStrictEqual(ns, E.right([2, 4])) assert.deepStrictEqual(log, ['start 1', 'end 1', 'start 2', 'end 2']) }) describe('MonadIO', () => { it('fromIO', async () => { - const e = await _.run( - _.fromIO(() => 1), - {} - ) + const e = await _.fromIO(() => 1)({})() assert.deepStrictEqual(e, E.right(1)) }) }) it('swap', async () => { - const e1 = await _.run(_.swap(_.right(1)), {}) + const e1 = await _.swap(_.right(1))({})() assert.deepStrictEqual(e1, E.left(1)) - const e2 = await _.run(_.swap(_.left('a')), {}) + const e2 = await _.swap(_.left('a'))({})() assert.deepStrictEqual(e2, E.right('a')) }) describe('getSemigroup', () => { it('concat', async () => { const S = _.getSemigroup(semigroupSum) - const e1 = await _.run(S.concat(_.left('a'), _.left('b')), {}) + const e1 = await S.concat(_.left('a'), _.left('b'))({})() assert.deepStrictEqual(e1, E.left('a')) - const e2 = await _.run(S.concat(_.left('a'), _.right(2)), {}) + const e2 = await S.concat(_.left('a'), _.right(2))({})() assert.deepStrictEqual(e2, E.right(2)) - const e3 = await _.run(S.concat(_.right(1), _.left('b')), {}) + const e3 = await S.concat(_.right(1), _.left('b'))({})() assert.deepStrictEqual(e3, E.right(1)) - const e4 = await _.run(S.concat(_.right(1), _.right(2)), {}) + const e4 = await S.concat(_.right(1), _.right(2))({})() assert.deepStrictEqual(e4, E.right(3)) }) }) @@ -354,30 +318,30 @@ describe('ReaderTaskEither', () => { const M = _.getApplyMonoid(monoidSum) it('concat (right)', async () => { - const x = await _.run(M.concat(_.right(1), _.right(2)), {}) + const x = await M.concat(_.right(1), _.right(2))({})() return assert.deepStrictEqual(x, E.right(3)) }) it('concat (left)', async () => { - const x = await _.run(M.concat(_.right(1), _.left('b')), {}) + const x = await M.concat(_.right(1), _.left('b'))({})() return assert.deepStrictEqual(x, E.left('b')) }) it('empty (right)', async () => { - const x = await _.run(M.concat(_.right(1), M.empty), {}) + const x = await M.concat(_.right(1), M.empty)({})() return assert.deepStrictEqual(x, E.right(1)) }) it('empty (left)', async () => { - const x = await _.run(M.concat(M.empty, _.right(1)), {}) + const x = await M.concat(M.empty, _.right(1))({})() return assert.deepStrictEqual(x, E.right(1)) }) }) it('fromReaderEither', async () => { - const e1 = await _.run(_.fromReaderEither(RE.left('a')), {}) + const e1 = await _.fromReaderEither(RE.left('a'))({})() assert.deepStrictEqual(e1, E.left('a')) - const e2 = await _.run(_.fromReaderEither(RE.right(1)), {}) + const e2 = await _.fromReaderEither(RE.right(1))({})() assert.deepStrictEqual(e2, E.right(1)) }) @@ -465,19 +429,19 @@ describe('ReaderTaskEither', () => { it('chainEitherK', async () => { const f = (s: string) => E.right(s.length) - const x = await _.run(pipe(_.right('a'), _.chainEitherK(f)), undefined) + const x = await pipe(_.right('a'), _.chainEitherK(f))(undefined)() assert.deepStrictEqual(x, E.right(1)) }) it('chainIOEitherK', async () => { const f = (s: string) => IE.right(s.length) - const x = await _.run(pipe(_.right('a'), _.chainIOEitherK(f)), undefined) + const x = await pipe(_.right('a'), _.chainIOEitherK(f))(undefined)() assert.deepStrictEqual(x, E.right(1)) }) it('chainTaskEitherK', async () => { const f = (s: string) => TE.right(s.length) - const x = await _.run(pipe(_.right('a'), _.chainTaskEitherK(f)), undefined) + const x = await pipe(_.right('a'), _.chainTaskEitherK(f))(undefined)() assert.deepStrictEqual(x, E.right(1)) }) }) diff --git a/test/StateReaderTaskEither.ts b/test/StateReaderTaskEither.ts index 381322fe1..72f0e975b 100644 --- a/test/StateReaderTaskEither.ts +++ b/test/StateReaderTaskEither.ts @@ -16,92 +16,83 @@ import * as A from '../src/Array' describe('StateReaderTaskEither', () => { describe('pipeables', () => { it('alt', async () => { - const e1 = await RTE.run( - _.evalState( - pipe( - _.right('a'), - _.alt(() => _.left(1)) - ), - {} + const e1 = await _.evalState( + pipe( + _.right('a'), + _.alt(() => _.left(1)) ), {} - ) + )({})() assert.deepStrictEqual(e1, E.right('a')) - const e2 = await RTE.run( - _.evalState( - pipe( - _.left(1), - _.alt(() => _.right('b')) - ), - {} + const e2 = await _.evalState( + pipe( + _.left(1), + _.alt(() => _.right('b')) ), {} - ) + )({})() assert.deepStrictEqual(e2, E.right('b')) - const e3 = await RTE.run( - _.evalState( - pipe( - _.left(1), - _.alt(() => _.left(2)) - ), - {} + const e3 = await _.evalState( + pipe( + _.left(1), + _.alt(() => _.left(2)) ), {} - ) + )({})() assert.deepStrictEqual(e3, E.left(2)) }) it('map', async () => { const len = (s: string): number => s.length - const e = await RTE.run(_.evalState(pipe(_.right('aaa'), _.map(len)), {}), {}) + const e = await _.evalState(pipe(_.right('aaa'), _.map(len)), {})({})() assert.deepStrictEqual(e, E.right(3)) }) it('ap', async () => { const len = (s: string): number => s.length - const e = await RTE.run(_.evalState(pipe(_.right(len), _.ap(_.right('aaa'))), {}), {}) + const e = await _.evalState(pipe(_.right(len), _.ap(_.right('aaa'))), {})({})() assert.deepStrictEqual(e, E.right(3)) }) it('apFirst', async () => { - const e = await RTE.run(_.evalState(pipe(_.right('a'), _.apFirst(_.right('b'))), {}), {}) + const e = await _.evalState(pipe(_.right('a'), _.apFirst(_.right('b'))), {})({})() assert.deepStrictEqual(e, E.right('a')) }) it('apSecond', async () => { - const e = await RTE.run(_.evalState(pipe(_.right('a'), _.apSecond(_.right('b'))), {}), {}) + const e = await _.evalState(pipe(_.right('a'), _.apSecond(_.right('b'))), {})({})() assert.deepStrictEqual(e, E.right('b')) }) it('chain', async () => { const f = (s: string) => (s.length > 2 ? _.right(s.length) : _.right(0)) - const e = await RTE.run(_.evalState(pipe(_.right('aaa'), _.chain(f)), {}), {}) + const e = await _.evalState(pipe(_.right('aaa'), _.chain(f)), {})({})() assert.deepStrictEqual(e, E.right(3)) }) it('chainFirst', async () => { const f = (s: string) => (s.length > 2 ? _.right(s.length) : _.right(0)) - const e = await RTE.run(_.evalState(pipe(_.right('aaa'), _.chainFirst(f)), {}), {}) + const e = await _.evalState(pipe(_.right('aaa'), _.chainFirst(f)), {})({})() assert.deepStrictEqual(e, E.right('aaa')) }) it('chainFirst', async () => { - const e = await RTE.run(_.evalState(pipe(_.right(_.right('a')), _.flatten), {}), {}) + const e = await _.evalState(pipe(_.right(_.right('a')), _.flatten), {})({})() assert.deepStrictEqual(e, E.right('a')) }) it('bimap', async () => { const gt2 = (n: number): boolean => n > 2 const len = (s: string): number => s.length - const e1 = await RTE.run(_.evalState(pipe(_.right('aaa'), _.bimap(gt2, len)), {}), {}) + const e1 = await _.evalState(pipe(_.right('aaa'), _.bimap(gt2, len)), {})({})() assert.deepStrictEqual(e1, E.right(3)) - const e2 = await RTE.run(_.evalState(pipe(_.left(3), _.bimap(gt2, len)), {}), {}) + const e2 = await _.evalState(pipe(_.left(3), _.bimap(gt2, len)), {})({})() assert.deepStrictEqual(e2, E.left(true)) }) it('mapLeft', async () => { const gt2 = (n: number): boolean => n > 2 - const e = await RTE.run(_.evalState(pipe(_.left(3), _.mapLeft(gt2)), {}), {}) + const e = await _.evalState(pipe(_.left(3), _.mapLeft(gt2)), {})({})() assert.deepStrictEqual(e, E.left(true)) }) @@ -112,50 +103,44 @@ describe('StateReaderTaskEither', () => { const refinement = (u: string | number): u is number => typeof u === 'number' const isNumber = _.fromPredicate(refinement, (u) => `Invalid number ${String(u)}`) - const e1 = await RTE.run(_.evalState(gt2(3), {}), {}) - const e2 = await RTE.run(_.evalState(gt2(1), {}), {}) - const e3 = await RTE.run(_.evalState(isNumber(4), {}), {}) + const e1 = await _.evalState(gt2(3), {})({})() + const e2 = await _.evalState(gt2(1), {})({})() + const e3 = await _.evalState(isNumber(4), {})({})() assert.deepStrictEqual(e1, E.right(3)) assert.deepStrictEqual(e2, E.left('Invalid number 1')) assert.deepStrictEqual(e3, E.right(4)) }) it('filterOrElse', async () => { - const e1 = await RTE.run( - _.evalState( - pipe( - _.right(12), - _.filterOrElse( - (n) => n > 10, - () => 'a' - ) - ), - {} + const e1 = await _.evalState( + pipe( + _.right(12), + _.filterOrElse( + (n) => n > 10, + () => 'a' + ) ), {} - ) + )({})() assert.deepStrictEqual(e1, E.right(12)) - const e2 = await RTE.run( - _.evalState( - pipe( - _.right(8), - _.filterOrElse( - (n) => n > 10, - () => 'a' - ) - ), - {} + const e2 = await _.evalState( + pipe( + _.right(8), + _.filterOrElse( + (n) => n > 10, + () => 'a' + ) ), {} - ) + )({})() assert.deepStrictEqual(e2, E.left('a')) }) }) it('run', async () => { const ma = _.right('aaa') - const e = await _.run(ma, {}, {}) + const e = await ma({})({})() assert.deepStrictEqual(e, E.right(['aaa', {}])) }) @@ -180,124 +165,124 @@ describe('StateReaderTaskEither', () => { it('execState', async () => { const ma = _.right('aaa') const s = {} - const e = await RTE.run(_.execState(ma, s), {}) + const e = await _.execState(ma, s)({})() assert.deepStrictEqual(e, E.right(s)) }) it('rightState', async () => { const state: State<{}, number> = (s) => [1, s] - const e = await RTE.run(_.evalState(_.rightState(state), {}), {}) + const e = await _.evalState(_.rightState(state), {})({})() assert.deepStrictEqual(e, E.right(1)) }) it('leftState', async () => { const state: State<{}, number> = (s) => [1, s] - const e = await RTE.run(_.evalState(_.leftState(state), {}), {}) + const e = await _.evalState(_.leftState(state), {})({})() assert.deepStrictEqual(e, E.left(1)) }) it('fromReaderTaskEither', async () => { const rte: RTE.ReaderTaskEither<{}, string, number> = RTE.right(1) - const e = await RTE.run(_.evalState(_.fromReaderTaskEither(rte), {}), {}) + const e = await _.evalState(_.fromReaderTaskEither(rte), {})({})() assert.deepStrictEqual(e, E.right(1)) }) it('left', async () => { - const e = await _.run(_.left(1), {}, {}) + const e = await _.left(1)({})({})() assert.deepStrictEqual(e, E.left(1)) }) it('rightTask', async () => { - const e = await _.run(_.rightTask(T.of(1)), {}, {}) + const e = await _.rightTask(T.of(1))({})({})() assert.deepStrictEqual(e, E.right([1, {}])) }) it('leftTask', async () => { - const e = await _.run(_.leftTask(T.of(1)), {}, {}) + const e = await _.leftTask(T.of(1))({})({})() assert.deepStrictEqual(e, E.left(1)) }) it('fromTaskEither', async () => { - const e = await _.run(_.fromTaskEither(TE.of(1)), {}, {}) + const e = await _.fromTaskEither(TE.of(1))({})({})() assert.deepStrictEqual(e, E.right([1, {}])) }) it('rightReader', async () => { - const e = await _.run(_.rightReader(R.of(1)), {}, {}) + const e = await _.rightReader(R.of(1))({})({})() assert.deepStrictEqual(e, E.right([1, {}])) }) it('leftReader', async () => { - const e = await _.run(_.leftReader(R.of(1)), {}, {}) + const e = await _.leftReader(R.of(1))({})({})() assert.deepStrictEqual(e, E.left(1)) }) it('fromIOEither', async () => { - const e1 = await _.run(_.fromIOEither(IE.right(1)), {}, {}) + const e1 = await _.fromIOEither(IE.right(1))({})({})() assert.deepStrictEqual(e1, E.right([1, {}])) - const e2 = await _.run(_.fromIOEither(IE.left(1)), {}, {}) + const e2 = await _.fromIOEither(IE.left(1))({})({})() assert.deepStrictEqual(e2, E.left(1)) }) it('fromEither', async () => { - const e1 = await _.run(_.fromEither(E.right(1)), {}, {}) + const e1 = await _.fromEither(E.right(1))({})({})() assert.deepStrictEqual(e1, E.right([1, {}])) - const e2 = await _.run(_.fromEither(E.left(1)), {}, {}) + const e2 = await _.fromEither(E.left(1))({})({})() assert.deepStrictEqual(e2, E.left(1)) }) it('fromOption', async () => { - const e1 = await _.run(_.fromOption(() => 'err')(O.some(1)), {}, {}) + const e1 = await _.fromOption(() => 'err')(O.some(1))({})({})() assert.deepStrictEqual(e1, E.right([1, {}])) - const e2 = await _.run(_.fromOption(() => 'err')(O.none), {}, {}) + const e2 = await _.fromOption(() => 'err')(O.none)({})({})() assert.deepStrictEqual(e2, E.left('err')) }) it('rightIO', async () => { - const e = await _.run(_.rightIO(I.of(1)), {}, {}) + const e = await _.rightIO(I.of(1))({})({})() assert.deepStrictEqual(e, E.right([1, {}])) }) it('leftIO', async () => { - const e = await _.run(_.leftIO(I.of(1)), {}, {}) + const e = await _.leftIO(I.of(1))({})({})() assert.deepStrictEqual(e, E.left(1)) }) it('fromOption', async () => { - const e1 = await _.run(_.fromOption(() => 'none')(O.none), {}, {}) + const e1 = await _.fromOption(() => 'none')(O.none)({})({})() assert.deepStrictEqual(e1, E.left('none')) - const e2 = await _.run(_.fromOption(() => 'none')(O.some(1)), {}, {}) + const e2 = await _.fromOption(() => 'none')(O.some(1))({})({})() assert.deepStrictEqual(e2, E.right([1, {}])) }) it('fromReaderEither', async () => { - const e1 = await _.run(_.fromReaderEither(RE.left('a')), {}, {}) + const e1 = await _.fromReaderEither(RE.left('a'))({})({})() assert.deepStrictEqual(e1, E.left('a')) - const e2 = await _.run(_.fromReaderEither(RE.right(1)), {}, {}) + const e2 = await _.fromReaderEither(RE.right(1))({})({})() assert.deepStrictEqual(e2, E.right([1, {}])) }) it('chainEitherK', async () => { const f = (s: string) => E.right(s.length) - const x = await _.run(pipe(_.right('a'), _.chainEitherK(f)), undefined, undefined) + const x = await pipe(_.right('a'), _.chainEitherK(f))(undefined)(undefined)() assert.deepStrictEqual(x, E.right([1, undefined])) }) it('chainIOEitherK', async () => { const f = (s: string) => IE.right(s.length) - const x = await _.run(pipe(_.right('a'), _.chainIOEitherK(f)), undefined, undefined) + const x = await pipe(_.right('a'), _.chainIOEitherK(f))(undefined)(undefined)() assert.deepStrictEqual(x, E.right([1, undefined])) }) it('chainTaskEitherK', async () => { const f = (s: string) => TE.right(s.length) - const x = await _.run(pipe(_.right('a'), _.chainTaskEitherK(f)), undefined, undefined) + const x = await pipe(_.right('a'), _.chainTaskEitherK(f))(undefined)(undefined)() assert.deepStrictEqual(x, E.right([1, undefined])) }) it('chainReaderTaskEitherK', async () => { const f = (s: string) => RTE.right(s.length) - const x = await _.run(pipe(_.right('a'), _.chainReaderTaskEitherK(f)), undefined, undefined) + const x = await pipe(_.right('a'), _.chainReaderTaskEitherK(f))(undefined)(undefined)() assert.deepStrictEqual(x, E.right([1, undefined])) }) From ff546506f643ef6b3752ec708dca842327a4911a Mon Sep 17 00:00:00 2001 From: gcanti Date: Fri, 19 Jun 2020 06:47:13 +0200 Subject: [PATCH 074/106] Either: add validation instances --- CHANGELOG.md | 3 +- docs/modules/Either.ts.md | 33 ++++++++++------ src/Either.ts | 82 ++++++++++++++++++++++----------------- src/EitherT.ts | 2 +- src/IOEither.ts | 2 +- src/ReaderEither.ts | 2 +- src/TaskEither.ts | 2 +- test/Apply.ts | 2 +- 8 files changed, 76 insertions(+), 52 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 735727b53..74b9175a3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -40,8 +40,9 @@ high state of flux, you're at risk of it changing without notice. - add `contravariantConst` instance (@gcanti) - add `bifunctorConst` instance (@gcanti) - `Either` + - add `getApplicativeValidation` constrained instance (@gcanti) + - add `getAltValidation` constrained instance (@gcanti) - add `functorEither` instance (@gcanti) - - add `applyEither` instance (@gcanti) - add `applicativeEither` instance (@gcanti) - add `monadEither` instance (@gcanti) - add `foldableEither` instance (@gcanti) diff --git a/docs/modules/Either.ts.md b/docs/modules/Either.ts.md index df614f1ec..30244865d 100644 --- a/docs/modules/Either.ts.md +++ b/docs/modules/Either.ts.md @@ -77,13 +77,14 @@ Added in v2.0.0 - [URI (type alias)](#uri-type-alias) - [altEither](#alteither) - [applicativeEither](#applicativeeither) - - [applyEither](#applyeither) - [bifunctorEither](#bifunctoreither) - [chainRecEither](#chainreceither) - [either](#either) - [extendEither](#extendeither) - [foldableEither](#foldableeither) - [functorEither](#functoreither) + - [getAltValidation](#getaltvalidation) + - [getApplicativeValidation](#getapplicativevalidation) - [getApplyMonoid](#getapplymonoid) - [getApplySemigroup](#getapplysemigroup) - [getEq](#geteq) @@ -661,16 +662,6 @@ export declare const applicativeEither: Applicative2<'Either'> Added in v2.7.0 -## applyEither - -**Signature** - -```ts -export declare const applyEither: Apply2<'Either'> -``` - -Added in v2.7.0 - ## bifunctorEither **Signature** @@ -738,6 +729,26 @@ export declare const functorEither: Functor2<'Either'> Added in v2.7.0 +## getAltValidation + +**Signature** + +```ts +export declare function getAltValidation(S: Semigroup): Alt2C +``` + +Added in v2.7.0 + +## getApplicativeValidation + +**Signature** + +```ts +export declare function getApplicativeValidation(S: Semigroup): Applicative2C +``` + +Added in v2.7.0 + ## getApplyMonoid **Signature** diff --git a/src/Either.ts b/src/Either.ts index 89cb7df08..5fff3056c 100644 --- a/src/Either.ts +++ b/src/Either.ts @@ -14,8 +14,7 @@ * @since 2.0.0 */ import { Alt2, Alt2C } from './Alt' -import { Applicative, Applicative2 } from './Applicative' -import { Apply2 } from './Apply' +import { Applicative, Applicative2, Applicative2C } from './Applicative' import { Bifunctor2 } from './Bifunctor' import { ChainRec2, ChainRec2C, tailRec } from './ChainRec' import { Separated } from './Compactable' @@ -709,6 +708,46 @@ export function getWitherable(M: Monoid): Witherable2C { } } +/** + * @category instances + * @since 2.7.0 + */ +export function getApplicativeValidation(S: Semigroup): Applicative2C { + return { + URI, + _E: undefined as any, + map: map_, + ap: (fab, fa) => + isLeft(fab) + ? isLeft(fa) + ? left(S.concat(fab.left, fa.left)) + : fab + : isLeft(fa) + ? fa + : right(fab.right(fa.right)), + of + } +} + +/** + * @category instances + * @since 2.7.0 + */ +export function getAltValidation(S: Semigroup): Alt2C { + return { + URI, + _E: undefined as any, + map: map_, + alt: (me, that) => { + if (isRight(me)) { + return me + } + const ea = that() + return isLeft(ea) ? left(S.concat(me.left, ea.left)) : ea + } + } +} + // TODO: remove in v3 /** * @category instances @@ -724,6 +763,8 @@ export function getValidation( Extend2 & ChainRec2C & MonadThrow2C { + const applicativeValidation = getApplicativeValidation(S) + const altValidation = getAltValidation(S) return { URI, _E: undefined as any, @@ -740,21 +781,8 @@ export function getValidation( sequence, chainRec: chainRec_, throwError, - ap: (mab, ma) => - isLeft(mab) - ? isLeft(ma) - ? left(S.concat(mab.left, ma.left)) - : mab - : isLeft(ma) - ? ma - : right(mab.right(ma.right)), - alt: (fx, f) => { - if (isRight(fx)) { - return fx - } - const fy = f() - return isLeft(fy) ? left(S.concat(fx.left, fy.left)) : fy - } + ap: applicativeValidation.ap, + alt: altValidation.alt } } @@ -764,14 +792,8 @@ export function getValidation( */ export function getValidationSemigroup(SE: Semigroup, SA: Semigroup): Semigroup> { return { - concat: (fx, fy) => - isLeft(fx) - ? isLeft(fy) - ? left(SE.concat(fx.left, fy.left)) - : fx - : isLeft(fy) - ? fy - : right(SA.concat(fx.right, fy.right)) + concat: (x, y) => + isLeft(x) ? (isLeft(y) ? left(SE.concat(x.left, y.left)) : x) : isLeft(y) ? y : right(SA.concat(x.right, y.right)) } } @@ -784,16 +806,6 @@ export const functorEither: Functor2 = { map: map_ } -/** - * @category instances - * @since 2.7.0 - */ -export const applyEither: Apply2 = { - URI, - map: map_, - ap: ap_ -} - /** * @category instances * @since 2.7.0 diff --git a/src/EitherT.ts b/src/EitherT.ts index 769479e06..bc4ff1636 100644 --- a/src/EitherT.ts +++ b/src/EitherT.ts @@ -100,7 +100,7 @@ export function getEitherM(M: Monad2): EitherM2 export function getEitherM(M: Monad1): EitherM1 export function getEitherM(M: Monad): EitherM export function getEitherM(M: Monad): EitherM { - const ap = apComposition(M, E.applyEither) + const ap = apComposition(M, E.applicativeEither) const of = flow(E.right, M.of) return { diff --git a/src/IOEither.ts b/src/IOEither.ts index f443b4b85..0ddbdb3bf 100644 --- a/src/IOEither.ts +++ b/src/IOEither.ts @@ -207,7 +207,7 @@ export const mapLeft: (f: (e: E) => G) => (fa: IOEither) => IOEit */ export const ap: (fa: IOEither) => (fab: IOEither B>) => IOEither = /*#__PURE__*/ - apComposition(I.applyIO, E.applyEither) + apComposition(I.applyIO, E.applicativeEither) /** * Combine two effectful actions, keeping only the result of the first. diff --git a/src/ReaderEither.ts b/src/ReaderEither.ts index 12ec70650..cde5849d5 100644 --- a/src/ReaderEither.ts +++ b/src/ReaderEither.ts @@ -242,7 +242,7 @@ export const ap: ( fa: ReaderEither ) => (fab: ReaderEither B>) => ReaderEither = /*#__PURE__*/ - apComposition(R.applyReader, E.applyEither) + apComposition(R.applyReader, E.applicativeEither) /** * Combine two effectful actions, keeping only the result of the first. diff --git a/src/TaskEither.ts b/src/TaskEither.ts index 9e9a06937..f3da7a9c7 100644 --- a/src/TaskEither.ts +++ b/src/TaskEither.ts @@ -326,7 +326,7 @@ export const mapLeft: (f: (e: E) => G) => (fa: TaskEither) => Tas */ export const ap: (fa: TaskEither) => (fab: TaskEither B>) => TaskEither = /*#__PURE__*/ - apComposition(T.applicativeTaskPar, E.applyEither) + apComposition(T.applicativeTaskPar, E.applicativeEither) /** * Combine two effectful actions, keeping only the result of the first. diff --git a/test/Apply.ts b/test/Apply.ts index bdb4f687f..566fc1a44 100644 --- a/test/Apply.ts +++ b/test/Apply.ts @@ -47,7 +47,7 @@ describe('Apply', () => { assert.deepStrictEqual(adoOption({ a: O.some(1), b: O.some(2) }), O.some({ a: 1, b: 2 })) assert.deepStrictEqual(adoOption({ a: O.some(1), b: O.none }), O.none) - const adoEither = sequenceS(E.applyEither) + const adoEither = sequenceS(E.applicativeEither) assert.deepStrictEqual(adoEither({ a: E.right(1) }), E.right({ a: 1 })) assert.deepStrictEqual(adoEither({ a: E.right(1), b: E.right(2) }), E.right({ a: 1, b: 2 })) assert.deepStrictEqual(adoEither({ a: E.right(1), b: E.left('error') }), E.left('error')) From a2de98cc3d97188687187123645aebe2dea1fbf6 Mon Sep 17 00:00:00 2001 From: gcanti Date: Fri, 19 Jun 2020 07:16:54 +0200 Subject: [PATCH 075/106] IOEither: add validation instances --- CHANGELOG.md | 3 +- docs/modules/IOEither.ts.md | 25 ++++++++++---- src/IOEither.ts | 65 +++++++++++++++++++++++++++---------- src/ValidationT.ts | 8 +++-- src/WriterT.ts | 2 ++ 5 files changed, 74 insertions(+), 29 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 74b9175a3..defd4162c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -73,8 +73,9 @@ high state of flux, you're at risk of it changing without notice. - add `monadIOIO` instance (@gcanti) - add `chainRecIO` instance (@gcanti) - `IOEither` + - add `getApplicativeIOValidation` constrained instance (@gcanti) + - add `getAltIOValidation` constrained instance (@gcanti) - add `functorIOEither` instance (@gcanti) - - add `applyIOEither` instance (@gcanti) - add `applicativeIOEither` instance (@gcanti) - add `monadIOEither` instance (@gcanti) - add `bifunctorIOEither` instance (@gcanti) diff --git a/docs/modules/IOEither.ts.md b/docs/modules/IOEither.ts.md index 72ad1d1dc..39cfebf7f 100644 --- a/docs/modules/IOEither.ts.md +++ b/docs/modules/IOEither.ts.md @@ -60,9 +60,10 @@ Added in v2.0.0 - [URI (type alias)](#uri-type-alias) - [altIOEither](#altioeither) - [applicativeIOEither](#applicativeioeither) - - [applyIOEither](#applyioeither) - [bifunctorIOEither](#bifunctorioeither) - [functorIOEither](#functorioeither) + - [getAltIOValidation](#getaltiovalidation) + - [getApplicativeIOValidation](#getapplicativeiovalidation) - [getApplyMonoid](#getapplymonoid) - [getApplySemigroup](#getapplysemigroup) - [getFilterable](#getfilterable) @@ -483,32 +484,42 @@ export declare const applicativeIOEither: Applicative2<'IOEither'> Added in v2.7.0 -## applyIOEither +## bifunctorIOEither **Signature** ```ts -export declare const applyIOEither: Apply2<'IOEither'> +export declare const bifunctorIOEither: Bifunctor2<'IOEither'> ``` Added in v2.7.0 -## bifunctorIOEither +## functorIOEither **Signature** ```ts -export declare const bifunctorIOEither: Bifunctor2<'IOEither'> +export declare const functorIOEither: Functor2<'IOEither'> ``` Added in v2.7.0 -## functorIOEither +## getAltIOValidation **Signature** ```ts -export declare const functorIOEither: Functor2<'IOEither'> +export declare function getAltIOValidation(S: Semigroup): Alt2C +``` + +Added in v2.7.0 + +## getApplicativeIOValidation + +**Signature** + +```ts +export declare function getApplicativeIOValidation(S: Semigroup): Applicative2C ``` Added in v2.7.0 diff --git a/src/IOEither.ts b/src/IOEither.ts index 0ddbdb3bf..03abd40c0 100644 --- a/src/IOEither.ts +++ b/src/IOEither.ts @@ -5,10 +5,13 @@ * @since 2.0.0 */ import { Alt2, Alt2C } from './Alt' +import { Applicative2, Applicative2C } from './Applicative' +import { apComposition } from './Apply' import { Bifunctor2 } from './Bifunctor' import * as E from './Either' import { Filterable2C, getFilterableComposition } from './Filterable' -import { identity, Lazy, Predicate, Refinement, pipe, flow } from './function' +import { flow, identity, Lazy, pipe, Predicate, Refinement } from './function' +import { Functor2 } from './Functor' import * as I from './IO' import { Monad2, Monad2C } from './Monad' import { MonadIO2, MonadIO2C } from './MonadIO' @@ -16,8 +19,6 @@ import { MonadThrow2, MonadThrow2C } from './MonadThrow' import { Monoid } from './Monoid' import { Option } from './Option' import { Semigroup } from './Semigroup' -import { getValidationM } from './ValidationT' -import { apComposition, Apply2 } from './Apply' // ------------------------------------------------------------------------------------- // model @@ -25,8 +26,6 @@ import { apComposition, Apply2 } from './Apply' import Either = E.Either import IO = I.IO -import { Functor2 } from './Functor' -import { Applicative2 } from './Applicative' /** * @category model @@ -387,6 +386,45 @@ export function getApplyMonoid(M: Monoid): Monoid> { } } +/** + * @category instances + * @since 2.7.0 + */ +export function getApplicativeIOValidation(S: Semigroup): Applicative2C { + const ap = apComposition(I.applicativeIO, E.getApplicativeValidation(S)) + return { + URI, + _E: undefined as any, + map: map_, + ap: (fab, fa) => pipe(fab, ap(fa)), + of + } +} + +/** + * @category instances + * @since 2.7.0 + */ +export function getAltIOValidation(S: Semigroup): Alt2C { + return { + URI, + _E: undefined as any, + map: map_, + alt: (me, that) => + pipe( + me, + I.chain((e1) => + E.isRight(e1) + ? I.of(e1) + : pipe( + that(), + I.map((e2) => (E.isLeft(e2) ? E.left(S.concat(e1.left, e2.left)) : e2)) + ) + ) + ) + } +} + // TODO: remove in v3 /** * @category instances @@ -395,17 +433,18 @@ export function getApplyMonoid(M: Monoid): Monoid> { export function getIOValidation( S: Semigroup ): Monad2C & Bifunctor2 & Alt2C & MonadIO2C & MonadThrow2C { - const V = getValidationM(S, I.monadIO) + const applicativeIOValidation = getApplicativeIOValidation(S) + const altIOValidation = getAltIOValidation(S) return { URI, _E: undefined as any, map: map_, - ap: V.ap, + ap: applicativeIOValidation.ap, of, chain: chain_, bimap: bimap_, mapLeft: mapLeft_, - alt: V.alt, + alt: altIOValidation.alt, fromIO, throwError } @@ -451,16 +490,6 @@ export const bifunctorIOEither: Bifunctor2 = { mapLeft: mapLeft_ } -/** - * @category instances - * @since 2.7.0 - */ -export const applyIOEither: Apply2 = { - URI, - map: map_, - ap: ap_ -} - /** * @category instances * @since 2.7.0 diff --git a/src/ValidationT.ts b/src/ValidationT.ts index aaa434111..3d489a5d1 100644 --- a/src/ValidationT.ts +++ b/src/ValidationT.ts @@ -13,6 +13,8 @@ import { Monad, Monad1, Monad2 } from './Monad' import { Semigroup } from './Semigroup' import { Lazy } from './function' +// TODO: remove module in v3 + /** * @since 2.0.0 */ @@ -69,9 +71,9 @@ export function getValidationM(S: Semigroup, M: Monad): ValidationM< ap: A.ap, of: A.of, chain: /* istanbul ignore next */ (ma, f) => M.chain(ma, (e) => (isLeft(e) ? M.of(left(e.left)) : f(e.right))), - alt: (fa, that) => - M.chain(fa, (e1) => - isRight(e1) ? A.of(e1.right) : M.map(that(), (e2) => (isLeft(e2) ? left(S.concat(e1.left, e2.left)) : e2)) + alt: (me, that) => + M.chain(me, (e1) => + isRight(e1) ? M.of(e1) : M.map(that(), (e2) => (isLeft(e2) ? left(S.concat(e1.left, e2.left)) : e2)) ) } } diff --git a/src/WriterT.ts b/src/WriterT.ts index 1ee20b3aa..6b130bbff 100644 --- a/src/WriterT.ts +++ b/src/WriterT.ts @@ -5,6 +5,8 @@ import { HKT, Kind, Kind2, Kind3, URIS, URIS2, URIS3 } from './HKT' import { Monad, Monad1, Monad2, Monad2C, Monad3 } from './Monad' import { Monoid } from './Monoid' +// TODO: remove module in v3 + // tslint:disable:readonly-array /** From 7602547d4212d83b350e8c70394365987d9fef94 Mon Sep 17 00:00:00 2001 From: gcanti Date: Fri, 19 Jun 2020 07:33:25 +0200 Subject: [PATCH 076/106] ReaderEither: add validation instances --- CHANGELOG.md | 3 +- docs/modules/ReaderEither.ts.md | 25 +++++++++---- src/Reader.ts | 1 + src/ReaderEither.ts | 64 ++++++++++++++++++++++++--------- test/ReaderEither.ts | 6 ++++ 5 files changed, 74 insertions(+), 25 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index defd4162c..34d7aca46 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -123,8 +123,9 @@ high state of flux, you're at risk of it changing without notice. - add `profunctorReader` instance (@gcanti) - add `categoryReader` instance (@gcanti) - `ReaderEither` + - add `getApplicativeReaderValidation` constrained instance (@gcanti) + - add `getAltReaderValidation` constrained instance (@gcanti) - add `functorReaderEither` instance (@gcanti) - - add `applyReaderEither` instance (@gcanti) - add `applicativeReaderEither` instance (@gcanti) - add `monadReaderEither` instance (@gcanti) - add `bifunctorReaderEither` instance (@gcanti) diff --git a/docs/modules/ReaderEither.ts.md b/docs/modules/ReaderEither.ts.md index 2effeae3f..246256774 100644 --- a/docs/modules/ReaderEither.ts.md +++ b/docs/modules/ReaderEither.ts.md @@ -57,9 +57,10 @@ Added in v2.0.0 - [URI (type alias)](#uri-type-alias) - [altReaderEither](#altreadereither) - [applicativeReaderEither](#applicativereadereither) - - [applyReaderEither](#applyreadereither) - [bifunctorReaderEither](#bifunctorreadereither) - [functorReaderEither](#functorreadereither) + - [getAltReaderValidation](#getaltreadervalidation) + - [getApplicativeReaderValidation](#getapplicativereadervalidation) - [getApplyMonoid](#getapplymonoid) - [getApplySemigroup](#getapplysemigroup) - [getReaderValidation](#getreadervalidation) @@ -506,32 +507,42 @@ export declare const applicativeReaderEither: Applicative3<'ReaderEither'> Added in v2.7.0 -## applyReaderEither +## bifunctorReaderEither **Signature** ```ts -export declare const applyReaderEither: Apply3<'ReaderEither'> +export declare const bifunctorReaderEither: Bifunctor3<'ReaderEither'> ``` Added in v2.7.0 -## bifunctorReaderEither +## functorReaderEither **Signature** ```ts -export declare const bifunctorReaderEither: Bifunctor3<'ReaderEither'> +export declare const functorReaderEither: Functor3<'ReaderEither'> ``` Added in v2.7.0 -## functorReaderEither +## getAltReaderValidation **Signature** ```ts -export declare const functorReaderEither: Functor3<'ReaderEither'> +export declare function getAltReaderValidation(S: Semigroup): Alt3C +``` + +Added in v2.7.0 + +## getApplicativeReaderValidation + +**Signature** + +```ts +export declare function getApplicativeReaderValidation(S: Semigroup): Applicative3C ``` Added in v2.7.0 diff --git a/src/Reader.ts b/src/Reader.ts index ea3551165..9def96a8b 100644 --- a/src/Reader.ts +++ b/src/Reader.ts @@ -199,6 +199,7 @@ declare module './HKT' { const map_: Monad2['map'] = (fa, f) => F.pipe(fa, map(f)) const ap_: Monad2['ap'] = (fab, fa) => F.pipe(fab, ap(fa)) +/* istanbul ignore next */ const chain_: Monad2['chain'] = (ma, f) => F.pipe(ma, chain(f)) const compose_: (ab: Reader, la: Reader) => Reader = (ab, la) => (l) => ab(la(l)) const promap_: (fbc: Reader, f: (d: D) => E, g: (a: A) => B) => Reader = (mbc, f, g) => (a) => diff --git a/src/ReaderEither.ts b/src/ReaderEither.ts index cde5849d5..9567bbe64 100644 --- a/src/ReaderEither.ts +++ b/src/ReaderEither.ts @@ -2,17 +2,18 @@ * @since 2.0.0 */ import { Alt3, Alt3C } from './Alt' -import { apComposition, Apply3 } from './Apply' +import { Applicative3, Applicative3C } from './Applicative' +import { apComposition } from './Apply' import { Bifunctor3 } from './Bifunctor' import * as E from './Either' import { flow, identity, pipe, Predicate, Refinement } from './function' +import { Functor3 } from './Functor' import { Monad3, Monad3C } from './Monad' import { MonadThrow3, MonadThrow3C } from './MonadThrow' import { Monoid } from './Monoid' import { Option } from './Option' import * as R from './Reader' import { Semigroup } from './Semigroup' -import { getValidationM } from './ValidationT' // ------------------------------------------------------------------------------------- // model @@ -20,8 +21,6 @@ import { getValidationM } from './ValidationT' import Either = E.Either import Reader = R.Reader -import { Functor3 } from './Functor' -import { Applicative3 } from './Applicative' /** * @category model @@ -403,6 +402,46 @@ export function getApplyMonoid(M: Monoid): Monoid(S: Semigroup): Applicative3C { + const ap = apComposition(R.applicativeReader, E.getApplicativeValidation(S)) + return { + URI, + _E: undefined as any, + map: map_, + ap: (fab, fa) => pipe(fab, ap(fa)), + of + } +} + +/** + * @category instances + * @since 2.7.0 + */ +export function getAltReaderValidation(S: Semigroup): Alt3C { + return { + URI, + _E: undefined as any, + map: map_, + alt: (me, that) => + pipe( + me, + R.chain((e1) => + E.isRight(e1) + ? R.of(e1) + : pipe( + that(), + R.map((e2) => (E.isLeft(e2) ? E.left(S.concat(e1.left, e2.left)) : e2)) + ) + ) + ) + } +} + +// TODO: remove in v3 /** * @category instances * @since 2.3.0 @@ -410,17 +449,18 @@ export function getApplyMonoid(M: Monoid): Monoid( S: Semigroup ): Monad3C & Bifunctor3 & Alt3C & MonadThrow3C { - const V = getValidationM(S, R.monadReader) + const applicativeReaderValidation = getApplicativeReaderValidation(S) + const altReaderValidation = getAltReaderValidation(S) return { URI, _E: undefined as any, map: map_, - ap: V.ap, + ap: applicativeReaderValidation.ap, of, chain: chain_, bimap: bimap_, mapLeft: mapLeft_, - alt: V.alt, + alt: altReaderValidation.alt, throwError } } @@ -434,16 +474,6 @@ export const functorReaderEither: Functor3 = { map: map_ } -/** - * @category instances - * @since 2.7.0 - */ -export const applyReaderEither: Apply3 = { - URI, - map: map_, - ap: ap_ -} - /** * @category instances * @since 2.7.0 diff --git a/test/ReaderEither.ts b/test/ReaderEither.ts index 2ee3365fe..196c21eba 100644 --- a/test/ReaderEither.ts +++ b/test/ReaderEither.ts @@ -6,6 +6,7 @@ import { pipe } from '../src/function' import * as R from '../src/Reader' import * as _ from '../src/ReaderEither' import { semigroupSum, semigroupString } from '../src/Semigroup' +import * as Apply from '../src/Apply' describe('ReaderEither', () => { describe('pipeables', () => { @@ -191,6 +192,11 @@ describe('ReaderEither', () => { describe('getReaderValidation', () => { const RV = _.getReaderValidation(semigroupString) + it('ap', () => { + const sequenceS = Apply.sequenceS(RV) + assert.deepStrictEqual(sequenceS({ a: _.left('a'), b: _.left('b') })(undefined), E.left('ab')) + }) + it('alt', async () => { const e1 = RV.alt(_.right(1), () => _.right(2))(undefined) assert.deepStrictEqual(e1, E.right(1)) From 1b2642b27e98d490836982a8112cf4a8ac2b5e43 Mon Sep 17 00:00:00 2001 From: gcanti Date: Fri, 19 Jun 2020 08:12:16 +0200 Subject: [PATCH 077/106] TaskEither: add validation instances --- CHANGELOG.md | 2 ++ docs/modules/TaskEither.ts.md | 22 ++++++++++++++ jest.config.js | 3 +- src/TaskEither.ts | 56 ++++++++++++++++++++++++++++++----- 4 files changed, 74 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 34d7aca46..0d56565f9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -223,6 +223,8 @@ high state of flux, you're at risk of it changing without notice. - add `applicativeTaskPar` instance (@gcanti) - add `applicativeTaskSeq` instance (@gcanti) - `TaskEither` + - add `getApplicativeTaskValidation` constrained instance (@gcanti) + - add `getAltTaskValidation` constrained instance (@gcanti) - add `functorTaskEither` instance (@gcanti) - add `applicativeTaskEitherPar` instance (@gcanti) - add `applicativeTaskEitherSeq` instance (@gcanti) diff --git a/docs/modules/TaskEither.ts.md b/docs/modules/TaskEither.ts.md index 9fa9ebbe2..949bc5858 100644 --- a/docs/modules/TaskEither.ts.md +++ b/docs/modules/TaskEither.ts.md @@ -73,6 +73,8 @@ Added in v2.0.0 - [applicativeTaskEitherSeq](#applicativetaskeitherseq) - [bifunctorTaskEither](#bifunctortaskeither) - [functorTaskEither](#functortaskeither) + - [getAltTaskValidation](#getalttaskvalidation) + - [getApplicativeTaskValidation](#getapplicativetaskvalidation) - [getApplyMonoid](#getapplymonoid) - [getApplySemigroup](#getapplysemigroup) - [getFilterable](#getfilterable) @@ -703,6 +705,26 @@ export declare const functorTaskEither: Functor2<'TaskEither'> Added in v2.7.0 +## getAltTaskValidation + +**Signature** + +```ts +export declare function getAltTaskValidation(S: Semigroup): Alt2C +``` + +Added in v2.7.0 + +## getApplicativeTaskValidation + +**Signature** + +```ts +export declare function getApplicativeTaskValidation(A: Apply1, S: Semigroup): Applicative2C +``` + +Added in v2.7.0 + ## getApplyMonoid **Signature** diff --git a/jest.config.js b/jest.config.js index 0b5ab1684..f052d0d55 100644 --- a/jest.config.js +++ b/jest.config.js @@ -9,7 +9,8 @@ module.exports = { '!src/ReaderT.ts', '!src/StateT.ts', '!src/TheseT.ts', - '!src/WriterT.ts' + '!src/WriterT.ts', + '!src/ValidationT.ts' ], transform: { '^.+\\.tsx?$': 'ts-jest' diff --git a/src/TaskEither.ts b/src/TaskEither.ts index f3da7a9c7..94c5f6458 100644 --- a/src/TaskEither.ts +++ b/src/TaskEither.ts @@ -5,21 +5,23 @@ * @since 2.0.0 */ import { Alt2, Alt2C } from './Alt' -import { apComposition } from './Apply' +import { Applicative2, Applicative2C } from './Applicative' +import { apComposition, Apply1 } from './Apply' import { Bifunctor2 } from './Bifunctor' import * as E from './Either' import { Filterable2C, getFilterableComposition } from './Filterable' import { flow, identity, Lazy, pipe, Predicate, Refinement } from './function' +import { Functor2 } from './Functor' import { IO } from './IO' import { IOEither } from './IOEither' import { Monad2, Monad2C } from './Monad' +import { MonadIO2 } from './MonadIO' import { MonadTask2, MonadTask2C } from './MonadTask' import { MonadThrow2, MonadThrow2C } from './MonadThrow' import { Monoid } from './Monoid' import { Option } from './Option' import { Semigroup } from './Semigroup' import * as T from './Task' -import { getValidationM } from './ValidationT' // ------------------------------------------------------------------------------------- // model @@ -27,9 +29,6 @@ import { getValidationM } from './ValidationT' import Either = E.Either import Task = T.Task -import { Functor2 } from './Functor' -import { Applicative2 } from './Applicative' -import { MonadIO2 } from './MonadIO' /** * @category model @@ -529,6 +528,46 @@ export function getApplyMonoid(M: Monoid): Monoid> { } } +/** + * @category instances + * @since 2.7.0 + */ +export function getApplicativeTaskValidation(A: Apply1, S: Semigroup): Applicative2C { + const ap = apComposition(A, E.getApplicativeValidation(S)) + return { + URI, + _E: undefined as any, + map: map_, + ap: (fab, fa) => pipe(fab, ap(fa)), + of + } +} + +/** + * @category instances + * @since 2.7.0 + */ +export function getAltTaskValidation(S: Semigroup): Alt2C { + return { + URI, + _E: undefined as any, + map: map_, + alt: (me, that) => + pipe( + me, + T.chain((e1) => + E.isRight(e1) + ? T.of(e1) + : pipe( + that(), + T.map((e2) => (E.isLeft(e2) ? E.left(S.concat(e1.left, e2.left)) : e2)) + ) + ) + ) + } +} + +// TODO: remove in v3 /** * @category instances * @since 2.0.0 @@ -536,17 +575,18 @@ export function getApplyMonoid(M: Monoid): Monoid> { export function getTaskValidation( S: Semigroup ): Monad2C & Bifunctor2 & Alt2C & MonadTask2C & MonadThrow2C { - const V = getValidationM(S, T.monadTask) + const applicativeTaskValidation = getApplicativeTaskValidation(T.applicativeTaskPar, S) + const altTaskValidation = getAltTaskValidation(S) return { URI, _E: undefined as any, map: map_, - ap: V.ap, + ap: applicativeTaskValidation.ap, of, chain: chain_, bimap: bimap_, mapLeft: mapLeft_, - alt: V.alt, + alt: altTaskValidation.alt, fromIO, fromTask, throwError From 439cae27f8b35e4464162af90ab804ca7ca6f085 Mon Sep 17 00:00:00 2001 From: gcanti Date: Fri, 19 Jun 2020 08:48:03 +0200 Subject: [PATCH 078/106] ReaderTaskEither: add validation instances --- CHANGELOG.md | 2 ++ docs/modules/ReaderTaskEither.ts.md | 38 +++++++++++++++----- src/IOEither.ts | 14 ++------ src/ReaderEither.ts | 14 ++------ src/ReaderTaskEither.ts | 54 +++++++++++++++++++++++------ test/ReaderTaskEither.ts | 4 +++ 6 files changed, 84 insertions(+), 42 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0d56565f9..35b19bf16 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -136,6 +136,8 @@ high state of flux, you're at risk of it changing without notice. - add `applicativeReaderTaskPar` instance (@gcanti) - add `applicativeReaderTaskSeq` instance (@gcanti) - `ReaderTaskEither` + - add `getApplicativeReaderTaskValidation` constrained instance (@gcanti) + - add `getAltReaderTaskValidation` constrained instance (@gcanti) - add `functorReaderTaskEither` instance (@gcanti) - add `applicativeReaderTaskEitherPar` instance (@gcanti) - add `applicativeReaderTaskEitherSeq` instance (@gcanti) diff --git a/docs/modules/ReaderTaskEither.ts.md b/docs/modules/ReaderTaskEither.ts.md index 5a700beed..6f942f4f1 100644 --- a/docs/modules/ReaderTaskEither.ts.md +++ b/docs/modules/ReaderTaskEither.ts.md @@ -79,6 +79,8 @@ Added in v2.0.0 - [applicativeReaderTaskEitherSeq](#applicativereadertaskeitherseq) - [bifunctorReaderTaskEither](#bifunctorreadertaskeither) - [functorReaderTaskEither](#functorreadertaskeither) + - [getAltReaderTaskValidation](#getaltreadertaskvalidation) + - [getApplicativeReaderTaskValidation](#getapplicativereadertaskvalidation) - [getApplyMonoid](#getapplymonoid) - [getApplySemigroup](#getapplysemigroup) - [getReaderTaskValidation](#getreadertaskvalidation) @@ -276,7 +278,7 @@ Added in v2.0.0 **Signature** ```ts -export declare const fromTask: (fa: Task) => ReaderTaskEither +export declare const fromTask: (fa: T.Task) => ReaderTaskEither ``` Added in v2.0.0 @@ -301,7 +303,7 @@ Added in v2.0.0 ```ts export declare const chainEitherK: ( - f: (a: A) => Either + f: (a: A) => E.Either ) => (ma: ReaderTaskEither) => ReaderTaskEither ``` @@ -315,7 +317,7 @@ Less strict version of [`chainEitherK`](#chainEitherK). ```ts export declare const chainEitherKW: ( - f: (a: A) => Either + f: (a: A) => E.Either ) => (ma: ReaderTaskEither) => ReaderTaskEither ``` @@ -483,7 +485,7 @@ Added in v2.0.0 **Signature** ```ts -export declare const fromEither: (ma: Either) => ReaderTaskEither +export declare const fromEither: (ma: E.Either) => ReaderTaskEither ``` Added in v2.0.0 @@ -662,8 +664,8 @@ Added in v2.0.0 ```ts export declare const getOrElse: ( - onLeft: (e: E) => ReaderTask -) => (ma: ReaderTaskEither) => ReaderTask + onLeft: (e: E) => RT.ReaderTask +) => (ma: ReaderTaskEither) => RT.ReaderTask ``` Added in v2.0.0 @@ -676,8 +678,8 @@ Less strict version of [`getOrElse`](#getOrElse). ```ts export declare const getOrElseW: ( - onLeft: (e: E) => ReaderTask -) => (ma: ReaderTaskEither) => ReaderTask + onLeft: (e: E) => RT.ReaderTask +) => (ma: ReaderTaskEither) => RT.ReaderTask ``` Added in v2.6.0 @@ -754,6 +756,26 @@ export declare const functorReaderTaskEither: Functor3<'ReaderTaskEither'> Added in v2.7.0 +## getAltReaderTaskValidation + +**Signature** + +```ts +export declare function getAltReaderTaskValidation(S: Semigroup): Alt3C +``` + +Added in v2.7.0 + +## getApplicativeReaderTaskValidation + +**Signature** + +```ts +export declare function getApplicativeReaderTaskValidation(A: Apply1, S: Semigroup): Applicative3C +``` + +Added in v2.7.0 + ## getApplyMonoid **Signature** diff --git a/src/IOEither.ts b/src/IOEither.ts index 03abd40c0..6df55e903 100644 --- a/src/IOEither.ts +++ b/src/IOEither.ts @@ -406,22 +406,12 @@ export function getApplicativeIOValidation(S: Semigroup): Applicative2C(S: Semigroup): Alt2C { + const A = E.getAltValidation(S) return { URI, _E: undefined as any, map: map_, - alt: (me, that) => - pipe( - me, - I.chain((e1) => - E.isRight(e1) - ? I.of(e1) - : pipe( - that(), - I.map((e2) => (E.isLeft(e2) ? E.left(S.concat(e1.left, e2.left)) : e2)) - ) - ) - ) + alt: (me, that) => () => A.alt(me(), () => that()()) } } diff --git a/src/ReaderEither.ts b/src/ReaderEither.ts index 9567bbe64..dd43d6eb5 100644 --- a/src/ReaderEither.ts +++ b/src/ReaderEither.ts @@ -422,22 +422,12 @@ export function getApplicativeReaderValidation(S: Semigroup): Applicative3 * @since 2.7.0 */ export function getAltReaderValidation(S: Semigroup): Alt3C { + const A = E.getAltValidation(S) return { URI, _E: undefined as any, map: map_, - alt: (me, that) => - pipe( - me, - R.chain((e1) => - E.isRight(e1) - ? R.of(e1) - : pipe( - that(), - R.map((e2) => (E.isLeft(e2) ? E.left(S.concat(e1.left, e2.left)) : e2)) - ) - ) - ) + alt: (me, that) => (r) => A.alt(me(r), () => that()(r)) } } diff --git a/src/ReaderTaskEither.ts b/src/ReaderTaskEither.ts index 708d69e1b..8ae02e05f 100644 --- a/src/ReaderTaskEither.ts +++ b/src/ReaderTaskEither.ts @@ -2,33 +2,36 @@ * @since 2.0.0 */ import { Alt3, Alt3C } from './Alt' +import { Applicative3, Applicative3C } from './Applicative' +import { apComposition, Apply1 } from './Apply' import { Bifunctor3 } from './Bifunctor' -import { Either } from './Either' +import * as E from './Either' import { flow, identity, Lazy, pipe, Predicate, Refinement } from './function' +import { Functor3 } from './Functor' import { IO } from './IO' import { IOEither } from './IOEither' import { Monad3, Monad3C } from './Monad' +import { MonadIO3 } from './MonadIO' import { MonadTask3, MonadTask3C } from './MonadTask' import { MonadThrow3, MonadThrow3C } from './MonadThrow' import { Monoid } from './Monoid' import { Option } from './Option' import * as R from './Reader' import { ReaderEither } from './ReaderEither' -import { monadReaderTask, ReaderTask } from './ReaderTask' +import * as RT from './ReaderTask' import { Semigroup } from './Semigroup' -import { Task } from './Task' +import * as T from './Task' import * as TE from './TaskEither' -import { getValidationM } from './ValidationT' // ------------------------------------------------------------------------------------- // model // ------------------------------------------------------------------------------------- +import Either = E.Either +import Task = T.Task import TaskEither = TE.TaskEither import Reader = R.Reader -import { Functor3 } from './Functor' -import { Applicative3 } from './Applicative' -import { MonadIO3 } from './MonadIO' +import ReaderTask = RT.ReaderTask /** * @category model @@ -582,6 +585,36 @@ export function getApplyMonoid(M: Monoid): Monoid(A: Apply1, S: Semigroup): Applicative3C { + const ap = apComposition(R.applicativeReader, TE.getApplicativeTaskValidation(A, S)) + return { + URI, + _E: undefined as any, + map: map_, + ap: (fab, fa) => pipe(fab, ap(fa)), + of + } +} + +/** + * @category instances + * @since 2.7.0 + */ +export function getAltReaderTaskValidation(S: Semigroup): Alt3C { + const A = TE.getAltTaskValidation(S) + return { + URI, + _E: undefined as any, + map: map_, + alt: (me, that) => (r) => A.alt(me(r), () => that()(r)) + } +} + +// TODO: remove in v3 /** * @category instances * @since 2.3.0 @@ -589,7 +622,8 @@ export function getApplyMonoid(M: Monoid): Monoid( S: Semigroup ): Monad3C & Bifunctor3 & Alt3C & MonadTask3C & MonadThrow3C { - const V = getValidationM(S, monadReaderTask) + const applicativeReaderTaskValidation = getApplicativeReaderTaskValidation(T.applicativeTaskPar, S) + const altReaderTaskValidation = getAltReaderTaskValidation(S) return { URI, _E: undefined as any, @@ -598,8 +632,8 @@ export function getReaderTaskValidation( chain: chain_, bimap: bimap_, mapLeft: mapLeft_, - ap: V.ap, - alt: V.alt, + ap: applicativeReaderTaskValidation.ap, + alt: altReaderTaskValidation.alt, fromIO, fromTask, throwError diff --git a/test/ReaderTaskEither.ts b/test/ReaderTaskEither.ts index 95658c85b..e7c088a04 100644 --- a/test/ReaderTaskEither.ts +++ b/test/ReaderTaskEither.ts @@ -352,6 +352,10 @@ describe('ReaderTaskEither', () => { assert.deepStrictEqual(e, E.right(1)) }) + it('alt', async () => { + assert.deepStrictEqual(await RTV.alt(_.left('a'), () => _.left('b'))(null)(), E.left('ab')) + }) + it('throwError', async () => { const e = await RTV.throwError('error')({})() assert.deepStrictEqual(e, E.left('error')) From 28f093da80e82fc668b097da7c2d43ad51d6ba39 Mon Sep 17 00:00:00 2001 From: gcanti Date: Fri, 19 Jun 2020 09:14:56 +0200 Subject: [PATCH 079/106] TaskThese: add getApplicative constrained instance --- CHANGELOG.md | 1 + docs/modules/Either.ts.md | 6 ++--- docs/modules/IOEither.ts.md | 6 ++--- docs/modules/ReaderEither.ts.md | 6 ++--- docs/modules/ReaderTaskEither.ts.md | 6 ++--- docs/modules/TaskEither.ts.md | 6 ++--- docs/modules/TaskThese.ts.md | 27 ++++++++++++++++++++- src/Either.ts | 14 +++++------ src/IOEither.ts | 14 +++++------ src/ReaderEither.ts | 14 +++++------ src/ReaderTaskEither.ts | 14 +++++------ src/TaskEither.ts | 14 +++++------ src/TaskThese.ts | 37 +++++++++++++++++++++++------ 13 files changed, 107 insertions(+), 58 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 35b19bf16..9f69662e6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -236,6 +236,7 @@ high state of flux, you're at risk of it changing without notice. - add `functorTaskThese` instance (@gcanti) - add `bifunctorTaskThese` instance (@gcanti) - `These` + - add `getApplicative` constrained instance (@gcanti) - add `functorThese` instance (@gcanti) - add `bifunctorThese` instance (@gcanti) - add `foldableThese` instance (@gcanti) diff --git a/docs/modules/Either.ts.md b/docs/modules/Either.ts.md index 30244865d..6a0a47364 100644 --- a/docs/modules/Either.ts.md +++ b/docs/modules/Either.ts.md @@ -734,7 +734,7 @@ Added in v2.7.0 **Signature** ```ts -export declare function getAltValidation(S: Semigroup): Alt2C +export declare function getAltValidation(SE: Semigroup): Alt2C ``` Added in v2.7.0 @@ -744,7 +744,7 @@ Added in v2.7.0 **Signature** ```ts -export declare function getApplicativeValidation(S: Semigroup): Applicative2C +export declare function getApplicativeValidation(SE: Semigroup): Applicative2C ``` Added in v2.7.0 @@ -837,7 +837,7 @@ Added in v2.0.0 ```ts export declare function getValidation( - S: Semigroup + SE: Semigroup ): Monad2C & Foldable2 & Traversable2 & diff --git a/docs/modules/IOEither.ts.md b/docs/modules/IOEither.ts.md index 39cfebf7f..8b1759515 100644 --- a/docs/modules/IOEither.ts.md +++ b/docs/modules/IOEither.ts.md @@ -509,7 +509,7 @@ Added in v2.7.0 **Signature** ```ts -export declare function getAltIOValidation(S: Semigroup): Alt2C +export declare function getAltIOValidation(SE: Semigroup): Alt2C ``` Added in v2.7.0 @@ -519,7 +519,7 @@ Added in v2.7.0 **Signature** ```ts -export declare function getApplicativeIOValidation(S: Semigroup): Applicative2C +export declare function getApplicativeIOValidation(SE: Semigroup): Applicative2C ``` Added in v2.7.0 @@ -563,7 +563,7 @@ Added in v2.1.0 ```ts export declare function getIOValidation( - S: Semigroup + SE: Semigroup ): Monad2C & Bifunctor2 & Alt2C & MonadIO2C & MonadThrow2C ``` diff --git a/docs/modules/ReaderEither.ts.md b/docs/modules/ReaderEither.ts.md index 246256774..11b1b7906 100644 --- a/docs/modules/ReaderEither.ts.md +++ b/docs/modules/ReaderEither.ts.md @@ -532,7 +532,7 @@ Added in v2.7.0 **Signature** ```ts -export declare function getAltReaderValidation(S: Semigroup): Alt3C +export declare function getAltReaderValidation(SE: Semigroup): Alt3C ``` Added in v2.7.0 @@ -542,7 +542,7 @@ Added in v2.7.0 **Signature** ```ts -export declare function getApplicativeReaderValidation(S: Semigroup): Applicative3C +export declare function getApplicativeReaderValidation(SE: Semigroup): Applicative3C ``` Added in v2.7.0 @@ -576,7 +576,7 @@ Added in v2.0.0 ```ts export declare function getReaderValidation( - S: Semigroup + SE: Semigroup ): Monad3C & Bifunctor3 & Alt3C & MonadThrow3C ``` diff --git a/docs/modules/ReaderTaskEither.ts.md b/docs/modules/ReaderTaskEither.ts.md index 6f942f4f1..15d43d464 100644 --- a/docs/modules/ReaderTaskEither.ts.md +++ b/docs/modules/ReaderTaskEither.ts.md @@ -761,7 +761,7 @@ Added in v2.7.0 **Signature** ```ts -export declare function getAltReaderTaskValidation(S: Semigroup): Alt3C +export declare function getAltReaderTaskValidation(SE: Semigroup): Alt3C ``` Added in v2.7.0 @@ -771,7 +771,7 @@ Added in v2.7.0 **Signature** ```ts -export declare function getApplicativeReaderTaskValidation(A: Apply1, S: Semigroup): Applicative3C +export declare function getApplicativeReaderTaskValidation(A: Apply1, SE: Semigroup): Applicative3C ``` Added in v2.7.0 @@ -805,7 +805,7 @@ Added in v2.0.0 ```ts export declare function getReaderTaskValidation( - S: Semigroup + SE: Semigroup ): Monad3C & Bifunctor3 & Alt3C & MonadTask3C & MonadThrow3C ``` diff --git a/docs/modules/TaskEither.ts.md b/docs/modules/TaskEither.ts.md index 949bc5858..0d2d70a52 100644 --- a/docs/modules/TaskEither.ts.md +++ b/docs/modules/TaskEither.ts.md @@ -710,7 +710,7 @@ Added in v2.7.0 **Signature** ```ts -export declare function getAltTaskValidation(S: Semigroup): Alt2C +export declare function getAltTaskValidation(SE: Semigroup): Alt2C ``` Added in v2.7.0 @@ -720,7 +720,7 @@ Added in v2.7.0 **Signature** ```ts -export declare function getApplicativeTaskValidation(A: Apply1, S: Semigroup): Applicative2C +export declare function getApplicativeTaskValidation(A: Apply1, SE: Semigroup): Applicative2C ``` Added in v2.7.0 @@ -777,7 +777,7 @@ Added in v2.0.0 ```ts export declare function getTaskValidation( - S: Semigroup + SE: Semigroup ): Monad2C & Bifunctor2 & Alt2C & MonadTask2C & MonadThrow2C ``` diff --git a/docs/modules/TaskThese.ts.md b/docs/modules/TaskThese.ts.md index b3ae20cdc..8818bdb57 100644 --- a/docs/modules/TaskThese.ts.md +++ b/docs/modules/TaskThese.ts.md @@ -12,6 +12,8 @@ Added in v2.4.0

Table of contents

+- [Applicative](#applicative) + - [of](#of) - [Bifunctor](#bifunctor) - [bimap](#bimap) - [mapLeft](#mapleft) @@ -36,6 +38,7 @@ Added in v2.4.0 - [URI (type alias)](#uri-type-alias) - [bifunctorTaskThese](#bifunctortaskthese) - [functorTaskThese](#functortaskthese) + - [getApplicative](#getapplicative) - [getMonad](#getmonad) - [getSemigroup](#getsemigroup) - [taskThese](#taskthese) @@ -44,6 +47,18 @@ Added in v2.4.0 --- +# Applicative + +## of + +**Signature** + +```ts +export declare const of: (a: A) => TaskThese +``` + +Added in v2.7.0 + # Bifunctor ## bimap @@ -247,12 +262,22 @@ export declare const functorTaskThese: Functor2<'TaskThese'> Added in v2.7.0 +## getApplicative + +**Signature** + +```ts +export declare function getApplicative(A: Apply1, SE: Semigroup): Applicative2C +``` + +Added in v2.7.0 + ## getMonad **Signature** ```ts -export declare function getMonad(S: Semigroup): Monad2C & MonadTask2C +export declare function getMonad(SE: Semigroup): Monad2C & MonadTask2C ``` Added in v2.4.0 diff --git a/src/Either.ts b/src/Either.ts index 5fff3056c..2dd96b191 100644 --- a/src/Either.ts +++ b/src/Either.ts @@ -712,7 +712,7 @@ export function getWitherable(M: Monoid): Witherable2C { * @category instances * @since 2.7.0 */ -export function getApplicativeValidation(S: Semigroup): Applicative2C { +export function getApplicativeValidation(SE: Semigroup): Applicative2C { return { URI, _E: undefined as any, @@ -720,7 +720,7 @@ export function getApplicativeValidation(S: Semigroup): Applicative2C isLeft(fab) ? isLeft(fa) - ? left(S.concat(fab.left, fa.left)) + ? left(SE.concat(fab.left, fa.left)) : fab : isLeft(fa) ? fa @@ -733,7 +733,7 @@ export function getApplicativeValidation(S: Semigroup): Applicative2C(S: Semigroup): Alt2C { +export function getAltValidation(SE: Semigroup): Alt2C { return { URI, _E: undefined as any, @@ -743,7 +743,7 @@ export function getAltValidation(S: Semigroup): Alt2C { return me } const ea = that() - return isLeft(ea) ? left(S.concat(me.left, ea.left)) : ea + return isLeft(ea) ? left(SE.concat(me.left, ea.left)) : ea } } } @@ -754,7 +754,7 @@ export function getAltValidation(S: Semigroup): Alt2C { * @since 2.0.0 */ export function getValidation( - S: Semigroup + SE: Semigroup ): Monad2C & Foldable2 & Traversable2 & @@ -763,8 +763,8 @@ export function getValidation( Extend2 & ChainRec2C & MonadThrow2C { - const applicativeValidation = getApplicativeValidation(S) - const altValidation = getAltValidation(S) + const applicativeValidation = getApplicativeValidation(SE) + const altValidation = getAltValidation(SE) return { URI, _E: undefined as any, diff --git a/src/IOEither.ts b/src/IOEither.ts index 6df55e903..7a79e3cfe 100644 --- a/src/IOEither.ts +++ b/src/IOEither.ts @@ -390,8 +390,8 @@ export function getApplyMonoid(M: Monoid
): Monoid> { * @category instances * @since 2.7.0 */ -export function getApplicativeIOValidation(S: Semigroup): Applicative2C { - const ap = apComposition(I.applicativeIO, E.getApplicativeValidation(S)) +export function getApplicativeIOValidation(SE: Semigroup): Applicative2C { + const ap = apComposition(I.applicativeIO, E.getApplicativeValidation(SE)) return { URI, _E: undefined as any, @@ -405,8 +405,8 @@ export function getApplicativeIOValidation(S: Semigroup): Applicative2C(S: Semigroup): Alt2C { - const A = E.getAltValidation(S) +export function getAltIOValidation(SE: Semigroup): Alt2C { + const A = E.getAltValidation(SE) return { URI, _E: undefined as any, @@ -421,10 +421,10 @@ export function getAltIOValidation(S: Semigroup): Alt2C { * @since 2.0.0 */ export function getIOValidation( - S: Semigroup + SE: Semigroup ): Monad2C & Bifunctor2 & Alt2C & MonadIO2C & MonadThrow2C { - const applicativeIOValidation = getApplicativeIOValidation(S) - const altIOValidation = getAltIOValidation(S) + const applicativeIOValidation = getApplicativeIOValidation(SE) + const altIOValidation = getAltIOValidation(SE) return { URI, _E: undefined as any, diff --git a/src/ReaderEither.ts b/src/ReaderEither.ts index dd43d6eb5..52fbce3c1 100644 --- a/src/ReaderEither.ts +++ b/src/ReaderEither.ts @@ -406,8 +406,8 @@ export function getApplyMonoid(M: Monoid): Monoid(S: Semigroup): Applicative3C { - const ap = apComposition(R.applicativeReader, E.getApplicativeValidation(S)) +export function getApplicativeReaderValidation(SE: Semigroup): Applicative3C { + const ap = apComposition(R.applicativeReader, E.getApplicativeValidation(SE)) return { URI, _E: undefined as any, @@ -421,8 +421,8 @@ export function getApplicativeReaderValidation(S: Semigroup): Applicative3 * @category instances * @since 2.7.0 */ -export function getAltReaderValidation(S: Semigroup): Alt3C { - const A = E.getAltValidation(S) +export function getAltReaderValidation(SE: Semigroup): Alt3C { + const A = E.getAltValidation(SE) return { URI, _E: undefined as any, @@ -437,10 +437,10 @@ export function getAltReaderValidation(S: Semigroup): Alt3C { * @since 2.3.0 */ export function getReaderValidation( - S: Semigroup + SE: Semigroup ): Monad3C & Bifunctor3 & Alt3C & MonadThrow3C { - const applicativeReaderValidation = getApplicativeReaderValidation(S) - const altReaderValidation = getAltReaderValidation(S) + const applicativeReaderValidation = getApplicativeReaderValidation(SE) + const altReaderValidation = getAltReaderValidation(SE) return { URI, _E: undefined as any, diff --git a/src/ReaderTaskEither.ts b/src/ReaderTaskEither.ts index 8ae02e05f..1d07712a6 100644 --- a/src/ReaderTaskEither.ts +++ b/src/ReaderTaskEither.ts @@ -589,8 +589,8 @@ export function getApplyMonoid(M: Monoid): Monoid(A: Apply1, S: Semigroup): Applicative3C { - const ap = apComposition(R.applicativeReader, TE.getApplicativeTaskValidation(A, S)) +export function getApplicativeReaderTaskValidation(A: Apply1, SE: Semigroup): Applicative3C { + const ap = apComposition(R.applicativeReader, TE.getApplicativeTaskValidation(A, SE)) return { URI, _E: undefined as any, @@ -604,8 +604,8 @@ export function getApplicativeReaderTaskValidation(A: Apply1, S: Semig * @category instances * @since 2.7.0 */ -export function getAltReaderTaskValidation(S: Semigroup): Alt3C { - const A = TE.getAltTaskValidation(S) +export function getAltReaderTaskValidation(SE: Semigroup): Alt3C { + const A = TE.getAltTaskValidation(SE) return { URI, _E: undefined as any, @@ -620,10 +620,10 @@ export function getAltReaderTaskValidation(S: Semigroup): Alt3C { * @since 2.3.0 */ export function getReaderTaskValidation( - S: Semigroup + SE: Semigroup ): Monad3C & Bifunctor3 & Alt3C & MonadTask3C & MonadThrow3C { - const applicativeReaderTaskValidation = getApplicativeReaderTaskValidation(T.applicativeTaskPar, S) - const altReaderTaskValidation = getAltReaderTaskValidation(S) + const applicativeReaderTaskValidation = getApplicativeReaderTaskValidation(T.applicativeTaskPar, SE) + const altReaderTaskValidation = getAltReaderTaskValidation(SE) return { URI, _E: undefined as any, diff --git a/src/TaskEither.ts b/src/TaskEither.ts index 94c5f6458..37ef6be02 100644 --- a/src/TaskEither.ts +++ b/src/TaskEither.ts @@ -532,8 +532,8 @@ export function getApplyMonoid(M: Monoid): Monoid> { * @category instances * @since 2.7.0 */ -export function getApplicativeTaskValidation(A: Apply1, S: Semigroup): Applicative2C { - const ap = apComposition(A, E.getApplicativeValidation(S)) +export function getApplicativeTaskValidation(A: Apply1, SE: Semigroup): Applicative2C { + const ap = apComposition(A, E.getApplicativeValidation(SE)) return { URI, _E: undefined as any, @@ -547,7 +547,7 @@ export function getApplicativeTaskValidation(A: Apply1, S: Semigroup(S: Semigroup): Alt2C { +export function getAltTaskValidation(SE: Semigroup): Alt2C { return { URI, _E: undefined as any, @@ -560,7 +560,7 @@ export function getAltTaskValidation(S: Semigroup): Alt2C { ? T.of(e1) : pipe( that(), - T.map((e2) => (E.isLeft(e2) ? E.left(S.concat(e1.left, e2.left)) : e2)) + T.map((e2) => (E.isLeft(e2) ? E.left(SE.concat(e1.left, e2.left)) : e2)) ) ) ) @@ -573,10 +573,10 @@ export function getAltTaskValidation(S: Semigroup): Alt2C { * @since 2.0.0 */ export function getTaskValidation( - S: Semigroup + SE: Semigroup ): Monad2C & Bifunctor2 & Alt2C & MonadTask2C & MonadThrow2C { - const applicativeTaskValidation = getApplicativeTaskValidation(T.applicativeTaskPar, S) - const altTaskValidation = getAltTaskValidation(S) + const applicativeTaskValidation = getApplicativeTaskValidation(T.applicativeTaskPar, SE) + const altTaskValidation = getAltTaskValidation(SE) return { URI, _E: undefined as any, diff --git a/src/TaskThese.ts b/src/TaskThese.ts index 7358e5ab7..a6e2a6a55 100644 --- a/src/TaskThese.ts +++ b/src/TaskThese.ts @@ -1,7 +1,7 @@ /** * @since 2.4.0 */ -import { apComposition } from './Apply' +import { apComposition, Apply1 } from './Apply' import { Bifunctor2 } from './Bifunctor' import { flow, pipe } from './function' import { Functor2 } from './Functor' @@ -19,6 +19,7 @@ import * as TH from './These' import These = TH.These import Task = T.Task +import { Applicative2C, Applicative2 } from './Applicative' /** * @category model @@ -160,6 +161,12 @@ export const bimap: (f: (e: E) => G, g: (a: A) => B) => (fa: TaskThe export const mapLeft: (f: (e: E) => G) => (fa: TaskThese) => TaskThese = (f) => T.map(TH.mapLeft(f)) +/** + * @category Applicative + * @since 2.7.0 + */ +export const of: Applicative2['of'] = right + // ------------------------------------------------------------------------------------- // instances // ------------------------------------------------------------------------------------- @@ -198,16 +205,32 @@ export function getSemigroup(SE: Semigroup, SA: Semigroup): Semigrou /** * @category instances - * @since 2.4.0 + * @since 2.7.0 */ -export function getMonad(S: Semigroup): Monad2C & MonadTask2C { - const ap = apComposition(T.applicativeTaskPar, TH.getMonad(S)) +export function getApplicative(A: Apply1, SE: Semigroup): Applicative2C { + const ap = apComposition(A, TH.getMonad(SE)) return { URI, _E: undefined as any, map: map_, ap: (fab, fa) => pipe(fab, ap(fa)), - of: right, + of + } +} + +// TODO: remove in v3 +/** + * @category instances + * @since 2.4.0 + */ +export function getMonad(SE: Semigroup): Monad2C & MonadTask2C { + const A = getApplicative(T.applicativeTaskPar, SE) + return { + URI, + _E: undefined as any, + map: map_, + ap: A.ap, + of, chain: (ma, f) => pipe( ma, @@ -217,9 +240,9 @@ export function getMonad(S: Semigroup): Monad2C & MonadTask2C TH.left(S.concat(e1, e2)), + (e2) => TH.left(SE.concat(e1, e2)), TH.right, - (e2, b) => TH.both(S.concat(e1, e2), b) + (e2, b) => TH.both(SE.concat(e1, e2), b) ) ) ) From 776b813edcc7abe29aa6a675987619600b09274d Mon Sep 17 00:00:00 2001 From: gcanti Date: Fri, 19 Jun 2020 12:42:54 +0200 Subject: [PATCH 080/106] remove apply instances --- CHANGELOG.md | 8 -------- docs/modules/Array.ts.md | 11 ----------- docs/modules/IO.ts.md | 11 ----------- docs/modules/Identity.ts.md | 11 ----------- docs/modules/NonEmptyArray.ts.md | 11 ----------- docs/modules/Option.ts.md | 11 ----------- docs/modules/Reader.ts.md | 11 ----------- docs/modules/ReadonlyArray.ts.md | 11 ----------- docs/modules/ReadonlyNonEmptyArray.ts.md | 11 ----------- src/Array.ts | 10 ---------- src/IO.ts | 15 ++------------- src/IOEither.ts | 2 +- src/Identity.ts | 15 ++------------- src/NonEmptyArray.ts | 12 +----------- src/Option.ts | 19 ++++--------------- src/Reader.ts | 15 ++------------- src/ReaderEither.ts | 2 +- src/ReadonlyArray.ts | 11 ----------- src/ReadonlyNonEmptyArray.ts | 12 +----------- test/Apply.ts | 10 ++++++---- test/pipeable.ts | 2 +- 21 files changed, 21 insertions(+), 200 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9f69662e6..e41bf2351 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,7 +20,6 @@ high state of flux, you're at risk of it changing without notice. - `Array` - add `functorArray` instance (@gcanti) - add `functorWithIndexArray` instance (@gcanti) - - add `applyArray` instance (@gcanti) - add `applicativeArray` instance (@gcanti) - add `monadArray` instance (@gcanti) - add `unfoldableArray` instance (@gcanti) @@ -56,7 +55,6 @@ high state of flux, you're at risk of it changing without notice. - add `contravariantEq` instance (@gcanti) - `Identity` - add `functorIdentity` instance (@gcanti) - - add `applyIdentity` instance (@gcanti) - add `applicativeIdentity` instance (@gcanti) - add `monadIdentity` instance (@gcanti) - add `foldableIdentity` instance (@gcanti) @@ -67,7 +65,6 @@ high state of flux, you're at risk of it changing without notice. - add `chainRecIdentity` instance (@gcanti) - `IO` - add `functorIO` instance (@gcanti) - - add `applyIO` instance (@gcanti) - add `applicativeIO` instance (@gcanti) - add `monadIO` instance (@gcanti) - add `monadIOIO` instance (@gcanti) @@ -89,7 +86,6 @@ high state of flux, you're at risk of it changing without notice. - `NonEmptyArray` - add `functorNonEmptyArray` instance (@gcanti) - add `functorWithIndexNonEmptyArray` instance (@gcanti) - - add `applyNonEmptyArray` instance (@gcanti) - add `applicativeNonEmptyArray` instance (@gcanti) - add `monadNonEmptyArray` instance (@gcanti) - add `foldableNonEmptyArray` instance (@gcanti) @@ -101,7 +97,6 @@ high state of flux, you're at risk of it changing without notice. - add `comonadNonEmptyArray` instance (@gcanti) - `Option` - add `functorOption` instance (@gcanti) - - add `applyOption` instance (@gcanti) - add `applicativeOption` instance (@gcanti) - add `monadOption` instance (@gcanti) - add `foldableOption` instance (@gcanti) @@ -117,7 +112,6 @@ high state of flux, you're at risk of it changing without notice. - add `contravariantOrd` instance (@gcanti) - `Reader` - add `functorReader` instance (@gcanti) - - add `applyReader` instance (@gcanti) - add `applicativeReader` instance (@gcanti) - add `monadReader` instance (@gcanti) - add `profunctorReader` instance (@gcanti) @@ -146,7 +140,6 @@ high state of flux, you're at risk of it changing without notice. - `ReadonlyArray` - add `functorArray` instance (@gcanti) - add `functorWithIndexArray` instance (@gcanti) - - add `applyArray` instance (@gcanti) - add `applicativeArray` instance (@gcanti) - add `monadArray` instance (@gcanti) - add `unfoldableArray` instance (@gcanti) @@ -168,7 +161,6 @@ high state of flux, you're at risk of it changing without notice. - `ReadonlyNonEmptyArray` - add `functorNonEmptyArray` instance (@gcanti) - add `functorWithIndexNonEmptyArray` instance (@gcanti) - - add `applyNonEmptyArray` instance (@gcanti) - add `applicativeNonEmptyArray` instance (@gcanti) - add `monadNonEmptyArray` instance (@gcanti) - add `foldableNonEmptyArray` instance (@gcanti) diff --git a/docs/modules/Array.ts.md b/docs/modules/Array.ts.md index 5bd19b0dd..df855528a 100644 --- a/docs/modules/Array.ts.md +++ b/docs/modules/Array.ts.md @@ -112,7 +112,6 @@ Added in v2.0.0 - [altArray](#altarray) - [alternativeArray](#alternativearray) - [applicativeArray](#applicativearray) - - [applyArray](#applyarray) - [array](#array) - [compactableArray](#compactablearray) - [extendArray](#extendarray) @@ -1499,16 +1498,6 @@ export declare const applicativeArray: Applicative1<'Array'> Added in v2.7.0 -## applyArray - -**Signature** - -```ts -export declare const applyArray: Apply1<'Array'> -``` - -Added in v2.7.0 - ## array **Signature** diff --git a/docs/modules/IO.ts.md b/docs/modules/IO.ts.md index 3df762673..5c9b538cc 100644 --- a/docs/modules/IO.ts.md +++ b/docs/modules/IO.ts.md @@ -40,7 +40,6 @@ Added in v2.0.0 - [URI](#uri) - [URI (type alias)](#uri-type-alias) - [applicativeIO](#applicativeio) - - [applyIO](#applyio) - [chainRecIO](#chainrecio) - [functorIO](#functorio) - [getMonoid](#getmonoid) @@ -197,16 +196,6 @@ export declare const applicativeIO: Applicative1<'IO'> Added in v2.7.0 -## applyIO - -**Signature** - -```ts -export declare const applyIO: Apply1<'IO'> -``` - -Added in v2.7.0 - ## chainRecIO **Signature** diff --git a/docs/modules/Identity.ts.md b/docs/modules/Identity.ts.md index 933a23000..0ef19d055 100644 --- a/docs/modules/Identity.ts.md +++ b/docs/modules/Identity.ts.md @@ -38,7 +38,6 @@ Added in v2.0.0 - [URI (type alias)](#uri-type-alias) - [altIdentity](#altidentity) - [applicativeIdentity](#applicativeidentity) - - [applyIdentity](#applyidentity) - [chainRecIdentity](#chainrecidentity) - [comonadIdentity](#comonadidentity) - [extendIdentity](#extendidentity) @@ -270,16 +269,6 @@ export declare const applicativeIdentity: Applicative1<'Identity'> Added in v2.7.0 -## applyIdentity - -**Signature** - -```ts -export declare const applyIdentity: Apply1<'Identity'> -``` - -Added in v2.7.0 - ## chainRecIdentity **Signature** diff --git a/docs/modules/NonEmptyArray.ts.md b/docs/modules/NonEmptyArray.ts.md index 8017148ae..8fed69767 100644 --- a/docs/modules/NonEmptyArray.ts.md +++ b/docs/modules/NonEmptyArray.ts.md @@ -61,7 +61,6 @@ Added in v2.0.0 - [URI (type alias)](#uri-type-alias) - [altNonEmptyArray](#altnonemptyarray) - [applicativeNonEmptyArray](#applicativenonemptyarray) - - [applyNonEmptyArray](#applynonemptyarray) - [comonadNonEmptyArray](#comonadnonemptyarray) - [extendNonEmptyArray](#extendnonemptyarray) - [foldableNonEmptyArray](#foldablenonemptyarray) @@ -564,16 +563,6 @@ export declare const applicativeNonEmptyArray: Applicative1<'NonEmptyArray'> Added in v2.7.0 -## applyNonEmptyArray - -**Signature** - -```ts -export declare const applyNonEmptyArray: Apply1<'NonEmptyArray'> -``` - -Added in v2.7.0 - ## comonadNonEmptyArray **Signature** diff --git a/docs/modules/Option.ts.md b/docs/modules/Option.ts.md index bd582d9bb..c45bb2344 100644 --- a/docs/modules/Option.ts.md +++ b/docs/modules/Option.ts.md @@ -86,7 +86,6 @@ Added in v2.0.0 - [altOption](#altoption) - [alternativeOption](#alternativeoption) - [applicativeOption](#applicativeoption) - - [applyOption](#applyoption) - [compactableOption](#compactableoption) - [extendOption](#extendoption) - [filterableOption](#filterableoption) @@ -854,16 +853,6 @@ export declare const applicativeOption: Applicative1<'Option'> Added in v2.7.0 -## applyOption - -**Signature** - -```ts -export declare const applyOption: Apply1<'Option'> -``` - -Added in v2.7.0 - ## compactableOption **Signature** diff --git a/docs/modules/Reader.ts.md b/docs/modules/Reader.ts.md index 897e5299c..35f8cb87f 100644 --- a/docs/modules/Reader.ts.md +++ b/docs/modules/Reader.ts.md @@ -40,7 +40,6 @@ Added in v2.0.0 - [URI](#uri) - [URI (type alias)](#uri-type-alias) - [applicativeReader](#applicativereader) - - [applyReader](#applyreader) - [categoryReader](#categoryreader) - [functorReader](#functorreader) - [getMonoid](#getmonoid) @@ -276,16 +275,6 @@ export declare const applicativeReader: Applicative2<'Reader'> Added in v2.7.0 -## applyReader - -**Signature** - -```ts -export declare const applyReader: Apply2<'Reader'> -``` - -Added in v2.7.0 - ## categoryReader **Signature** diff --git a/docs/modules/ReadonlyArray.ts.md b/docs/modules/ReadonlyArray.ts.md index 75d4f40b8..09ed2578d 100644 --- a/docs/modules/ReadonlyArray.ts.md +++ b/docs/modules/ReadonlyArray.ts.md @@ -103,7 +103,6 @@ Added in v2.5.0 - [altArray](#altarray) - [alternativeArray](#alternativearray) - [applicativeArray](#applicativearray) - - [applyArray](#applyarray) - [compactableArray](#compactablearray) - [extendArray](#extendarray) - [filterableArray](#filterablearray) @@ -1279,16 +1278,6 @@ export declare const applicativeArray: Applicative1<'ReadonlyArray'> Added in v2.7.0 -## applyArray - -**Signature** - -```ts -export declare const applyArray: Apply1<'ReadonlyArray'> -``` - -Added in v2.7.0 - ## compactableArray **Signature** diff --git a/docs/modules/ReadonlyNonEmptyArray.ts.md b/docs/modules/ReadonlyNonEmptyArray.ts.md index 7f9e27688..df0899ecf 100644 --- a/docs/modules/ReadonlyNonEmptyArray.ts.md +++ b/docs/modules/ReadonlyNonEmptyArray.ts.md @@ -60,7 +60,6 @@ Added in v2.5.0 - [URI (type alias)](#uri-type-alias) - [altNonEmptyArray](#altnonemptyarray) - [applicativeNonEmptyArray](#applicativenonemptyarray) - - [applyNonEmptyArray](#applynonemptyarray) - [comonadNonEmptyArray](#comonadnonemptyarray) - [extendNonEmptyArray](#extendnonemptyarray) - [foldableNonEmptyArray](#foldablenonemptyarray) @@ -573,16 +572,6 @@ export declare const applicativeNonEmptyArray: Applicative1<'ReadonlyNonEmptyArr Added in v2.7.0 -## applyNonEmptyArray - -**Signature** - -```ts -export declare const applyNonEmptyArray: Apply1<'ReadonlyNonEmptyArray'> -``` - -Added in v2.7.0 - ## comonadNonEmptyArray **Signature** diff --git a/src/Array.ts b/src/Array.ts index 747329dbc..dcc88bd71 100644 --- a/src/Array.ts +++ b/src/Array.ts @@ -1288,16 +1288,6 @@ export const functorWithIndexArray: FunctorWithIndex1 = { mapWithIndex: mapWithIndex_ } -/** - * @category instances - * @since 2.7.0 - */ -export const applyArray: Apply1 = { - URI, - map: map_, - ap: ap_ -} - /** * @category instances * @since 2.7.0 diff --git a/src/IO.ts b/src/IO.ts index 440150b14..dce66d13b 100644 --- a/src/IO.ts +++ b/src/IO.ts @@ -11,15 +11,14 @@ * * @since 2.0.0 */ +import { Applicative1 } from './Applicative' import { ChainRec1 } from './ChainRec' import { identity } from './function' +import { Functor1 } from './Functor' import { Monad1 } from './Monad' import { MonadIO1 } from './MonadIO' import { Monoid } from './Monoid' import { Semigroup } from './Semigroup' -import { Apply1 } from './Apply' -import { Functor1 } from './Functor' -import { Applicative1 } from './Applicative' // ------------------------------------------------------------------------------------- // model @@ -175,16 +174,6 @@ export const functorIO: Functor1 = { map: map_ } -/** - * @category instances - * @since 2.7.0 - */ -export const applyIO: Apply1 = { - URI, - map: map_, - ap: ap_ -} - /** * @category instances * @since 2.7.0 diff --git a/src/IOEither.ts b/src/IOEither.ts index 7a79e3cfe..72d293f85 100644 --- a/src/IOEither.ts +++ b/src/IOEither.ts @@ -206,7 +206,7 @@ export const mapLeft: (f: (e: E) => G) => (fa: IOEither) => IOEit */ export const ap: (fa: IOEither) => (fab: IOEither B>) => IOEither = /*#__PURE__*/ - apComposition(I.applyIO, E.applicativeEither) + apComposition(I.applicativeIO, E.applicativeEither) /** * Combine two effectful actions, keeping only the result of the first. diff --git a/src/Identity.ts b/src/Identity.ts index fc81be6cf..43b4bc4e7 100644 --- a/src/Identity.ts +++ b/src/Identity.ts @@ -6,16 +6,15 @@ import { Applicative, Applicative1 } from './Applicative' import { ChainRec1, tailRec } from './ChainRec' import { Comonad1 } from './Comonad' import { Eq } from './Eq' +import { Extend1 } from './Extend' import { Foldable1 } from './Foldable' import { identity as id, Lazy } from './function' +import { Functor1 } from './Functor' import { HKT } from './HKT' import { Monad1 } from './Monad' import { Monoid } from './Monoid' import { Show } from './Show' import { PipeableTraverse1, Traversable1 } from './Traversable' -import { Functor1 } from './Functor' -import { Apply1 } from './Apply' -import { Extend1 } from './Extend' // ------------------------------------------------------------------------------------- // model @@ -221,16 +220,6 @@ export const functorIdentity: Functor1 = { map: map_ } -/** - * @category instances - * @since 2.7.0 - */ -export const applyIdentity: Apply1 = { - URI, - map: map_, - ap: ap_ -} - /** * @category instances * @since 2.7.0 diff --git a/src/NonEmptyArray.ts b/src/NonEmptyArray.ts index 6f57f5669..e49a858e9 100644 --- a/src/NonEmptyArray.ts +++ b/src/NonEmptyArray.ts @@ -476,7 +476,7 @@ export const extract: Comonad1['extract'] = head const map_: Functor1['map'] = RNEA.functorNonEmptyArray.map as any const mapWithIndex_: FunctorWithIndex1['mapWithIndex'] = RNEA.functorWithIndexNonEmptyArray .mapWithIndex as any -const ap_: Apply1['ap'] = RNEA.applyNonEmptyArray.ap as any +const ap_: Apply1['ap'] = RNEA.applicativeNonEmptyArray.ap as any const chain_: Monad1['chain'] = RNEA.monadNonEmptyArray.chain as any const extend_: Extend1['extend'] = RNEA.extendNonEmptyArray.extend as any const reduce_: Foldable1['reduce'] = RNEA.foldableNonEmptyArray.reduce as any @@ -530,16 +530,6 @@ export const functorWithIndexNonEmptyArray: FunctorWithIndex1 = { mapWithIndex: mapWithIndex_ } -/** - * @category instances - * @since 2.7.0 - */ -export const applyNonEmptyArray: Apply1 = { - URI, - map: map_, - ap: ap_ -} - /** * @category instances * @since 2.7.0 diff --git a/src/Option.ts b/src/Option.ts index 43c801f0d..44ea2cb8b 100644 --- a/src/Option.ts +++ b/src/Option.ts @@ -12,6 +12,7 @@ * * @since 2.0.0 */ +import { Alt1 } from './Alt' import { Alternative1 } from './Alternative' import { Applicative, Applicative1 } from './Applicative' import { Compactable1, Separated } from './Compactable' @@ -21,6 +22,7 @@ import { Extend1 } from './Extend' import { Filterable1 } from './Filterable' import { Foldable1 } from './Foldable' import { identity, Lazy, Predicate, Refinement } from './function' +import { Functor1 } from './Functor' import { HKT } from './HKT' import { Monad1 } from './Monad' import { MonadThrow1 } from './MonadThrow' @@ -28,11 +30,8 @@ import { Monoid } from './Monoid' import { Ord } from './Ord' import { Semigroup } from './Semigroup' import { Show } from './Show' -import { Traversable1, PipeableTraverse1 } from './Traversable' -import { Witherable1, PipeableWither1, PipeableWilt1 } from './Witherable' -import { Functor1 } from './Functor' -import { Apply1 } from './Apply' -import { Alt1 } from './Alt' +import { PipeableTraverse1, Traversable1 } from './Traversable' +import { PipeableWilt1, PipeableWither1, Witherable1 } from './Witherable' // ------------------------------------------------------------------------------------- // model @@ -884,16 +883,6 @@ export const functorOption: Functor1 = { map: map_ } -/** - * @category instances - * @since 2.7.0 - */ -export const applyOption: Apply1 = { - URI, - map: map_, - ap: ap_ -} - /** * @category instances * @since 2.7.0 diff --git a/src/Reader.ts b/src/Reader.ts index 9def96a8b..1f2a199b7 100644 --- a/src/Reader.ts +++ b/src/Reader.ts @@ -1,18 +1,17 @@ /** * @since 2.0.0 */ +import { Applicative2 } from './Applicative' import { Category2 } from './Category' import { Choice2 } from './Choice' import * as E from './Either' import * as F from './function' +import { Functor2 } from './Functor' import { Monad2 } from './Monad' import { Monoid } from './Monoid' import { Profunctor2 } from './Profunctor' import { Semigroup } from './Semigroup' import { Strong2 } from './Strong' -import { Apply2 } from './Apply' -import { Functor2 } from './Functor' -import { Applicative2 } from './Applicative' // ------------------------------------------------------------------------------------- // model @@ -241,16 +240,6 @@ export const functorReader: Functor2 = { map: map_ } -/** - * @category instances - * @since 2.7.0 - */ -export const applyReader: Apply2 = { - URI, - map: map_, - ap: ap_ -} - /** * @category instances * @since 2.7.0 diff --git a/src/ReaderEither.ts b/src/ReaderEither.ts index 52fbce3c1..6bd1aa541 100644 --- a/src/ReaderEither.ts +++ b/src/ReaderEither.ts @@ -241,7 +241,7 @@ export const ap: ( fa: ReaderEither ) => (fab: ReaderEither B>) => ReaderEither = /*#__PURE__*/ - apComposition(R.applyReader, E.applicativeEither) + apComposition(R.applicativeReader, E.applicativeEither) /** * Combine two effectful actions, keeping only the result of the first. diff --git a/src/ReadonlyArray.ts b/src/ReadonlyArray.ts index fa9c61072..5d554765f 100644 --- a/src/ReadonlyArray.ts +++ b/src/ReadonlyArray.ts @@ -4,7 +4,6 @@ import { Alt1 } from './Alt' import { Alternative1 } from './Alternative' import { Applicative, Applicative1 } from './Applicative' -import { Apply1 } from './Apply' import { Compactable1, Separated } from './Compactable' import { Either } from './Either' import { Eq } from './Eq' @@ -1983,16 +1982,6 @@ export const functorWithIndexArray: FunctorWithIndex1 = { mapWithIndex: mapWithIndex_ } -/** - * @category instances - * @since 2.7.0 - */ -export const applyArray: Apply1 = { - URI, - map: map_, - ap: ap_ -} - /** * @category instances * @since 2.7.0 diff --git a/src/ReadonlyNonEmptyArray.ts b/src/ReadonlyNonEmptyArray.ts index b658ac7c6..e95b25ab3 100644 --- a/src/ReadonlyNonEmptyArray.ts +++ b/src/ReadonlyNonEmptyArray.ts @@ -546,7 +546,7 @@ export const extract: Comonad1['extract'] = head const map_: Functor1['map'] = RA.functorArray.map as any const mapWithIndex_: FunctorWithIndex1['mapWithIndex'] = RA.functorWithIndexArray.mapWithIndex as any -const ap_: Apply1['ap'] = RA.applyArray.ap as any +const ap_: Apply1['ap'] = RA.applicativeArray.ap as any const chain_: Monad1['chain'] = RA.monadArray.chain as any const extend_: Extend1['extend'] = RA.extendArray.extend as any const reduce_: Foldable1['reduce'] = RA.foldableArray.reduce as any @@ -600,16 +600,6 @@ export const functorWithIndexNonEmptyArray: FunctorWithIndex1 = { mapWithIndex: mapWithIndex_ } -/** - * @category instances - * @since 2.7.0 - */ -export const applyNonEmptyArray: Apply1 = { - URI, - map: map_, - ap: ap_ -} - /** * @category instances * @since 2.7.0 diff --git a/test/Apply.ts b/test/Apply.ts index 566fc1a44..7a43ace49 100644 --- a/test/Apply.ts +++ b/test/Apply.ts @@ -7,7 +7,7 @@ import { pipe } from '../src/function' describe('Apply', () => { it('sequenceT', () => { - const sequenceTOption = sequenceT(O.applyOption) + const sequenceTOption = sequenceT(O.applicativeOption) assert.deepStrictEqual(sequenceTOption(O.some(1)), O.some([1])) assert.deepStrictEqual(sequenceTOption(O.some(1), O.some('2')), O.some([1, '2'])) assert.deepStrictEqual(sequenceTOption(O.some(1), O.some('2'), O.none), O.none) @@ -17,7 +17,7 @@ describe('Apply', () => { const a2: ReadonlyArray = ['a', 'b', 'c'] const a3: ReadonlyArray = [true, false] assert.deepStrictEqual( - pipe(sequenceT(A.applyArray)(a1, a2, a3), (arr) => arr.map(([x, y, z]) => `(${x}, ${y}, ${z})`)), + pipe(sequenceT(A.applicativeArray)(a1, a2, a3), (arr) => arr.map(([x, y, z]) => `(${x}, ${y}, ${z})`)), [ '(1, a, true)', '(1, a, false)', @@ -42,7 +42,7 @@ describe('Apply', () => { }) it('sequenceS', () => { - const adoOption = sequenceS(O.applyOption) + const adoOption = sequenceS(O.applicativeOption) assert.deepStrictEqual(adoOption({ a: O.some(1) }), O.some({ a: 1 })) assert.deepStrictEqual(adoOption({ a: O.some(1), b: O.some(2) }), O.some({ a: 1, b: 2 })) assert.deepStrictEqual(adoOption({ a: O.some(1), b: O.none }), O.none) @@ -66,7 +66,9 @@ describe('Apply', () => { const a2: ReadonlyArray = ['a', 'b', 'c'] const a3: ReadonlyArray = [true, false] assert.deepStrictEqual( - pipe(sequenceS(A.applyArray)({ a1, a2, a3 }), (arr) => arr.map(({ a1, a2, a3 }) => `(${a1}, ${a2}, ${a3})`)), + pipe(sequenceS(A.applicativeArray)({ a1, a2, a3 }), (arr) => + arr.map(({ a1, a2, a3 }) => `(${a1}, ${a2}, ${a3})`) + ), [ '(1, a, true)', '(1, a, false)', diff --git a/test/pipeable.ts b/test/pipeable.ts index 4919b4b79..4e7ff8a84 100644 --- a/test/pipeable.ts +++ b/test/pipeable.ts @@ -29,7 +29,7 @@ describe('pipeable', () => { }) it('Apply', () => { - const { ap, apFirst, apSecond } = pipeable(A.applyArray) + const { ap, apFirst, apSecond } = pipeable(A.applicativeArray) assert.deepStrictEqual(ap([1, 2, 3])([(n) => n * 2]), [2, 4, 6]) assert.deepStrictEqual(apFirst([2])([1]), [1]) assert.deepStrictEqual(apSecond([2])([1]), [2]) From 32fa672a5bdff7181d89b5150c267bd55acddc43 Mon Sep 17 00:00:00 2001 From: gcanti Date: Fri, 19 Jun 2020 12:51:39 +0200 Subject: [PATCH 081/106] remove extend instances --- CHANGELOG.md | 7 ------- docs/modules/Identity.ts.md | 11 ----------- docs/modules/NonEmptyArray.ts.md | 11 ----------- docs/modules/ReadonlyNonEmptyArray.ts.md | 11 ----------- docs/modules/ReadonlyTuple.ts.md | 11 ----------- docs/modules/Store.ts.md | 11 ----------- docs/modules/Tree.ts.md | 11 ----------- docs/modules/Tuple.ts.md | 11 ----------- src/Identity.ts | 11 ----------- src/NonEmptyArray.ts | 12 +----------- src/ReadonlyNonEmptyArray.ts | 10 ---------- src/ReadonlyTuple.ts | 15 ++------------- src/Store.ts | 11 ----------- src/Tree.ts | 15 ++------------- src/Tuple.ts | 12 +----------- 15 files changed, 6 insertions(+), 164 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e41bf2351..dbc68f6d3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -60,7 +60,6 @@ high state of flux, you're at risk of it changing without notice. - add `foldableIdentity` instance (@gcanti) - add `traversableIdentity` instance (@gcanti) - add `altIdentity` instance (@gcanti) - - add `extendIdentity` instance (@gcanti) - add `comonadIdentity` instance (@gcanti) - add `chainRecIdentity` instance (@gcanti) - `IO` @@ -93,7 +92,6 @@ high state of flux, you're at risk of it changing without notice. - add `traversableNonEmptyArray` instance (@gcanti) - add `traversableWithIndexNonEmptyArray` instance (@gcanti) - add `altNonEmptyArray` instance (@gcanti) - - add `extendNonEmptyArray` instance (@gcanti) - add `comonadNonEmptyArray` instance (@gcanti) - `Option` - add `functorOption` instance (@gcanti) @@ -168,7 +166,6 @@ high state of flux, you're at risk of it changing without notice. - add `traversableNonEmptyArray` instance (@gcanti) - add `traversableWithIndexNonEmptyArray` instance (@gcanti) - add `altNonEmptyArray` instance (@gcanti) - - add `extendNonEmptyArray` instance (@gcanti) - add `comonadNonEmptyArray` instance (@gcanti) - `ReadonlyRecord` - add `functorRecord` instance (@gcanti) @@ -184,7 +181,6 @@ high state of flux, you're at risk of it changing without notice. - add `functorTuple` instance (@gcanti) - add `bifunctorTuple` instance (@gcanti) - add `semigroupoidTuple` instance (@gcanti) - - add `extendTuple` instance (@gcanti) - add `comonadTuple` instance (@gcanti) - add `foldableTuple` instance (@gcanti) - add `traversableTuple` instance (@gcanti) @@ -204,7 +200,6 @@ high state of flux, you're at risk of it changing without notice. - add `monadState` instance (@gcanti) - `Store` - add `functorStore` instance (@gcanti) - - add `extendStore` instance (@gcanti) - add `comonadStore` instance (@gcanti) - `StateReaderTaskEither` - add `functorStateReaderTaskEither` instance (@gcanti) @@ -241,7 +236,6 @@ high state of flux, you're at risk of it changing without notice. - add `monadTree` instance (@gcanti) - add `foldableTree` instance (@gcanti) - add `traversableTree` instance (@gcanti) - - add `extendTree` instance (@gcanti) - add `comonadTree` instance (@gcanti) - `Traced` - rename `writer` to `functorWriter` for consistency (@gcanti) @@ -249,7 +243,6 @@ high state of flux, you're at risk of it changing without notice. - add `functorTuple` instance (@gcanti) - add `bifunctorTuple` instance (@gcanti) - add `semigroupoidTuple` instance (@gcanti) - - add `extendTuple` instance (@gcanti) - add `comonadTuple` instance (@gcanti) - add `foldableTuple` instance (@gcanti) - add `traversableTuple` instance (@gcanti) diff --git a/docs/modules/Identity.ts.md b/docs/modules/Identity.ts.md index 0ef19d055..d2589be65 100644 --- a/docs/modules/Identity.ts.md +++ b/docs/modules/Identity.ts.md @@ -40,7 +40,6 @@ Added in v2.0.0 - [applicativeIdentity](#applicativeidentity) - [chainRecIdentity](#chainrecidentity) - [comonadIdentity](#comonadidentity) - - [extendIdentity](#extendidentity) - [foldableIdentity](#foldableidentity) - [functorIdentity](#functoridentity) - [getEq](#geteq) @@ -289,16 +288,6 @@ export declare const comonadIdentity: Comonad1<'Identity'> Added in v2.7.0 -## extendIdentity - -**Signature** - -```ts -export declare const extendIdentity: Extend1<'Identity'> -``` - -Added in v2.7.0 - ## foldableIdentity **Signature** diff --git a/docs/modules/NonEmptyArray.ts.md b/docs/modules/NonEmptyArray.ts.md index 8fed69767..939f017b1 100644 --- a/docs/modules/NonEmptyArray.ts.md +++ b/docs/modules/NonEmptyArray.ts.md @@ -62,7 +62,6 @@ Added in v2.0.0 - [altNonEmptyArray](#altnonemptyarray) - [applicativeNonEmptyArray](#applicativenonemptyarray) - [comonadNonEmptyArray](#comonadnonemptyarray) - - [extendNonEmptyArray](#extendnonemptyarray) - [foldableNonEmptyArray](#foldablenonemptyarray) - [foldableWithIndexNonEmptyArray](#foldablewithindexnonemptyarray) - [functorNonEmptyArray](#functornonemptyarray) @@ -573,16 +572,6 @@ export declare const comonadNonEmptyArray: Comonad1<'NonEmptyArray'> Added in v2.7.0 -## extendNonEmptyArray - -**Signature** - -```ts -export declare const extendNonEmptyArray: Extend1<'NonEmptyArray'> -``` - -Added in v2.7.0 - ## foldableNonEmptyArray **Signature** diff --git a/docs/modules/ReadonlyNonEmptyArray.ts.md b/docs/modules/ReadonlyNonEmptyArray.ts.md index df0899ecf..42df8dedc 100644 --- a/docs/modules/ReadonlyNonEmptyArray.ts.md +++ b/docs/modules/ReadonlyNonEmptyArray.ts.md @@ -61,7 +61,6 @@ Added in v2.5.0 - [altNonEmptyArray](#altnonemptyarray) - [applicativeNonEmptyArray](#applicativenonemptyarray) - [comonadNonEmptyArray](#comonadnonemptyarray) - - [extendNonEmptyArray](#extendnonemptyarray) - [foldableNonEmptyArray](#foldablenonemptyarray) - [foldableWithIndexNonEmptyArray](#foldablewithindexnonemptyarray) - [functorNonEmptyArray](#functornonemptyarray) @@ -582,16 +581,6 @@ export declare const comonadNonEmptyArray: Comonad1<'ReadonlyNonEmptyArray'> Added in v2.7.0 -## extendNonEmptyArray - -**Signature** - -```ts -export declare const extendNonEmptyArray: Extend1<'ReadonlyNonEmptyArray'> -``` - -Added in v2.7.0 - ## foldableNonEmptyArray **Signature** diff --git a/docs/modules/ReadonlyTuple.ts.md b/docs/modules/ReadonlyTuple.ts.md index 17171dde6..f5ddf6a5d 100644 --- a/docs/modules/ReadonlyTuple.ts.md +++ b/docs/modules/ReadonlyTuple.ts.md @@ -38,7 +38,6 @@ Added in v2.5.0 - [URI (type alias)](#uri-type-alias) - [bifunctorTuple](#bifunctortuple) - [comonadTuple](#comonadtuple) - - [extendTuple](#extendtuple) - [foldableTuple](#foldabletuple) - [functorTuple](#functortuple) - [getApplicative](#getapplicative) @@ -250,16 +249,6 @@ export declare const comonadTuple: Comonad2<'ReadonlyTuple'> Added in v2.7.0 -## extendTuple - -**Signature** - -```ts -export declare const extendTuple: Extend2<'ReadonlyTuple'> -``` - -Added in v2.7.0 - ## foldableTuple **Signature** diff --git a/docs/modules/Store.ts.md b/docs/modules/Store.ts.md index 0cb58670c..47f33af24 100644 --- a/docs/modules/Store.ts.md +++ b/docs/modules/Store.ts.md @@ -23,7 +23,6 @@ Added in v2.0.0 - [URI](#uri) - [URI (type alias)](#uri-type-alias) - [comonadStore](#comonadstore) - - [extendStore](#extendstore) - [functorStore](#functorstore) - [store](#store) - [model](#model) @@ -117,16 +116,6 @@ export declare const comonadStore: Comonad2<'Store'> Added in v2.7.0 -## extendStore - -**Signature** - -```ts -export declare const extendStore: Extend2<'Store'> -``` - -Added in v2.7.0 - ## functorStore **Signature** diff --git a/docs/modules/Tree.ts.md b/docs/modules/Tree.ts.md index 8974fb361..75ce8ecc4 100644 --- a/docs/modules/Tree.ts.md +++ b/docs/modules/Tree.ts.md @@ -50,7 +50,6 @@ Added in v2.0.0 - [URI (type alias)](#uri-type-alias) - [applicativeTree](#applicativetree) - [comonadTree](#comonadtree) - - [extendTree](#extendtree) - [foldableTree](#foldabletree) - [functorTree](#functortree) - [getEq](#geteq) @@ -398,16 +397,6 @@ export declare const comonadTree: Comonad1<'Tree'> Added in v2.7.0 -## extendTree - -**Signature** - -```ts -export declare const extendTree: Extend1<'Tree'> -``` - -Added in v2.7.0 - ## foldableTree **Signature** diff --git a/docs/modules/Tuple.ts.md b/docs/modules/Tuple.ts.md index d7449f490..209d88781 100644 --- a/docs/modules/Tuple.ts.md +++ b/docs/modules/Tuple.ts.md @@ -38,7 +38,6 @@ Added in v2.0.0 - [URI (type alias)](#uri-type-alias) - [bifunctorTuple](#bifunctortuple) - [comonadTuple](#comonadtuple) - - [extendTuple](#extendtuple) - [foldableTuple](#foldabletuple) - [functorTuple](#functortuple) - [getApplicative](#getapplicative) @@ -250,16 +249,6 @@ export declare const comonadTuple: Comonad2<'Tuple'> Added in v2.7.0 -## extendTuple - -**Signature** - -```ts -export declare const extendTuple: Extend2<'Tuple'> -``` - -Added in v2.7.0 - ## foldableTuple **Signature** diff --git a/src/Identity.ts b/src/Identity.ts index 43b4bc4e7..1dad9bf8a 100644 --- a/src/Identity.ts +++ b/src/Identity.ts @@ -6,7 +6,6 @@ import { Applicative, Applicative1 } from './Applicative' import { ChainRec1, tailRec } from './ChainRec' import { Comonad1 } from './Comonad' import { Eq } from './Eq' -import { Extend1 } from './Extend' import { Foldable1 } from './Foldable' import { identity as id, Lazy } from './function' import { Functor1 } from './Functor' @@ -278,16 +277,6 @@ export const altIdentity: Alt1 = { alt: alt_ } -/** - * @category instances - * @since 2.7.0 - */ -export const extendIdentity: Extend1 = { - URI, - map: map_, - extend: extend_ -} - /** * @category instances * @since 2.7.0 diff --git a/src/NonEmptyArray.ts b/src/NonEmptyArray.ts index e49a858e9..c29c9f98d 100644 --- a/src/NonEmptyArray.ts +++ b/src/NonEmptyArray.ts @@ -478,7 +478,7 @@ const mapWithIndex_: FunctorWithIndex1['mapWithIndex'] = RNEA.funct .mapWithIndex as any const ap_: Apply1['ap'] = RNEA.applicativeNonEmptyArray.ap as any const chain_: Monad1['chain'] = RNEA.monadNonEmptyArray.chain as any -const extend_: Extend1['extend'] = RNEA.extendNonEmptyArray.extend as any +const extend_: Extend1['extend'] = RNEA.comonadNonEmptyArray.extend as any const reduce_: Foldable1['reduce'] = RNEA.foldableNonEmptyArray.reduce as any const foldMap_: Foldable1['foldMap'] = RNEA.foldableNonEmptyArray.foldMap as any const reduceRight_: Foldable1['reduceRight'] = RNEA.foldableNonEmptyArray.reduceRight as any @@ -621,16 +621,6 @@ export const altNonEmptyArray: Alt1 = { alt: alt_ } -/** - * @category instances - * @since 2.7.0 - */ -export const extendNonEmptyArray: Extend1 = { - URI, - map: map_, - extend: extend_ -} - /** * @category instances * @since 2.7.0 diff --git a/src/ReadonlyNonEmptyArray.ts b/src/ReadonlyNonEmptyArray.ts index e95b25ab3..d32844008 100644 --- a/src/ReadonlyNonEmptyArray.ts +++ b/src/ReadonlyNonEmptyArray.ts @@ -691,16 +691,6 @@ export const altNonEmptyArray: Alt1 = { alt: alt_ } -/** - * @category instances - * @since 2.7.0 - */ -export const extendNonEmptyArray: Extend1 = { - URI, - map: map_, - extend: extend_ -} - /** * @category instances * @since 2.7.0 diff --git a/src/ReadonlyTuple.ts b/src/ReadonlyTuple.ts index 80d24836e..f19d2a4bb 100644 --- a/src/ReadonlyTuple.ts +++ b/src/ReadonlyTuple.ts @@ -10,14 +10,13 @@ import { Comonad2 } from './Comonad' import { Either } from './Either' import { Foldable2 } from './Foldable' import { identity } from './function' +import { Functor2 } from './Functor' import { HKT } from './HKT' import { Monad2C } from './Monad' import { Monoid } from './Monoid' import { Semigroup } from './Semigroup' import { Semigroupoid2 } from './Semigroupoid' -import { Traversable2, PipeableTraverse2 } from './Traversable' -import { Functor2 } from './Functor' -import { Extend2 } from './Extend' +import { PipeableTraverse2, Traversable2 } from './Traversable' // ------------------------------------------------------------------------------------- // model @@ -314,16 +313,6 @@ export const semigroupoidTuple: Semigroupoid2 = { compose: compose_ } -/** - * @category instances - * @since 2.7.0 - */ -export const extendTuple: Extend2 = { - URI, - map: map_, - extend: extend_ -} - /** * @category instances * @since 2.7.0 diff --git a/src/Store.ts b/src/Store.ts index ee849a110..93f416fe5 100644 --- a/src/Store.ts +++ b/src/Store.ts @@ -5,7 +5,6 @@ import { Comonad2 } from './Comonad' import { Endomorphism, identity } from './function' import { Functor, Functor1, Functor2, Functor2C, Functor3, Functor3C } from './Functor' import { HKT, Kind, Kind2, Kind3, URIS, URIS2, URIS3 } from './HKT' -import { Extend2 } from './Extend' // ------------------------------------------------------------------------------------- // model @@ -145,16 +144,6 @@ export const functorStore: Functor2 = { map: map_ } -/** - * @category instances - * @since 2.7.0 - */ -export const extendStore: Extend2 = { - URI, - map: map_, - extend: extend_ -} - /** * @category instances * @since 2.7.0 diff --git a/src/Tree.ts b/src/Tree.ts index 5a4f4756d..5e9554001 100644 --- a/src/Tree.ts +++ b/src/Tree.ts @@ -13,13 +13,12 @@ import { Comonad1 } from './Comonad' import { Eq, fromEquals } from './Eq' import { Foldable1 } from './Foldable' import { identity, pipe } from './function' +import { Functor1 } from './Functor' import { HKT, Kind, Kind2, Kind3, URIS, URIS2, URIS3 } from './HKT' import { Monad, Monad1, Monad2, Monad2C, Monad3, Monad3C } from './Monad' import { Monoid } from './Monoid' import { Show } from './Show' -import { Traversable1, PipeableTraverse1 } from './Traversable' -import { Functor1 } from './Functor' -import { Extend1 } from './Extend' +import { PipeableTraverse1, Traversable1 } from './Traversable' // tslint:disable:readonly-array @@ -532,16 +531,6 @@ export const traversableTree: Traversable1 = { sequence } -/** - * @category instances - * @since 2.7.0 - */ -export const extendTree: Extend1 = { - URI, - map: map_, - extend: extend_ -} - /** * @category instances * @since 2.7.0 diff --git a/src/Tuple.ts b/src/Tuple.ts index c8c6463d2..ea1247e9d 100644 --- a/src/Tuple.ts +++ b/src/Tuple.ts @@ -161,7 +161,7 @@ const map_: Functor2['map'] = RT.functorTuple.map as any const bimap_: Bifunctor2['bimap'] = RT.bifunctorTuple.bimap as any const mapLeft_: Bifunctor2['mapLeft'] = RT.bifunctorTuple.mapLeft as any const compose_: Semigroupoid2['compose'] = RT.semigroupoidTuple.compose as any -const extend_: Extend2['extend'] = RT.extendTuple.extend as any +const extend_: Extend2['extend'] = RT.comonadTuple.extend as any const reduce_: Foldable2['reduce'] = RT.foldableTuple.reduce const foldMap_: Foldable2['foldMap'] = RT.foldableTuple.foldMap const reduceRight_: Foldable2['reduceRight'] = RT.foldableTuple.reduceRight @@ -213,16 +213,6 @@ export const semigroupoidTuple: Semigroupoid2 = { compose: compose_ } -/** - * @category instances - * @since 2.7.0 - */ -export const extendTuple: Extend2 = { - URI, - map: map_, - extend: extend_ -} - /** * @category instances * @since 2.7.0 From f9eb07777498e9ad189f79150e953a8f90ece94c Mon Sep 17 00:00:00 2001 From: gcanti Date: Fri, 19 Jun 2020 13:12:24 +0200 Subject: [PATCH 082/106] upgrade to latest fast-check --- package-lock.json | 15407 +++++++------------------- package.json | 2 +- test/property-test/NonEmptyArray.ts | 9 - test/property-test/Option.ts | 26 - 4 files changed, 4168 insertions(+), 11276 deletions(-) delete mode 100644 test/property-test/NonEmptyArray.ts delete mode 100644 test/property-test/Option.ts diff --git a/package-lock.json b/package-lock.json index 1bac840a0..4673e3a49 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "fp-ts", - "version": "2.6.5", + "version": "2.7.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -13,25 +13,6 @@ "@babel/highlight": "^7.0.0" } }, - "@babel/compat-data": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.10.1.tgz", - "integrity": "sha512-CHvCj7So7iCkGKPRFUfryXIkU2gSBw7VSZFYLsqVhrS47269VK2Hfi9S/YcublPMW8k1u2bQBlbDruoQEm4fgw==", - "dev": true, - "requires": { - "browserslist": "^4.12.0", - "invariant": "^2.2.4", - "semver": "^5.5.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, "@babel/core": { "version": "7.8.7", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.8.7.tgz", @@ -73,28 +54,6 @@ "chalk": "^2.0.0", "esutils": "^2.0.2", "js-tokens": "^4.0.0" - }, - "dependencies": { - "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": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - } - } - }, - "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": { - "color-convert": "^1.9.0" } }, "debug": { @@ -106,12 +65,6 @@ "ms": "^2.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 - }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -129,15 +82,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true - }, - "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" - } } } }, @@ -161,2062 +105,893 @@ } } }, - "@babel/helper-annotate-as-pure": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.1.tgz", - "integrity": "sha512-ewp3rvJEwLaHgyWGe4wQssC2vjks3E80WiUe2BpMb0KhreTjMROCbxXcEovTrbeGVdQct5VjQfrv9EgC+xMzCw==", + "@babel/helper-function-name": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", + "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", "dev": true, "requires": { - "@babel/types": "^7.10.1" - }, - "dependencies": { - "@babel/types": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", - "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.1", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" } }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.1.tgz", - "integrity": "sha512-cQpVq48EkYxUU0xozpGCLla3wlkdRRqLWu1ksFMXA9CM5KQmyyRpSEsYXbao7JUkOw/tAaYKCaYyZq6HOFYtyw==", + "@babel/helper-get-function-arity": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.10.1", - "@babel/types": "^7.10.1" - }, - "dependencies": { - "@babel/types": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", - "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.1", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } + "@babel/types": "^7.8.3" } }, - "@babel/helper-builder-react-jsx": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.10.1.tgz", - "integrity": "sha512-KXzzpyWhXgzjXIlJU1ZjIXzUPdej1suE6vzqgImZ/cpAsR/CC8gUcX4EWRmDfWz/cs6HOCPMBIJ3nKoXt3BFuw==", + "@babel/helper-plugin-utils": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz", + "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==", + "dev": true + }, + "@babel/helper-split-export-declaration": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.10.1", - "@babel/types": "^7.10.1" - }, - "dependencies": { - "@babel/types": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", - "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.1", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } + "@babel/types": "^7.8.3" } }, - "@babel/helper-builder-react-jsx-experimental": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.10.1.tgz", - "integrity": "sha512-irQJ8kpQUV3JasXPSFQ+LCCtJSc5ceZrPFVj6TElR6XCHssi3jV8ch3odIrNtjJFRZZVbrOEfJMI79TPU/h1pQ==", + "@babel/helpers": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.8.4.tgz", + "integrity": "sha512-VPbe7wcQ4chu4TDQjimHv/5tj73qz88o12EPkO2ValS2QiQS/1F2SsjyIGNnAD0vF/nZS6Cf9i+vW6HIlnaR8w==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.10.1", - "@babel/helper-module-imports": "^7.10.1", - "@babel/types": "^7.10.1" - }, - "dependencies": { - "@babel/types": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", - "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.1", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.4", + "@babel/types": "^7.8.3" } }, - "@babel/helper-compilation-targets": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.2.tgz", - "integrity": "sha512-hYgOhF4To2UTB4LTaZepN/4Pl9LD4gfbJx8A34mqoluT8TLbof1mhUlYuNWTEebONa8+UlCC4X0TEXu7AOUyGA==", + "@babel/highlight": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", + "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", "dev": true, "requires": { - "@babel/compat-data": "^7.10.1", - "browserslist": "^4.12.0", - "invariant": "^2.2.4", - "levenary": "^1.1.1", - "semver": "^5.5.0" + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" }, "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "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 } } }, - "@babel/helper-create-class-features-plugin": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.2.tgz", - "integrity": "sha512-5C/QhkGFh1vqcziq1vAL6SI9ymzUp8BCYjFpvYVhWP4DlATIb3u5q3iUd35mvlyGs8fO7hckkW7i0tmH+5+bvQ==", + "@babel/parser": { + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.8.tgz", + "integrity": "sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA==", + "dev": true + }, + "@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/template": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.10.1", - "@babel/helper-member-expression-to-functions": "^7.10.1", - "@babel/helper-optimise-call-expression": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/helper-replace-supers": "^7.10.1", - "@babel/helper-split-export-declaration": "^7.10.1" + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" }, "dependencies": { "@babel/code-frame": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.1.tgz", - "integrity": "sha512-IGhtTmpjGbYzcEDOw7DcQtbQSXcG9ftmAXtWTu9V936vDye4xjjekktFAtgZsWpzTj/X01jocB46mTywm/4SZw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.10.1" - } - }, - "@babel/helper-function-name": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.1.tgz", - "integrity": "sha512-fcpumwhs3YyZ/ttd5Rz0xn0TpIwVkN7X0V38B9TWNfVF42KEkhkAAuPCQ3oXmtTRtiPJrmZ0TrfS0GKF0eMaRQ==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.10.1", - "@babel/template": "^7.10.1", - "@babel/types": "^7.10.1" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.1.tgz", - "integrity": "sha512-F5qdXkYGOQUb0hpRaPoetF9AnsXknKjWMZ+wmsIRsp5ge5sFh4c3h1eH2pRTTuy9KKAA2+TTYomGXAtEL2fQEw==", - "dev": true, - "requires": { - "@babel/types": "^7.10.1" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", - "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", - "dev": true - }, - "@babel/helper-split-export-declaration": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.1.tgz", - "integrity": "sha512-UQ1LVBPrYdbchNhLwj6fetj46BcFwfS4NllJo/1aJsT+1dLTEnXJL0qHqtY7gPzF8S2fXBJamf1biAXV3X077g==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", "dev": true, "requires": { - "@babel/types": "^7.10.1" + "@babel/highlight": "^7.8.3" } }, "@babel/highlight": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.1.tgz", - "integrity": "sha512-8rMof+gVP8mxYZApLF/JgNDAkdKa+aJt3ZYxF8z6+j/hpeXL7iMsKCPHa2jNMHu/qqBwzQF4OHNoYi8dMA/rYg==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", + "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.10.1", "chalk": "^2.0.0", + "esutils": "^2.0.2", "js-tokens": "^4.0.0" } }, - "@babel/parser": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.2.tgz", - "integrity": "sha512-PApSXlNMJyB4JiGVhCOlzKIif+TKFTvu0aQAhnTvfP/z3vVSN6ZypH5bfUNwFXXjRQtUEBNFd2PtmCmG2Py3qQ==", - "dev": true - }, - "@babel/template": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.1.tgz", - "integrity": "sha512-OQDg6SqvFSsc9A0ej6SKINWrpJiNonRIniYondK2ViKhB06i3c0s+76XUft71iqBEe9S1OKsHwPAjfHnuvnCig==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.10.1", - "@babel/parser": "^7.10.1", - "@babel/types": "^7.10.1" - } - }, - "@babel/types": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", - "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.1", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "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": { - "color-convert": "^1.9.0" - } - }, - "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": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "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 - }, - "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" - } } } }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.1.tgz", - "integrity": "sha512-Rx4rHS0pVuJn5pJOqaqcZR4XSgeF9G/pO/79t+4r7380tXFJdzImFnxMU19f83wjSrmKHq6myrM10pFHTGzkUA==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.10.1", - "@babel/helper-regex": "^7.10.1", - "regexpu-core": "^4.7.0" - } - }, - "@babel/helper-define-map": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.1.tgz", - "integrity": "sha512-+5odWpX+OnvkD0Zmq7panrMuAGQBu6aPUgvMzuMGo4R+jUOvealEj2hiqI6WhxgKrTpFoFj0+VdsuA8KDxHBDg==", + "@babel/traverse": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.6.tgz", + "integrity": "sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.10.1", - "@babel/types": "^7.10.1", + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.8.6", + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6", + "debug": "^4.1.0", + "globals": "^11.1.0", "lodash": "^4.17.13" }, "dependencies": { "@babel/code-frame": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.1.tgz", - "integrity": "sha512-IGhtTmpjGbYzcEDOw7DcQtbQSXcG9ftmAXtWTu9V936vDye4xjjekktFAtgZsWpzTj/X01jocB46mTywm/4SZw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.10.1" - } - }, - "@babel/helper-function-name": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.1.tgz", - "integrity": "sha512-fcpumwhs3YyZ/ttd5Rz0xn0TpIwVkN7X0V38B9TWNfVF42KEkhkAAuPCQ3oXmtTRtiPJrmZ0TrfS0GKF0eMaRQ==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.10.1", - "@babel/template": "^7.10.1", - "@babel/types": "^7.10.1" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.1.tgz", - "integrity": "sha512-F5qdXkYGOQUb0hpRaPoetF9AnsXknKjWMZ+wmsIRsp5ge5sFh4c3h1eH2pRTTuy9KKAA2+TTYomGXAtEL2fQEw==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", "dev": true, "requires": { - "@babel/types": "^7.10.1" + "@babel/highlight": "^7.8.3" } }, "@babel/highlight": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.1.tgz", - "integrity": "sha512-8rMof+gVP8mxYZApLF/JgNDAkdKa+aJt3ZYxF8z6+j/hpeXL7iMsKCPHa2jNMHu/qqBwzQF4OHNoYi8dMA/rYg==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", + "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.10.1", "chalk": "^2.0.0", + "esutils": "^2.0.2", "js-tokens": "^4.0.0" } }, - "@babel/parser": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.2.tgz", - "integrity": "sha512-PApSXlNMJyB4JiGVhCOlzKIif+TKFTvu0aQAhnTvfP/z3vVSN6ZypH5bfUNwFXXjRQtUEBNFd2PtmCmG2Py3qQ==", - "dev": true - }, - "@babel/template": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.1.tgz", - "integrity": "sha512-OQDg6SqvFSsc9A0ej6SKINWrpJiNonRIniYondK2ViKhB06i3c0s+76XUft71iqBEe9S1OKsHwPAjfHnuvnCig==", + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "@babel/code-frame": "^7.10.1", - "@babel/parser": "^7.10.1", - "@babel/types": "^7.10.1" + "ms": "^2.1.1" } }, - "@babel/types": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", - "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.1", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } + "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 }, - "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": { - "color-convert": "^1.9.0" - } - }, - "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": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "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==", + "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": "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" - } } } }, - "@babel/helper-explode-assignable-expression": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.1.tgz", - "integrity": "sha512-vcUJ3cDjLjvkKzt6rHrl767FeE7pMEYfPanq5L16GRtrXIoznc0HykNW2aEYkcnP76P0isoqJ34dDMFZwzEpJg==", + "@babel/types": { + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", + "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "@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": { - "@babel/traverse": "^7.10.1", - "@babel/types": "^7.10.1" + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" }, "dependencies": { - "@babel/code-frame": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.1.tgz", - "integrity": "sha512-IGhtTmpjGbYzcEDOw7DcQtbQSXcG9ftmAXtWTu9V936vDye4xjjekktFAtgZsWpzTj/X01jocB46mTywm/4SZw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.10.1" - } - }, - "@babel/generator": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.2.tgz", - "integrity": "sha512-AxfBNHNu99DTMvlUPlt1h2+Hn7knPpH5ayJ8OqDWSeLld+Fi2AYBTC/IejWDM9Edcii4UzZRCsbUt0WlSDsDsA==", - "dev": true, - "requires": { - "@babel/types": "^7.10.2", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0" - } - }, - "@babel/helper-function-name": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.1.tgz", - "integrity": "sha512-fcpumwhs3YyZ/ttd5Rz0xn0TpIwVkN7X0V38B9TWNfVF42KEkhkAAuPCQ3oXmtTRtiPJrmZ0TrfS0GKF0eMaRQ==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.10.1", - "@babel/template": "^7.10.1", - "@babel/types": "^7.10.1" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.1.tgz", - "integrity": "sha512-F5qdXkYGOQUb0hpRaPoetF9AnsXknKjWMZ+wmsIRsp5ge5sFh4c3h1eH2pRTTuy9KKAA2+TTYomGXAtEL2fQEw==", - "dev": true, - "requires": { - "@babel/types": "^7.10.1" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.1.tgz", - "integrity": "sha512-UQ1LVBPrYdbchNhLwj6fetj46BcFwfS4NllJo/1aJsT+1dLTEnXJL0qHqtY7gPzF8S2fXBJamf1biAXV3X077g==", - "dev": true, - "requires": { - "@babel/types": "^7.10.1" - } - }, - "@babel/highlight": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.1.tgz", - "integrity": "sha512-8rMof+gVP8mxYZApLF/JgNDAkdKa+aJt3ZYxF8z6+j/hpeXL7iMsKCPHa2jNMHu/qqBwzQF4OHNoYi8dMA/rYg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.1", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.2.tgz", - "integrity": "sha512-PApSXlNMJyB4JiGVhCOlzKIif+TKFTvu0aQAhnTvfP/z3vVSN6ZypH5bfUNwFXXjRQtUEBNFd2PtmCmG2Py3qQ==", - "dev": true - }, - "@babel/template": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.1.tgz", - "integrity": "sha512-OQDg6SqvFSsc9A0ej6SKINWrpJiNonRIniYondK2ViKhB06i3c0s+76XUft71iqBEe9S1OKsHwPAjfHnuvnCig==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.10.1", - "@babel/parser": "^7.10.1", - "@babel/types": "^7.10.1" - } - }, - "@babel/traverse": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.1.tgz", - "integrity": "sha512-C/cTuXeKt85K+p08jN6vMDz8vSV0vZcI0wmQ36o6mjbuo++kPMdpOYw23W2XH04dbRt9/nMEfA4W3eR21CD+TQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.10.1", - "@babel/generator": "^7.10.1", - "@babel/helper-function-name": "^7.10.1", - "@babel/helper-split-export-declaration": "^7.10.1", - "@babel/parser": "^7.10.1", - "@babel/types": "^7.10.1", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" - } - }, - "@babel/types": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", - "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.1", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "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": { - "color-convert": "^1.9.0" - } - }, - "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": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "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" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "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 - }, - "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.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true - }, - "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" - } } } }, - "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "@dsherret/to-absolute-glob": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@dsherret/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", + "integrity": "sha1-H2R13IvZdM6gei2vOGSzF7HdMyw=", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" + "is-absolute": "^1.0.0", + "is-negated-glob": "^1.0.0" } }, - "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", + "@jest/console": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz", + "integrity": "sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@jest/source-map": "^24.9.0", + "chalk": "^2.0.1", + "slash": "^2.0.0" + }, + "dependencies": { + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + } } }, - "@babel/helper-hoist-variables": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.1.tgz", - "integrity": "sha512-vLm5srkU8rI6X3+aQ1rQJyfjvCBLXP8cAGeuw04zeAM2ItKb1e7pmVmLyHb4sDaAYnLL13RHOZPLEtcGZ5xvjg==", + "@jest/environment": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.9.0.tgz", + "integrity": "sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ==", "dev": true, "requires": { - "@babel/types": "^7.10.1" - }, - "dependencies": { - "@babel/types": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", - "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.1", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } + "@jest/fake-timers": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0" } }, - "@babel/helper-member-expression-to-functions": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.1.tgz", - "integrity": "sha512-u7XLXeM2n50gb6PWJ9hoO5oO7JFPaZtrh35t8RqKLT1jFKj9IWeD1zrcrYp1q1qiZTdEarfDWfTIP8nGsu0h5g==", + "@jest/fake-timers": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz", + "integrity": "sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==", "dev": true, "requires": { - "@babel/types": "^7.10.1" - }, - "dependencies": { - "@babel/types": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", - "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.1", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } + "@jest/types": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-mock": "^24.9.0" } }, - "@babel/helper-module-imports": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.1.tgz", - "integrity": "sha512-SFxgwYmZ3HZPyZwJRiVNLRHWuW2OgE5k2nrVs6D9Iv4PPnXVffuEHy83Sfx/l4SqF+5kyJXjAyUmrG7tNm+qVg==", + "@jest/reporters": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.9.0.tgz", + "integrity": "sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw==", "dev": true, "requires": { - "@babel/types": "^7.10.1" + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.2", + "istanbul-lib-coverage": "^2.0.2", + "istanbul-lib-instrument": "^3.0.1", + "istanbul-lib-report": "^2.0.4", + "istanbul-lib-source-maps": "^3.0.1", + "istanbul-reports": "^2.2.6", + "jest-haste-map": "^24.9.0", + "jest-resolve": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.6.0", + "node-notifier": "^5.4.2", + "slash": "^2.0.0", + "source-map": "^0.6.0", + "string-length": "^2.0.0" }, "dependencies": { - "@babel/types": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", - "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.1", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true } } }, - "@babel/helper-module-transforms": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.10.1.tgz", - "integrity": "sha512-RLHRCAzyJe7Q7sF4oy2cB+kRnU4wDZY/H2xJFGof+M+SJEGhZsb+GFj5j1AD8NiSaVBJ+Pf0/WObiXu/zxWpFg==", + "@jest/source-map": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz", + "integrity": "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.10.1", - "@babel/helper-replace-supers": "^7.10.1", - "@babel/helper-simple-access": "^7.10.1", - "@babel/helper-split-export-declaration": "^7.10.1", - "@babel/template": "^7.10.1", - "@babel/types": "^7.10.1", - "lodash": "^4.17.13" + "callsites": "^3.0.0", + "graceful-fs": "^4.1.15", + "source-map": "^0.6.0" }, "dependencies": { - "@babel/code-frame": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.1.tgz", - "integrity": "sha512-IGhtTmpjGbYzcEDOw7DcQtbQSXcG9ftmAXtWTu9V936vDye4xjjekktFAtgZsWpzTj/X01jocB46mTywm/4SZw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.10.1" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.1.tgz", - "integrity": "sha512-UQ1LVBPrYdbchNhLwj6fetj46BcFwfS4NllJo/1aJsT+1dLTEnXJL0qHqtY7gPzF8S2fXBJamf1biAXV3X077g==", - "dev": true, - "requires": { - "@babel/types": "^7.10.1" - } - }, - "@babel/highlight": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.1.tgz", - "integrity": "sha512-8rMof+gVP8mxYZApLF/JgNDAkdKa+aJt3ZYxF8z6+j/hpeXL7iMsKCPHa2jNMHu/qqBwzQF4OHNoYi8dMA/rYg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.1", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.2.tgz", - "integrity": "sha512-PApSXlNMJyB4JiGVhCOlzKIif+TKFTvu0aQAhnTvfP/z3vVSN6ZypH5bfUNwFXXjRQtUEBNFd2PtmCmG2Py3qQ==", - "dev": true - }, - "@babel/template": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.1.tgz", - "integrity": "sha512-OQDg6SqvFSsc9A0ej6SKINWrpJiNonRIniYondK2ViKhB06i3c0s+76XUft71iqBEe9S1OKsHwPAjfHnuvnCig==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.10.1", - "@babel/parser": "^7.10.1", - "@babel/types": "^7.10.1" - } - }, - "@babel/types": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", - "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.1", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "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": { - "color-convert": "^1.9.0" - } - }, - "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": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "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==", + "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 - }, - "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" - } } } }, - "@babel/helper-optimise-call-expression": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.1.tgz", - "integrity": "sha512-a0DjNS1prnBsoKx83dP2falChcs7p3i8VMzdrSbfLhuQra/2ENC4sbri34dz/rWmDADsmF1q5GbfaXydh0Jbjg==", + "@jest/test-result": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz", + "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==", + "dev": true, + "requires": { + "@jest/console": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/istanbul-lib-coverage": "^2.0.0" + } + }, + "@jest/test-sequencer": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz", + "integrity": "sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A==", + "dev": true, + "requires": { + "@jest/test-result": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-runner": "^24.9.0", + "jest-runtime": "^24.9.0" + } + }, + "@jest/transform": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.9.0.tgz", + "integrity": "sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ==", "dev": true, "requires": { - "@babel/types": "^7.10.1" + "@babel/core": "^7.1.0", + "@jest/types": "^24.9.0", + "babel-plugin-istanbul": "^5.1.0", + "chalk": "^2.0.1", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.1.15", + "jest-haste-map": "^24.9.0", + "jest-regex-util": "^24.9.0", + "jest-util": "^24.9.0", + "micromatch": "^3.1.10", + "pirates": "^4.0.1", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "2.4.1" }, "dependencies": { - "@babel/types": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", - "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.1", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } + "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 + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true } } }, - "@babel/helper-plugin-utils": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz", - "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==", + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", + "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.3", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", + "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz", + "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.3", + "fastq": "^1.6.0" + } + }, + "@textlint/ast-node-types": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-4.2.1.tgz", + "integrity": "sha512-Pqg1LTJpF929Ovi/lCaPqlyz8yDwBFbQulC0jyQcbRAoTxYS4AZMc48Ug2yk0so5hISQXKrlAxyVBmBVl9EKGA==", "dev": true }, - "@babel/helper-regex": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.1.tgz", - "integrity": "sha512-7isHr19RsIJWWLLFn21ubFt223PjQyg1HY7CZEMRr820HttHPpVvrsIN3bUOo44DEfFV4kBXO7Abbn9KTUZV7g==", + "@textlint/markdown-to-ast": { + "version": "6.0.9", + "resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-6.0.9.tgz", + "integrity": "sha512-hfAWBvTeUGh5t5kTn2U3uP3qOSM1BSrxzl1jF3nn0ywfZXpRBZr5yRjXnl4DzIYawCtZOshmRi/tI3/x4TE1jQ==", "dev": true, "requires": { - "lodash": "^4.17.13" + "@textlint/ast-node-types": "^4.0.3", + "debug": "^2.1.3", + "remark-frontmatter": "^1.2.0", + "remark-parse": "^5.0.0", + "structured-source": "^3.0.2", + "traverse": "^0.6.6", + "unified": "^6.1.6" } }, - "@babel/helper-remap-async-to-generator": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.1.tgz", - "integrity": "sha512-RfX1P8HqsfgmJ6CwaXGKMAqbYdlleqglvVtht0HGPMSsy2V6MqLlOJVF/0Qyb/m2ZCi2z3q3+s6Pv7R/dQuZ6A==", + "@ts-morph/common": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.1.1.tgz", + "integrity": "sha512-8TLlC85CXgKNoTeqoXtrscPmKDbQCBfwZJ4hqli/QI4STa7sD2H6UqI9LSg8uBV5FYaD0QSdj/mtrCDrELvF+Q==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.10.1", - "@babel/helper-wrap-function": "^7.10.1", - "@babel/template": "^7.10.1", - "@babel/traverse": "^7.10.1", - "@babel/types": "^7.10.1" + "@dsherret/to-absolute-glob": "^2.0.2", + "fs-extra": "^8.1.0", + "glob-parent": "^5.1.0", + "globby": "^10.0.1", + "is-negated-glob": "^1.0.0", + "multimatch": "^4.0.0", + "typescript": "~3.7.2" }, "dependencies": { - "@babel/code-frame": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.1.tgz", - "integrity": "sha512-IGhtTmpjGbYzcEDOw7DcQtbQSXcG9ftmAXtWTu9V936vDye4xjjekktFAtgZsWpzTj/X01jocB46mTywm/4SZw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.10.1" - } - }, - "@babel/generator": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.2.tgz", - "integrity": "sha512-AxfBNHNu99DTMvlUPlt1h2+Hn7knPpH5ayJ8OqDWSeLld+Fi2AYBTC/IejWDM9Edcii4UzZRCsbUt0WlSDsDsA==", - "dev": true, - "requires": { - "@babel/types": "^7.10.2", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0" - } - }, - "@babel/helper-function-name": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.1.tgz", - "integrity": "sha512-fcpumwhs3YyZ/ttd5Rz0xn0TpIwVkN7X0V38B9TWNfVF42KEkhkAAuPCQ3oXmtTRtiPJrmZ0TrfS0GKF0eMaRQ==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.10.1", - "@babel/template": "^7.10.1", - "@babel/types": "^7.10.1" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.1.tgz", - "integrity": "sha512-F5qdXkYGOQUb0hpRaPoetF9AnsXknKjWMZ+wmsIRsp5ge5sFh4c3h1eH2pRTTuy9KKAA2+TTYomGXAtEL2fQEw==", - "dev": true, - "requires": { - "@babel/types": "^7.10.1" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.1.tgz", - "integrity": "sha512-UQ1LVBPrYdbchNhLwj6fetj46BcFwfS4NllJo/1aJsT+1dLTEnXJL0qHqtY7gPzF8S2fXBJamf1biAXV3X077g==", - "dev": true, - "requires": { - "@babel/types": "^7.10.1" - } - }, - "@babel/highlight": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.1.tgz", - "integrity": "sha512-8rMof+gVP8mxYZApLF/JgNDAkdKa+aJt3ZYxF8z6+j/hpeXL7iMsKCPHa2jNMHu/qqBwzQF4OHNoYi8dMA/rYg==", + "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==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.10.1", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" } }, - "@babel/parser": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.2.tgz", - "integrity": "sha512-PApSXlNMJyB4JiGVhCOlzKIif+TKFTvu0aQAhnTvfP/z3vVSN6ZypH5bfUNwFXXjRQtUEBNFd2PtmCmG2Py3qQ==", + "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 }, - "@babel/template": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.1.tgz", - "integrity": "sha512-OQDg6SqvFSsc9A0ej6SKINWrpJiNonRIniYondK2ViKhB06i3c0s+76XUft71iqBEe9S1OKsHwPAjfHnuvnCig==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.10.1", - "@babel/parser": "^7.10.1", - "@babel/types": "^7.10.1" - } - }, - "@babel/traverse": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.1.tgz", - "integrity": "sha512-C/cTuXeKt85K+p08jN6vMDz8vSV0vZcI0wmQ36o6mjbuo++kPMdpOYw23W2XH04dbRt9/nMEfA4W3eR21CD+TQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.10.1", - "@babel/generator": "^7.10.1", - "@babel/helper-function-name": "^7.10.1", - "@babel/helper-split-export-declaration": "^7.10.1", - "@babel/parser": "^7.10.1", - "@babel/types": "^7.10.1", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" - } - }, - "@babel/types": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", - "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.1", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "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": { - "color-convert": "^1.9.0" - } - }, - "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": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "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" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "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 - }, - "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.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "typescript": { + "version": "3.7.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.5.tgz", + "integrity": "sha512-/P5lkRXkWHNAbcJIiHPfRoKqyd7bsyCma1hZNUGfn20qm64T6ZBlrzprymeu918H+mB/0rIg2gGK/BXkhhYgBw==", "dev": true - }, - "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" - } } } }, - "@babel/helper-replace-supers": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.1.tgz", - "integrity": "sha512-SOwJzEfpuQwInzzQJGjGaiG578UYmyi2Xw668klPWV5n07B73S0a9btjLk/52Mlcxa+5AdIYqws1KyXRfMoB7A==", + "@types/babel__core": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.6.tgz", + "integrity": "sha512-tTnhWszAqvXnhW7m5jQU9PomXSiKXk2sFxpahXvI20SZKu9ylPi8WtIxueZ6ehDWikPT0jeFujMj3X4ZHuf3Tg==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.10.1", - "@babel/helper-optimise-call-expression": "^7.10.1", - "@babel/traverse": "^7.10.1", - "@babel/types": "^7.10.1" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.1.tgz", - "integrity": "sha512-IGhtTmpjGbYzcEDOw7DcQtbQSXcG9ftmAXtWTu9V936vDye4xjjekktFAtgZsWpzTj/X01jocB46mTywm/4SZw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.10.1" - } - }, - "@babel/generator": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.2.tgz", - "integrity": "sha512-AxfBNHNu99DTMvlUPlt1h2+Hn7knPpH5ayJ8OqDWSeLld+Fi2AYBTC/IejWDM9Edcii4UzZRCsbUt0WlSDsDsA==", - "dev": true, - "requires": { - "@babel/types": "^7.10.2", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0" - } - }, - "@babel/helper-function-name": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.1.tgz", - "integrity": "sha512-fcpumwhs3YyZ/ttd5Rz0xn0TpIwVkN7X0V38B9TWNfVF42KEkhkAAuPCQ3oXmtTRtiPJrmZ0TrfS0GKF0eMaRQ==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.10.1", - "@babel/template": "^7.10.1", - "@babel/types": "^7.10.1" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.1.tgz", - "integrity": "sha512-F5qdXkYGOQUb0hpRaPoetF9AnsXknKjWMZ+wmsIRsp5ge5sFh4c3h1eH2pRTTuy9KKAA2+TTYomGXAtEL2fQEw==", - "dev": true, - "requires": { - "@babel/types": "^7.10.1" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.1.tgz", - "integrity": "sha512-UQ1LVBPrYdbchNhLwj6fetj46BcFwfS4NllJo/1aJsT+1dLTEnXJL0qHqtY7gPzF8S2fXBJamf1biAXV3X077g==", - "dev": true, - "requires": { - "@babel/types": "^7.10.1" - } - }, - "@babel/highlight": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.1.tgz", - "integrity": "sha512-8rMof+gVP8mxYZApLF/JgNDAkdKa+aJt3ZYxF8z6+j/hpeXL7iMsKCPHa2jNMHu/qqBwzQF4OHNoYi8dMA/rYg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.1", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.2.tgz", - "integrity": "sha512-PApSXlNMJyB4JiGVhCOlzKIif+TKFTvu0aQAhnTvfP/z3vVSN6ZypH5bfUNwFXXjRQtUEBNFd2PtmCmG2Py3qQ==", - "dev": true - }, - "@babel/template": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.1.tgz", - "integrity": "sha512-OQDg6SqvFSsc9A0ej6SKINWrpJiNonRIniYondK2ViKhB06i3c0s+76XUft71iqBEe9S1OKsHwPAjfHnuvnCig==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.10.1", - "@babel/parser": "^7.10.1", - "@babel/types": "^7.10.1" - } - }, - "@babel/traverse": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.1.tgz", - "integrity": "sha512-C/cTuXeKt85K+p08jN6vMDz8vSV0vZcI0wmQ36o6mjbuo++kPMdpOYw23W2XH04dbRt9/nMEfA4W3eR21CD+TQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.10.1", - "@babel/generator": "^7.10.1", - "@babel/helper-function-name": "^7.10.1", - "@babel/helper-split-export-declaration": "^7.10.1", - "@babel/parser": "^7.10.1", - "@babel/types": "^7.10.1", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" - } - }, - "@babel/types": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", - "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.1", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "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": { - "color-convert": "^1.9.0" - } - }, - "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": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "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" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "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 - }, - "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.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "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" - } - } + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" } }, - "@babel/helper-simple-access": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.1.tgz", - "integrity": "sha512-VSWpWzRzn9VtgMJBIWTZ+GP107kZdQ4YplJlCmIrjoLVSi/0upixezHCDG8kpPVTBJpKfxTH01wDhh+jS2zKbw==", + "@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/template": "^7.10.1", - "@babel/types": "^7.10.1" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.1.tgz", - "integrity": "sha512-IGhtTmpjGbYzcEDOw7DcQtbQSXcG9ftmAXtWTu9V936vDye4xjjekktFAtgZsWpzTj/X01jocB46mTywm/4SZw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.10.1" - } - }, - "@babel/highlight": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.1.tgz", - "integrity": "sha512-8rMof+gVP8mxYZApLF/JgNDAkdKa+aJt3ZYxF8z6+j/hpeXL7iMsKCPHa2jNMHu/qqBwzQF4OHNoYi8dMA/rYg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.1", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.2.tgz", - "integrity": "sha512-PApSXlNMJyB4JiGVhCOlzKIif+TKFTvu0aQAhnTvfP/z3vVSN6ZypH5bfUNwFXXjRQtUEBNFd2PtmCmG2Py3qQ==", - "dev": true - }, - "@babel/template": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.1.tgz", - "integrity": "sha512-OQDg6SqvFSsc9A0ej6SKINWrpJiNonRIniYondK2ViKhB06i3c0s+76XUft71iqBEe9S1OKsHwPAjfHnuvnCig==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.10.1", - "@babel/parser": "^7.10.1", - "@babel/types": "^7.10.1" - } - }, - "@babel/types": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", - "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.1", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "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": { - "color-convert": "^1.9.0" - } - }, - "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": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "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 - }, - "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" - } - } + "@babel/types": "^7.0.0" } }, - "@babel/helper-split-export-declaration": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", - "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", + "@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/types": "^7.8.3" + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" } }, - "@babel/helper-validator-identifier": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.1.tgz", - "integrity": "sha512-5vW/JXLALhczRCWP0PnFDMCJAchlBvM7f4uk/jXritBnIa6E1KmqmtrS3yn1LAnxFBypQ3eneLuXjsnfQsgILw==", - "dev": true - }, - "@babel/helper-wrap-function": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.10.1.tgz", - "integrity": "sha512-C0MzRGteVDn+H32/ZgbAv5r56f2o1fZSA/rj/TYo8JEJNHg+9BdSmKBUND0shxWRztWhjlT2cvHYuynpPsVJwQ==", + "@types/babel__traverse": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.9.tgz", + "integrity": "sha512-jEFQ8L1tuvPjOI8lnpaf73oCJe+aoxL6ygqSy6c8LcW98zaC+4mzWuQIRCEvKeCOu+lbqdXcg4Uqmm1S8AP1tw==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.10.1", - "@babel/template": "^7.10.1", - "@babel/traverse": "^7.10.1", - "@babel/types": "^7.10.1" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.1.tgz", - "integrity": "sha512-IGhtTmpjGbYzcEDOw7DcQtbQSXcG9ftmAXtWTu9V936vDye4xjjekktFAtgZsWpzTj/X01jocB46mTywm/4SZw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.10.1" - } - }, - "@babel/generator": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.2.tgz", - "integrity": "sha512-AxfBNHNu99DTMvlUPlt1h2+Hn7knPpH5ayJ8OqDWSeLld+Fi2AYBTC/IejWDM9Edcii4UzZRCsbUt0WlSDsDsA==", - "dev": true, - "requires": { - "@babel/types": "^7.10.2", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0" - } - }, - "@babel/helper-function-name": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.1.tgz", - "integrity": "sha512-fcpumwhs3YyZ/ttd5Rz0xn0TpIwVkN7X0V38B9TWNfVF42KEkhkAAuPCQ3oXmtTRtiPJrmZ0TrfS0GKF0eMaRQ==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.10.1", - "@babel/template": "^7.10.1", - "@babel/types": "^7.10.1" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.1.tgz", - "integrity": "sha512-F5qdXkYGOQUb0hpRaPoetF9AnsXknKjWMZ+wmsIRsp5ge5sFh4c3h1eH2pRTTuy9KKAA2+TTYomGXAtEL2fQEw==", - "dev": true, - "requires": { - "@babel/types": "^7.10.1" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.1.tgz", - "integrity": "sha512-UQ1LVBPrYdbchNhLwj6fetj46BcFwfS4NllJo/1aJsT+1dLTEnXJL0qHqtY7gPzF8S2fXBJamf1biAXV3X077g==", - "dev": true, - "requires": { - "@babel/types": "^7.10.1" - } - }, - "@babel/highlight": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.1.tgz", - "integrity": "sha512-8rMof+gVP8mxYZApLF/JgNDAkdKa+aJt3ZYxF8z6+j/hpeXL7iMsKCPHa2jNMHu/qqBwzQF4OHNoYi8dMA/rYg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.1", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.2.tgz", - "integrity": "sha512-PApSXlNMJyB4JiGVhCOlzKIif+TKFTvu0aQAhnTvfP/z3vVSN6ZypH5bfUNwFXXjRQtUEBNFd2PtmCmG2Py3qQ==", - "dev": true - }, - "@babel/template": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.1.tgz", - "integrity": "sha512-OQDg6SqvFSsc9A0ej6SKINWrpJiNonRIniYondK2ViKhB06i3c0s+76XUft71iqBEe9S1OKsHwPAjfHnuvnCig==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.10.1", - "@babel/parser": "^7.10.1", - "@babel/types": "^7.10.1" - } - }, - "@babel/traverse": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.1.tgz", - "integrity": "sha512-C/cTuXeKt85K+p08jN6vMDz8vSV0vZcI0wmQ36o6mjbuo++kPMdpOYw23W2XH04dbRt9/nMEfA4W3eR21CD+TQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.10.1", - "@babel/generator": "^7.10.1", - "@babel/helper-function-name": "^7.10.1", - "@babel/helper-split-export-declaration": "^7.10.1", - "@babel/parser": "^7.10.1", - "@babel/types": "^7.10.1", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" - } - }, - "@babel/types": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", - "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.1", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "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": { - "color-convert": "^1.9.0" - } - }, - "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": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "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" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "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 - }, - "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.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "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" - } - } + "@babel/types": "^7.3.0" } }, - "@babel/helpers": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.8.4.tgz", - "integrity": "sha512-VPbe7wcQ4chu4TDQjimHv/5tj73qz88o12EPkO2ValS2QiQS/1F2SsjyIGNnAD0vF/nZS6Cf9i+vW6HIlnaR8w==", - "dev": true, - "requires": { - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.8.4", - "@babel/types": "^7.8.3" - } + "@types/benchmark": { + "version": "1.0.31", + "resolved": "https://registry.npmjs.org/@types/benchmark/-/benchmark-1.0.31.tgz", + "integrity": "sha1-LdNRTpM5bzYrpVUafJ/w2kBcHTg=", + "dev": true }, - "@babel/highlight": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", - "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "@types/glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-VgNIkxK+j7Nz5P7jvUZlRvhuPSmsEfS03b0alKcq5V/STUKAa3Plemsn5mrQUO7am6OErJ4rhGEGJbACclrtRA==", "dev": true, "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "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": { - "color-convert": "^1.9.0" - } - }, - "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": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "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 - }, - "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" - } - } + "@types/minimatch": "*", + "@types/node": "*" } }, - "@babel/parser": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.8.tgz", - "integrity": "sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA==", + "@types/istanbul-lib-coverage": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", + "integrity": "sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg==", "dev": true }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.1.tgz", - "integrity": "sha512-vzZE12ZTdB336POZjmpblWfNNRpMSua45EYnRigE2XsZxcXcIyly2ixnTJasJE4Zq3U7t2d8rRF7XRUuzHxbOw==", + "@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": { - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/helper-remap-async-to-generator": "^7.10.1", - "@babel/plugin-syntax-async-generators": "^7.8.0" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", - "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", - "dev": true - } + "@types/istanbul-lib-coverage": "*" } }, - "@babel/plugin-proposal-class-properties": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.1.tgz", - "integrity": "sha512-sqdGWgoXlnOdgMXU+9MbhzwFRgxVLeiGBqTrnuS7LC2IBU31wSsESbTUreT2O418obpfPdGUR2GbEufZF1bpqw==", + "@types/istanbul-reports": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz", + "integrity": "sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", - "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", - "dev": true - } + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" } }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.1.tgz", - "integrity": "sha512-Cpc2yUVHTEGPlmiQzXj026kqwjEQAD9I4ZC16uzdbgWgitg/UHKHLffKNCQZ5+y8jpIZPJcKcwsr2HwPh+w3XA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/plugin-syntax-dynamic-import": "^7.8.0" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", - "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", - "dev": true - } - } + "@types/jest": { + "version": "22.2.2", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-22.2.2.tgz", + "integrity": "sha1-r+Xay9ANZTJfUtoO0+duJZYprJ0=", + "dev": true }, - "@babel/plugin-proposal-json-strings": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.1.tgz", - "integrity": "sha512-m8r5BmV+ZLpWPtMY2mOKN7wre6HIO4gfIiV+eOmsnZABNenrt/kzYBwrh+KOfgumSWpnlGs5F70J8afYMSJMBg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/plugin-syntax-json-strings": "^7.8.0" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", - "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", - "dev": true - } - } + "@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/node": { + "version": "12.6.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.6.8.tgz", + "integrity": "sha512-aX+gFgA5GHcDi89KG5keey2zf0WfZk/HAQotEamsK2kbey+8yGKcson0hbK8E+v0NArlCJQCqMP161YhV6ZXLg==", + "dev": true + }, + "@types/prettier": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-1.10.0.tgz", + "integrity": "sha1-Wr8ewKbpBP4kkMwgaPNqOOSmPEI=", + "dev": true }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.1.tgz", - "integrity": "sha512-56cI/uHYgL2C8HVuHOuvVowihhX0sxb3nnfVRzUeVHTWmRHTZrKuAh/OBIMggGU/S1g/1D2CRCXqP+3u7vX7iA==", + "@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": "13.0.8", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.8.tgz", + "integrity": "sha512-XAvHLwG7UQ+8M4caKIH0ZozIOYay5fQkAgyIXegXT9jPtdIGdhga+sUEdAr1CiG46aB+c64xQEYyEzlwWVTNzA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", - "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", - "dev": true - } + "@types/yargs-parser": "*" } }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.1.tgz", - "integrity": "sha512-jjfym4N9HtCiNfyyLAVD8WqPYeHUrw4ihxuAynWj6zzp2gf9Ey2f7ImhFm6ikB3CLf5Z/zmcJDri6B4+9j9RsA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/plugin-syntax-numeric-separator": "^7.10.1" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", - "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", - "dev": true - } - } + "@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 }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.1.tgz", - "integrity": "sha512-Z+Qri55KiQkHh7Fc4BW6o+QBuTagbOp9txE+4U1i79u9oWlf2npkiDx+Rf3iK3lbcHBuNy9UOkwuR5wOMH3LIQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-transform-parameters": "^7.10.1" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", - "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", - "dev": true - } - } + "abab": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.3.tgz", + "integrity": "sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg==", + "dev": true }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.1.tgz", - "integrity": "sha512-VqExgeE62YBqI3ogkGoOJp1R6u12DFZjqwJhqtKc2o5m1YTUuUWnos7bZQFBhwkxIFpWYJ7uB75U7VAPPiKETA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", - "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", - "dev": true - } - } + "acorn": { + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", + "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", + "dev": true }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.10.1.tgz", - "integrity": "sha512-dqQj475q8+/avvok72CF3AOSV/SGEcH29zT5hhohqqvvZ2+boQoOr7iGldBG5YXTO2qgCgc2B3WvVLUdbeMlGA==", + "acorn-globals": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", + "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/plugin-syntax-optional-chaining": "^7.8.0" + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" }, "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", - "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", + "acorn": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", "dev": true } } }, - "@babel/plugin-proposal-private-methods": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.1.tgz", - "integrity": "sha512-RZecFFJjDiQ2z6maFprLgrdnm0OzoC23Mx89xf1CcEsxmHuzuXOdniEuI+S3v7vjQG4F5sa6YtUp+19sZuSxHg==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", - "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", - "dev": true - } - } + "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 }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.1.tgz", - "integrity": "sha512-JjfngYRvwmPwmnbRZyNiPFI8zxCZb8euzbCG/LxyKdeTb59tVciKo9GK9bi6JYKInk1H11Dq9j/zRqIH4KigfQ==", + "ajv": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", - "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", - "dev": true - } + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, - "@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==", + "anchor-markdown-header": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/anchor-markdown-header/-/anchor-markdown-header-0.5.7.tgz", + "integrity": "sha1-BFBj125qH5zTJ6V6ASaqD97Dcac=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "emoji-regex": "~6.1.0" } }, - "@babel/plugin-syntax-class-properties": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.1.tgz", - "integrity": "sha512-Gf2Yx/iRs1JREDtVZ56OrjjgFHCaldpTnuy9BHla10qyVT3YkIIGEtoDWhyop0ksu1GvNjHIoYRBqm3zoR1jyQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.1" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", - "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", - "dev": true - } - } + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "ansi-red": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz", + "integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "ansi-wrap": "0.1.0" } }, - "@babel/plugin-syntax-flow": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.10.1.tgz", - "integrity": "sha512-b3pWVncLBYoPP60UOTc7NMlbtsHQ6ITim78KQejNHK6WJ2mzV5kCcg4mIWpasAfJEgwVTibwo2e+FU7UEIKQUg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.1" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", - "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", - "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 }, - "@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==", + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "color-convert": "^1.9.0" } }, - "@babel/plugin-syntax-jsx": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.1.tgz", - "integrity": "sha512-+OxyOArpVFXQeXKLO9o+r2I4dIoVoy6+Uu0vKELrlweDM3QJADZj+Z+5ERansZqIZBcLj42vHnDI8Rz9BnRIuQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.1" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", - "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", - "dev": true - } - } + "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 }, - "@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==", + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" } }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.1.tgz", - "integrity": "sha512-uTd0OsHrpe3tH5gRPTxG8Voh99/WCU78vIm5NMRYPAqC8lR4vajt6KkCAknCHrx24vkPdd/05yfdGSB4EIY2mg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.1" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", - "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", - "dev": true - } - } + "arg": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz", + "integrity": "sha1-WDxRgZlBngA3q7dAYsN/hRnldfA=", + "dev": true }, - "@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==", + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "sprintf-js": "~1.0.2" } }, - "@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" - } + "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 }, - "@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" - } + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=", + "dev": true }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.1.tgz", - "integrity": "sha512-hgA5RYkmZm8FTFT3yu2N9Bx7yVVOKYT6yEdXXo6j2JTm0wNxgqaGeQVaSHRjhfnQbX91DtjFB6McRFSlcJH3xQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.1" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", - "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", - "dev": true - } - } + "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 }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.1.tgz", - "integrity": "sha512-6AZHgFJKP3DJX0eCNJj01RpytUa3SOGawIxweHkNX2L6PYikOZmoh5B0d7hIHaIgveMjX990IAa/xK7jRTN8OA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.1" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", - "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", - "dev": true - } - } + "array-differ": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", + "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", + "dev": true }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.1.tgz", - "integrity": "sha512-XCgYjJ8TY2slj6SReBUyamJn3k2JLUIiiR5b6t1mNCMSvv7yx+jJpaewakikp0uWFQSF7ChPPoe3dHmXLpISkg==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/helper-remap-async-to-generator": "^7.10.1" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", - "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", - "dev": true - } - } + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", + "dev": true }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.1.tgz", - "integrity": "sha512-B7K15Xp8lv0sOJrdVAoukKlxP9N59HS48V1J3U/JGj+Ad+MHq+am6xJVs85AgXrQn4LV8vaYFOB+pr/yIuzW8Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.1" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", - "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", - "dev": true - } - } + "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 + }, + "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 + }, + "arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true }, - "@babel/plugin-transform-block-scoping": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.1.tgz", - "integrity": "sha512-8bpWG6TtF5akdhIm/uWTyjHqENpy13Fx8chg7pFH875aNLwX8JxIxqm08gmAT+Whe6AOmaTeLPe7dpLbXt+xUw==", + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1", - "lodash": "^4.17.13" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", - "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", - "dev": true - } + "safer-buffer": "~2.1.0" } }, - "@babel/plugin-transform-classes": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.1.tgz", - "integrity": "sha512-P9V0YIh+ln/B3RStPoXpEQ/CoAxQIhRSUn7aXqQ+FZJ2u8+oCtjIXR3+X0vsSD8zv+mb56K7wZW1XiDTDGiDRQ==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.10.1", - "@babel/helper-define-map": "^7.10.1", - "@babel/helper-function-name": "^7.10.1", - "@babel/helper-optimise-call-expression": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/helper-replace-supers": "^7.10.1", - "@babel/helper-split-export-declaration": "^7.10.1", - "globals": "^11.1.0" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.1.tgz", - "integrity": "sha512-IGhtTmpjGbYzcEDOw7DcQtbQSXcG9ftmAXtWTu9V936vDye4xjjekktFAtgZsWpzTj/X01jocB46mTywm/4SZw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.10.1" - } - }, - "@babel/helper-function-name": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.1.tgz", - "integrity": "sha512-fcpumwhs3YyZ/ttd5Rz0xn0TpIwVkN7X0V38B9TWNfVF42KEkhkAAuPCQ3oXmtTRtiPJrmZ0TrfS0GKF0eMaRQ==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.10.1", - "@babel/template": "^7.10.1", - "@babel/types": "^7.10.1" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.1.tgz", - "integrity": "sha512-F5qdXkYGOQUb0hpRaPoetF9AnsXknKjWMZ+wmsIRsp5ge5sFh4c3h1eH2pRTTuy9KKAA2+TTYomGXAtEL2fQEw==", - "dev": true, - "requires": { - "@babel/types": "^7.10.1" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", - "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "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 + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, + "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 + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "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 + }, + "autolinker": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/autolinker/-/autolinker-0.28.1.tgz", + "integrity": "sha1-BlK0kYgYefB3XazgzcoyM5QqTkc=", + "dev": true, + "requires": { + "gulp-header": "^1.7.1" + } + }, + "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 + }, + "aws4": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", + "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==", + "dev": true + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", "dev": true }, - "@babel/helper-split-export-declaration": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.1.tgz", - "integrity": "sha512-UQ1LVBPrYdbchNhLwj6fetj46BcFwfS4NllJo/1aJsT+1dLTEnXJL0qHqtY7gPzF8S2fXBJamf1biAXV3X077g==", - "dev": true, - "requires": { - "@babel/types": "^7.10.1" - } - }, - "@babel/highlight": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.1.tgz", - "integrity": "sha512-8rMof+gVP8mxYZApLF/JgNDAkdKa+aJt3ZYxF8z6+j/hpeXL7iMsKCPHa2jNMHu/qqBwzQF4OHNoYi8dMA/rYg==", + "chalk": { + "version": "1.1.3", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.10.1", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, - "@babel/parser": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.2.tgz", - "integrity": "sha512-PApSXlNMJyB4JiGVhCOlzKIif+TKFTvu0aQAhnTvfP/z3vVSN6ZypH5bfUNwFXXjRQtUEBNFd2PtmCmG2Py3qQ==", + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", "dev": true - }, - "@babel/template": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.1.tgz", - "integrity": "sha512-OQDg6SqvFSsc9A0ej6SKINWrpJiNonRIniYondK2ViKhB06i3c0s+76XUft71iqBEe9S1OKsHwPAjfHnuvnCig==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.10.1", - "@babel/parser": "^7.10.1", - "@babel/types": "^7.10.1" - } - }, - "@babel/types": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", - "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.1", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, + } + } + }, + "babel-jest": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.9.0.tgz", + "integrity": "sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw==", + "dev": true, + "requires": { + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/babel__core": "^7.1.0", + "babel-plugin-istanbul": "^5.1.0", + "babel-preset-jest": "^24.9.0", + "chalk": "^2.4.2", + "slash": "^2.0.0" + }, + "dependencies": { "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -2243,10 +1018,10 @@ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "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==", + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", "dev": true }, "supports-color": { @@ -2260,722 +1035,551 @@ } } }, - "@babel/plugin-transform-computed-properties": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.1.tgz", - "integrity": "sha512-mqSrGjp3IefMsXIenBfGcPXxJxweQe2hEIwMQvjtiDQ9b1IBvDUjkAtV/HMXX47/vXf14qDNedXsIiNd1FmkaQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.1" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", - "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", - "dev": true - } - } - }, - "@babel/plugin-transform-destructuring": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.1.tgz", - "integrity": "sha512-V/nUc4yGWG71OhaTH705pU8ZSdM6c1KmmLP8ys59oOYbT7RpMYAR3MsVOt6OHL0WzG7BlTU076va9fjJyYzJMA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.1" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", - "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", - "dev": true - } - } - }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.1.tgz", - "integrity": "sha512-19VIMsD1dp02RvduFUmfzj8uknaO3uiHHF0s3E1OHnVsNj8oge8EQ5RzHRbJjGSetRnkEuBYO7TG1M5kKjGLOA==", + "babel-plugin-istanbul": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz", + "integrity": "sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", - "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", - "dev": true - } + "@babel/helper-plugin-utils": "^7.0.0", + "find-up": "^3.0.0", + "istanbul-lib-instrument": "^3.3.0", + "test-exclude": "^5.2.3" } }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.1.tgz", - "integrity": "sha512-wIEpkX4QvX8Mo9W6XF3EdGttrIPZWozHfEaDTU0WJD/TDnXMvdDh30mzUl/9qWhnf7naicYartcEfUghTCSNpA==", + "babel-plugin-jest-hoist": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz", + "integrity": "sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", - "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", - "dev": true - } + "@types/babel__traverse": "^7.0.6" } }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.1.tgz", - "integrity": "sha512-lr/przdAbpEA2BUzRvjXdEDLrArGRRPwbaF9rvayuHRvdQ7lUTTkZnhZrJ4LE2jvgMRFF4f0YuPQ20vhiPYxtA==", + "babel-preset-jest": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz", + "integrity": "sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", - "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", - "dev": true - } + "@babel/plugin-syntax-object-rest-spread": "^7.0.0", + "babel-plugin-jest-hoist": "^24.9.0" } }, - "@babel/plugin-transform-flow-strip-types": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.10.1.tgz", - "integrity": "sha512-i4o0YwiJBIsIx7/liVCZ3Q2WkWr1/Yu39PksBOnh/khW2SwIFsGa5Ze+MSon5KbDfrEHP9NeyefAgvUSXzaEkw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/plugin-syntax-flow": "^7.10.1" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", - "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", - "dev": true - } - } + "bail": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.3.tgz", + "integrity": "sha512-1X8CnjFVQ+a+KW36uBNMTU5s8+v5FzeqrP7hTG5aTb4aPreSbZJlhwPon9VKMuEVgV++JM+SQrALY3kr7eswdg==", + "dev": true }, - "@babel/plugin-transform-for-of": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.1.tgz", - "integrity": "sha512-US8KCuxfQcn0LwSCMWMma8M2R5mAjJGsmoCBVwlMygvmDUMkTCykc84IqN1M7t+agSfOmLYTInLCHJM+RUoz+w==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.1" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", - "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", - "dev": true - } - } + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true }, - "@babel/plugin-transform-function-name": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.1.tgz", - "integrity": "sha512-//bsKsKFBJfGd65qSNNh1exBy5Y9gD9ZN+DvrJ8f7HXr4avE5POW6zB7Rj6VnqHV33+0vXWUwJT0wSHubiAQkw==", + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha1-e95c7RRbbVUakNuH+DxVi060io8=", "dev": true, "requires": { - "@babel/helper-function-name": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.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": { - "@babel/code-frame": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.1.tgz", - "integrity": "sha512-IGhtTmpjGbYzcEDOw7DcQtbQSXcG9ftmAXtWTu9V936vDye4xjjekktFAtgZsWpzTj/X01jocB46mTywm/4SZw==", + "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": { - "@babel/highlight": "^7.10.1" + "is-descriptor": "^1.0.0" } }, - "@babel/helper-function-name": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.1.tgz", - "integrity": "sha512-fcpumwhs3YyZ/ttd5Rz0xn0TpIwVkN7X0V38B9TWNfVF42KEkhkAAuPCQ3oXmtTRtiPJrmZ0TrfS0GKF0eMaRQ==", + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.10.1", - "@babel/template": "^7.10.1", - "@babel/types": "^7.10.1" + "kind-of": "^6.0.0" } }, - "@babel/helper-get-function-arity": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.1.tgz", - "integrity": "sha512-F5qdXkYGOQUb0hpRaPoetF9AnsXknKjWMZ+wmsIRsp5ge5sFh4c3h1eH2pRTTuy9KKAA2+TTYomGXAtEL2fQEw==", + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", "dev": true, "requires": { - "@babel/types": "^7.10.1" + "kind-of": "^6.0.0" } }, - "@babel/helper-plugin-utils": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", - "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", - "dev": true - }, - "@babel/highlight": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.1.tgz", - "integrity": "sha512-8rMof+gVP8mxYZApLF/JgNDAkdKa+aJt3ZYxF8z6+j/hpeXL7iMsKCPHa2jNMHu/qqBwzQF4OHNoYi8dMA/rYg==", + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.10.1", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, - "@babel/parser": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.2.tgz", - "integrity": "sha512-PApSXlNMJyB4JiGVhCOlzKIif+TKFTvu0aQAhnTvfP/z3vVSN6ZypH5bfUNwFXXjRQtUEBNFd2PtmCmG2Py3qQ==", + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, - "@babel/template": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.1.tgz", - "integrity": "sha512-OQDg6SqvFSsc9A0ej6SKINWrpJiNonRIniYondK2ViKhB06i3c0s+76XUft71iqBEe9S1OKsHwPAjfHnuvnCig==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.10.1", - "@babel/parser": "^7.10.1", - "@babel/types": "^7.10.1" - } - }, - "@babel/types": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", - "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.1", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "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": { - "color-convert": "^1.9.0" - } - }, - "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": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "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 - }, - "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" - } - } - } - }, - "@babel/plugin-transform-literals": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.1.tgz", - "integrity": "sha512-qi0+5qgevz1NHLZroObRm5A+8JJtibb7vdcPQF1KQE12+Y/xxl8coJ+TpPW9iRq+Mhw/NKLjm+5SHtAHCC7lAw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.1" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", - "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", - "dev": true - } - } - }, - "@babel/plugin-transform-member-expression-literals": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.1.tgz", - "integrity": "sha512-UmaWhDokOFT2GcgU6MkHC11i0NQcL63iqeufXWfRy6pUOGYeCGEKhvfFO6Vz70UfYJYHwveg62GS83Rvpxn+NA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.1" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", - "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", - "dev": true - } - } - }, - "@babel/plugin-transform-modules-amd": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.1.tgz", - "integrity": "sha512-31+hnWSFRI4/ACFr1qkboBbrTxoBIzj7qA69qlq8HY8p7+YCzkCT6/TvQ1a4B0z27VeWtAeJd6pr5G04dc1iHw==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", - "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", - "dev": true - } - } - }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.1.tgz", - "integrity": "sha512-AQG4fc3KOah0vdITwt7Gi6hD9BtQP/8bhem7OjbaMoRNCH5Djx42O2vYMfau7QnAzQCa+RJnhJBmFFMGpQEzrg==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/helper-simple-access": "^7.10.1", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", - "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", + "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 } } }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.1.tgz", - "integrity": "sha512-ewNKcj1TQZDL3YnO85qh9zo1YF1CHgmSTlRQgHqe63oTrMI85cthKtZjAiZSsSNjPQ5NCaYo5QkbYqEw1ZBgZA==", + "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": { - "@babel/helper-hoist-variables": "^7.10.1", - "@babel/helper-module-transforms": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", - "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", - "dev": true - } + "tweetnacl": "^0.14.3" } }, - "@babel/plugin-transform-modules-umd": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.1.tgz", - "integrity": "sha512-EIuiRNMd6GB6ulcYlETnYYfgv4AxqrswghmBRQbWLHZxN4s7mupxzglnHqk9ZiUpDI4eRWewedJJNj67PWOXKA==", + "benchmark": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/benchmark/-/benchmark-2.1.4.tgz", + "integrity": "sha1-CfPeMckWQl1JjMLuVloOvzwqVik=", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", - "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", - "dev": true - } + "lodash": "^4.17.4", + "platform": "^1.3.3" } }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz", - "integrity": "sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw==", + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", "dev": true, + "optional": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3" + "file-uri-to-path": "1.0.0" } }, - "@babel/plugin-transform-new-target": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.1.tgz", - "integrity": "sha512-MBlzPc1nJvbmO9rPr1fQwXOM2iGut+JC92ku6PbiJMMK7SnQc1rytgpopveE3Evn47gzvGYeCdgfCDbZo0ecUw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.1" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", - "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", - "dev": true - } - } + "boundary": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/boundary/-/boundary-1.0.1.tgz", + "integrity": "sha1-TWfcJgLAzBbdm85+v4fpSCkPWBI=", + "dev": true }, - "@babel/plugin-transform-object-super": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.1.tgz", - "integrity": "sha512-WnnStUDN5GL+wGQrJylrnnVlFhFmeArINIR9gjhSeYyvroGhBrSAXYg/RHsnfzmsa+onJrTJrEClPzgNmmQ4Gw==", + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/helper-replace-supers": "^7.10.1" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", - "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", - "dev": true - } + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "@babel/plugin-transform-parameters": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.1.tgz", - "integrity": "sha512-tJ1T0n6g4dXMsL45YsSzzSDZCxiHXAQp/qHrucOq5gEHncTA3xDxnd5+sZcoQp+N1ZbieAaB8r/VUCG0gqseOg==", + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1" + "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": { - "@babel/helper-get-function-arity": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.1.tgz", - "integrity": "sha512-F5qdXkYGOQUb0hpRaPoetF9AnsXknKjWMZ+wmsIRsp5ge5sFh4c3h1eH2pRTTuy9KKAA2+TTYomGXAtEL2fQEw==", + "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": { - "@babel/types": "^7.10.1" + "is-extendable": "^0.1.0" } }, - "@babel/helper-plugin-utils": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", - "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", - "dev": true + "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" + } }, - "@babel/types": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", - "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", + "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": { - "@babel/helper-validator-identifier": "^7.10.1", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" + "kind-of": "^3.0.2" } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true } } }, - "@babel/plugin-transform-property-literals": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.1.tgz", - "integrity": "sha512-Kr6+mgag8auNrgEpbfIWzdXYOvqDHZOF0+Bx2xh4H2EDNwcbRb9lY6nkZg8oSjsX+DH9Ebxm9hOqtKW+gRDeNA==", + "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-resolve": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", + "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" + "resolve": "1.1.7" }, "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", - "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", "dev": true } } }, - "@babel/plugin-transform-react-jsx": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.10.1.tgz", - "integrity": "sha512-MBVworWiSRBap3Vs39eHt+6pJuLUAaK4oxGc8g+wY+vuSJvLiEQjW1LSTqKb8OUPtDvHCkdPhk7d6sjC19xyFw==", + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha1-uqVZ7hTO1zRSIputcyZGfGH6vWA=", + "dev": true + }, + "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": { - "@babel/helper-builder-react-jsx": "^7.10.1", - "@babel/helper-builder-react-jsx-experimental": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/plugin-syntax-jsx": "^7.10.1" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", - "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", - "dev": true - } + "fast-json-stable-stringify": "2.x" } }, - "@babel/plugin-transform-regenerator": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.1.tgz", - "integrity": "sha512-B3+Y2prScgJ2Bh/2l9LJxKbb8C8kRfsG4AdPT+n7ixBHIxJaIG8bi8tgjxUMege1+WqSJ+7gu1YeoMVO3gPWzw==", + "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": { - "regenerator-transform": "^0.14.2" + "node-int64": "^0.4.0" } }, - "@babel/plugin-transform-reserved-words": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.1.tgz", - "integrity": "sha512-qN1OMoE2nuqSPmpTqEM7OvJ1FkMEV+BjVeZZm9V9mq/x1JLKQ4pcv8riZJMNN3u2AUGl0ouOMjRr2siecvHqUQ==", + "buffer-from": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz", + "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==", + "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 + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha1-Cn9GQWgxyLZi7jb+TnxZ129marI=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.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" }, "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", - "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true } } }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.1.tgz", - "integrity": "sha512-AR0E/lZMfLstScFwztApGeyTHJ5u3JUKMjneqRItWeEqDdHWZwAOKycvQNCasCK/3r5YXsuNG25funcJDu7Y2g==", + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "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": { - "@babel/helper-plugin-utils": "^7.10.1" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", - "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", - "dev": true - } + "rsvp": "^4.8.4" } }, - "@babel/plugin-transform-spread": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.10.1.tgz", - "integrity": "sha512-8wTPym6edIrClW8FI2IoaePB91ETOtg36dOkj3bYcNe7aDMN2FXEoUa+WrmPc4xa1u2PQK46fUX2aCb+zo9rfw==", + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chalk": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.2.0.tgz", + "integrity": "sha1-R3s78vm4/Vyp5Cl0fjf3JO568kA=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", - "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", - "dev": true - } + "ansi-styles": "^3.1.0", + "escape-string-regexp": "^1.0.5", + "supports-color": "^4.0.0" } }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.1.tgz", - "integrity": "sha512-j17ojftKjrL7ufX8ajKvwRilwqTok4q+BjkknmQw9VNHnItTyMP5anPFzxFJdCQs7clLcWpCV3ma+6qZWLnGMA==", + "character-entities": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.2.tgz", + "integrity": "sha512-sMoHX6/nBiy3KKfC78dnEalnpn0Az0oSNvqUWYTtYrhRI5iUIYsROU48G+E+kMFQzqXaJ8kHJZ85n7y6/PHgwQ==", + "dev": true + }, + "character-entities-legacy": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.2.tgz", + "integrity": "sha512-9NB2VbXtXYWdXzqrvAHykE/f0QJxzaKIpZ5QzNZrrgQ7Iyxr2vnfS8fCBNVW9nUEZE0lo57nxKRqnzY/dKrwlA==", + "dev": true + }, + "character-reference-invalid": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.2.tgz", + "integrity": "sha512-7I/xceXfKyUJmSAn/jw8ve/9DyOP7XxufNYLI9Px7CmsKgEUaZLUTax6nZxGQtaoiZCjpu6cHPj20xC/vqRReQ==", + "dev": 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 + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha1-+TNprouafOAv1B+q0MqDAzGQxGM=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/helper-regex": "^7.10.1" + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" }, "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", - "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", + "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" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true } } }, - "@babel/plugin-transform-template-literals": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.1.tgz", - "integrity": "sha512-t7B/3MQf5M1T9hPCRG28DNGZUuxAuDqLYS03rJrIk2prj/UV7Z6FOneijhQhnv/Xa039vidXeVbvjK2SK5f7Gg==", + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1" + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" }, "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", - "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", + "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 + }, + "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" + } } } }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.1.tgz", - "integrity": "sha512-qX8KZcmbvA23zDi+lk9s6hC1FM7jgLHYIjuLgULgc8QtYnmB3tAVIYkNoKRQ75qWBeyzcoMoK8ZQmogGtC/w0g==", + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "code-block-writer": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-10.1.0.tgz", + "integrity": "sha512-RG9hpXtWFeUWhuUav1YuP/vGcyncW+t90yJLk9fNZs1De2OuHTHKAKThVCokt29PYq5RoJ0QSZaIZ+rvPO23hA==", + "dev": true + }, + "coffee-script": { + "version": "1.12.7", + "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.12.7.tgz", + "integrity": "sha512-fLeEhqwymYat/MpTPUjSKHVYYl0ec2mOyALEMLmzr5i1isuG+6jfI2j2d5oBO3VIzgUXgBVIcOT9uH1TFxBckw==", + "dev": true + }, + "collapse-white-space": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.4.tgz", + "integrity": "sha512-YfQ1tAUZm561vpYD+5eyWN8+UsceQbSrqqlc/6zDY2gtAE+uZLSdkkovhnGpmCThsvKBFakq4EdY/FF93E8XIw==", + "dev": true + }, + "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": { - "@babel/helper-plugin-utils": "^7.10.1" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", - "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", - "dev": true - } + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" } }, - "@babel/plugin-transform-unicode-escapes": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.1.tgz", - "integrity": "sha512-zZ0Poh/yy1d4jeDWpx/mNwbKJVwUYJX73q+gyh4bwtG0/iUlzdEu0sLMda8yuDFS6LBQlT/ST1SJAR6zYwXWgw==", + "color-convert": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.1" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", - "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", - "dev": true - } + "color-name": "^1.1.1" } }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.1.tgz", - "integrity": "sha512-Y/2a2W299k0VIUdbqYm9X2qS6fE0CUBhhiPpimK6byy7OJ/kORLlIX+J6UrjgNu5awvs62k+6RSslxhcvVw2Tw==", + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "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": { - "@babel/helper-create-regexp-features-plugin": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", - "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", - "dev": true - } + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", + "integrity": "sha1-9hmKqE5bg8RgVLlN3tv+1e6f8So=", + "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==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "concat-with-sourcemaps": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz", + "integrity": "sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==", + "dev": true, + "requires": { + "source-map": "^0.6.1" + } + }, + "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" } }, - "@babel/preset-env": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.10.2.tgz", - "integrity": "sha512-MjqhX0RZaEgK/KueRzh+3yPSk30oqDKJ5HP5tqTSB1e2gzGS3PLy7K0BIpnp78+0anFuSwOeuCf1zZO7RzRvEA==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.10.1", - "@babel/helper-compilation-targets": "^7.10.2", - "@babel/helper-module-imports": "^7.10.1", - "@babel/helper-plugin-utils": "^7.10.1", - "@babel/plugin-proposal-async-generator-functions": "^7.10.1", - "@babel/plugin-proposal-class-properties": "^7.10.1", - "@babel/plugin-proposal-dynamic-import": "^7.10.1", - "@babel/plugin-proposal-json-strings": "^7.10.1", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.1", - "@babel/plugin-proposal-numeric-separator": "^7.10.1", - "@babel/plugin-proposal-object-rest-spread": "^7.10.1", - "@babel/plugin-proposal-optional-catch-binding": "^7.10.1", - "@babel/plugin-proposal-optional-chaining": "^7.10.1", - "@babel/plugin-proposal-private-methods": "^7.10.1", - "@babel/plugin-proposal-unicode-property-regex": "^7.10.1", - "@babel/plugin-syntax-async-generators": "^7.8.0", - "@babel/plugin-syntax-class-properties": "^7.10.1", - "@babel/plugin-syntax-dynamic-import": "^7.8.0", - "@babel/plugin-syntax-json-strings": "^7.8.0", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", - "@babel/plugin-syntax-numeric-separator": "^7.10.1", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.0", - "@babel/plugin-syntax-top-level-await": "^7.10.1", - "@babel/plugin-transform-arrow-functions": "^7.10.1", - "@babel/plugin-transform-async-to-generator": "^7.10.1", - "@babel/plugin-transform-block-scoped-functions": "^7.10.1", - "@babel/plugin-transform-block-scoping": "^7.10.1", - "@babel/plugin-transform-classes": "^7.10.1", - "@babel/plugin-transform-computed-properties": "^7.10.1", - "@babel/plugin-transform-destructuring": "^7.10.1", - "@babel/plugin-transform-dotall-regex": "^7.10.1", - "@babel/plugin-transform-duplicate-keys": "^7.10.1", - "@babel/plugin-transform-exponentiation-operator": "^7.10.1", - "@babel/plugin-transform-for-of": "^7.10.1", - "@babel/plugin-transform-function-name": "^7.10.1", - "@babel/plugin-transform-literals": "^7.10.1", - "@babel/plugin-transform-member-expression-literals": "^7.10.1", - "@babel/plugin-transform-modules-amd": "^7.10.1", - "@babel/plugin-transform-modules-commonjs": "^7.10.1", - "@babel/plugin-transform-modules-systemjs": "^7.10.1", - "@babel/plugin-transform-modules-umd": "^7.10.1", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3", - "@babel/plugin-transform-new-target": "^7.10.1", - "@babel/plugin-transform-object-super": "^7.10.1", - "@babel/plugin-transform-parameters": "^7.10.1", - "@babel/plugin-transform-property-literals": "^7.10.1", - "@babel/plugin-transform-regenerator": "^7.10.1", - "@babel/plugin-transform-reserved-words": "^7.10.1", - "@babel/plugin-transform-shorthand-properties": "^7.10.1", - "@babel/plugin-transform-spread": "^7.10.1", - "@babel/plugin-transform-sticky-regex": "^7.10.1", - "@babel/plugin-transform-template-literals": "^7.10.1", - "@babel/plugin-transform-typeof-symbol": "^7.10.1", - "@babel/plugin-transform-unicode-escapes": "^7.10.1", - "@babel/plugin-transform-unicode-regex": "^7.10.1", - "@babel/preset-modules": "^0.1.3", - "@babel/types": "^7.10.2", - "browserslist": "^4.12.0", - "core-js-compat": "^3.6.2", - "invariant": "^2.2.2", - "levenary": "^1.1.1", - "semver": "^5.5.0" + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "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=", + "dev": true + }, + "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" }, "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", - "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", - "dev": true - }, - "@babel/types": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", - "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.10.1", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", @@ -2984,154 +1588,207 @@ } } }, - "@babel/preset-modules": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz", - "integrity": "sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg==", + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, + "cssstyle": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz", + "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" + "cssom": "0.3.x" } }, - "@babel/runtime": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.2.tgz", - "integrity": "sha512-6sF3uQw2ivImfVIl62RZ7MXhO2tap69WeWK57vAaimT6AZbE4FbqjdEJIN1UqoD6wI6B+1n9UiagafH1sxjOtg==", + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "dev": true, "requires": { - "regenerator-runtime": "^0.13.4" + "assert-plus": "^1.0.0" } }, - "@babel/template": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", - "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", "dev": true, "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6" + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" }, "dependencies": { - "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", "dev": true, "requires": { - "@babel/highlight": "^7.8.3" + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" } - }, - "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", - "dev": true, - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "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": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - } + } + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "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=", + "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-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 + }, + "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": "sha1-1Flono1lS6d+AqgX+HENcCyxbp0=", + "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": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" } }, - "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==", + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", "dev": true, "requires": { - "color-convert": "^1.9.0" + "kind-of": "^6.0.0" } }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, - "js-tokens": { + "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 + } + } + }, + "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 + }, + "detect-newline": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", + "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", + "dev": true + }, + "diacritics-map": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/diacritics-map/-/diacritics-map-0.1.0.tgz", + "integrity": "sha1-bfwP+dAQAKLt8oZTccrDFulJd68=", + "dev": true + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha1-gAwN0eCov7yVg1wgKtIg/jF+WhI=", + "dev": true + }, + "diff-sequences": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz", + "integrity": "sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==", + "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/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true - }, - "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" - } } } }, - "@babel/traverse": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.6.tgz", - "integrity": "sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A==", + "docs-ts": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/docs-ts/-/docs-ts-0.5.1.tgz", + "integrity": "sha512-zdBt4P6X7h577/Vku0YHAw/RR1+zpKklK+DOzed1HJltwAAciQG14qy18TzcMbVUFxrnT9OO4Y1K/lQLdX1i/Q==", "dev": true, "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.8.6", - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" + "chalk": "^2.4.2", + "doctrine": "^3.0.0", + "fp-ts": "^2.6.2", + "fs-extra": "^7.0.1", + "glob": "^7.1.3", + "markdown-toc": "^1.2.0", + "rimraf": "^2.6.3", + "ts-morph": "^5.0.0", + "ts-node": "^8.0.2" }, "dependencies": { - "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", - "dev": true, - "requires": { - "@babel/highlight": "^7.8.3" - } - }, - "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", - "dev": true, - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "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": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - } - } - }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -3141,13 +1798,26 @@ "color-convert": "^1.9.0" } }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "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": { - "ms": "^2.1.1" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" } }, "has-flag": { @@ -3156,17 +1826,14 @@ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "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 - }, - "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 + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } }, "supports-color": { "version": "5.5.0", @@ -3179,25 +1846,18 @@ } } }, - "@babel/types": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", - "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "@cnakazawa/watch": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", - "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", + "doctoc": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/doctoc/-/doctoc-1.4.0.tgz", + "integrity": "sha512-8IAq3KdMkxhXCUF+xdZxdJxwuz8N2j25sMgqiu4U4JWluN9tRKMlAalxGASszQjlZaBprdD2YfXpL3VPWUD4eg==", "dev": true, "requires": { - "exec-sh": "^0.3.2", - "minimist": "^1.2.0" + "@textlint/markdown-to-ast": "~6.0.9", + "anchor-markdown-header": "^0.5.5", + "htmlparser2": "~3.9.2", + "minimist": "~1.2.0", + "underscore": "~1.8.3", + "update-section": "^0.3.0" }, "dependencies": { "minimist": { @@ -3208,126 +1868,69 @@ } } }, - "@dsherret/to-absolute-glob": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@dsherret/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", - "integrity": "sha1-H2R13IvZdM6gei2vOGSzF7HdMyw=", + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, "requires": { - "is-absolute": "^1.0.0", - "is-negated-glob": "^1.0.0" + "esutils": "^2.0.2" + } + }, + "dom-serializer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", + "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", + "dev": true, + "requires": { + "domelementtype": "^1.3.0", + "entities": "^1.1.1" } }, - "@iarna/toml": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", - "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==", + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", "dev": true }, - "@jest/console": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz", - "integrity": "sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==", + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", "dev": true, "requires": { - "@jest/source-map": "^24.9.0", - "chalk": "^2.0.1", - "slash": "^2.0.0" - }, - "dependencies": { - "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": { - "color-convert": "^1.9.0" - } - }, - "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": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true - }, - "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" - } - } + "webidl-conversions": "^4.0.2" } }, - "@jest/environment": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.9.0.tgz", - "integrity": "sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ==", + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", "dev": true, "requires": { - "@jest/fake-timers": "^24.9.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "jest-mock": "^24.9.0" + "domelementtype": "1" } }, - "@jest/fake-timers": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz", - "integrity": "sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==", + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", "dev": true, "requires": { - "@jest/types": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-mock": "^24.9.0" + "dom-serializer": "0", + "domelementtype": "1" } }, - "@jest/reporters": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.9.0.tgz", - "integrity": "sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw==", + "dtslint": { + "version": "github:gcanti/dtslint#de9181e0f1069b16ea15da87f74d88ed9bc221b7", + "from": "github:gcanti/dtslint", "dev": true, "requires": { - "@jest/environment": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "glob": "^7.1.2", - "istanbul-lib-coverage": "^2.0.2", - "istanbul-lib-instrument": "^3.0.1", - "istanbul-lib-report": "^2.0.4", - "istanbul-lib-source-maps": "^3.0.1", - "istanbul-reports": "^2.2.6", - "jest-haste-map": "^24.9.0", - "jest-resolve": "^24.9.0", - "jest-runtime": "^24.9.0", - "jest-util": "^24.9.0", - "jest-worker": "^24.6.0", - "node-notifier": "^5.4.2", - "slash": "^2.0.0", - "source-map": "^0.6.0", - "string-length": "^2.0.0" + "fs-extra": "^6.0.1", + "parsimmon": "^1.12.0", + "strip-json-comments": "^2.0.1", + "tslint": "^5.12.0", + "typescript": "^4.0.0-dev.20200512" }, "dependencies": { "ansi-styles": { @@ -3350,18 +1953,18 @@ "supports-color": "^5.3.0" } }, + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true - }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -3370,7304 +1973,2573 @@ "requires": { "has-flag": "^3.0.0" } - } - } - }, - "@jest/source-map": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz", - "integrity": "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==", - "dev": true, - "requires": { - "callsites": "^3.0.0", - "graceful-fs": "^4.1.15", - "source-map": "^0.6.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 - } - } - }, - "@jest/test-result": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz", - "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==", - "dev": true, - "requires": { - "@jest/console": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/istanbul-lib-coverage": "^2.0.0" - } - }, - "@jest/test-sequencer": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz", - "integrity": "sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A==", - "dev": true, - "requires": { - "@jest/test-result": "^24.9.0", - "jest-haste-map": "^24.9.0", - "jest-runner": "^24.9.0", - "jest-runtime": "^24.9.0" - } - }, - "@jest/transform": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.9.0.tgz", - "integrity": "sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ==", - "dev": true, - "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^24.9.0", - "babel-plugin-istanbul": "^5.1.0", - "chalk": "^2.0.1", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.1.15", - "jest-haste-map": "^24.9.0", - "jest-regex-util": "^24.9.0", - "jest-util": "^24.9.0", - "micromatch": "^3.1.10", - "pirates": "^4.0.1", - "realpath-native": "^1.1.0", - "slash": "^2.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "2.4.1" - }, - "dependencies": { - "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": { - "color-convert": "^1.9.0" - } }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "tslint": { + "version": "5.20.1", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.20.1.tgz", + "integrity": "sha512-EcMxhzCFt8k+/UP5r8waCf/lzmeSyVlqxqMEDQE7rWYiQky8KpIBz1JAoYXfROHrPZ1XXd43q8yQnULOLiBRQg==", "dev": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "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 - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true - }, - "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" - } - } - } - }, - "@jest/types": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", - "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - } - }, - "@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", - "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", - "dev": true, - "requires": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" - } - }, - "@nodelib/fs.scandir": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", - "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.3", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", - "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz", - "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.3", - "fastq": "^1.6.0" - } - }, - "@parcel/fs": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-1.11.0.tgz", - "integrity": "sha512-86RyEqULbbVoeo8OLcv+LQ1Vq2PKBAvWTU9fCgALxuCTbbs5Ppcvll4Vr+Ko1AnmMzja/k++SzNAwJfeQXVlpA==", - "dev": true, - "requires": { - "@parcel/utils": "^1.11.0", - "mkdirp": "^0.5.1", - "rimraf": "^2.6.2" - } - }, - "@parcel/logger": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-1.11.1.tgz", - "integrity": "sha512-9NF3M6UVeP2udOBDILuoEHd8VrF4vQqoWHEafymO1pfSoOMfxrSJZw1MfyAAIUN/IFp9qjcpDCUbDZB+ioVevA==", - "dev": true, - "requires": { - "@parcel/workers": "^1.11.0", - "chalk": "^2.1.0", - "grapheme-breaker": "^0.3.2", - "ora": "^2.1.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "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==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "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": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" + "@babel/code-frame": "^7.0.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^4.0.1", + "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" } }, - "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" - } - } - } - }, - "@parcel/utils": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-1.11.0.tgz", - "integrity": "sha512-cA3p4jTlaMeOtAKR/6AadanOPvKeg8VwgnHhOyfi0yClD0TZS/hi9xu12w4EzA/8NtHu0g6o4RDfcNjqN8l1AQ==", - "dev": true - }, - "@parcel/watcher": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-1.12.1.tgz", - "integrity": "sha512-od+uCtCxC/KoNQAIE1vWx1YTyKYY+7CTrxBJPRh3cDWw/C0tCtlBMVlrbplscGoEpt6B27KhJDCv82PBxOERNA==", - "dev": true, - "requires": { - "@parcel/utils": "^1.11.0", - "chokidar": "^2.1.5" - } - }, - "@parcel/workers": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-1.11.0.tgz", - "integrity": "sha512-USSjRAAQYsZFlv43FUPdD+jEGML5/8oLF0rUzPQTtK4q9kvaXr49F5ZplyLz5lox78cLZ0TxN2bIDQ1xhOkulQ==", - "dev": true, - "requires": { - "@parcel/utils": "^1.11.0", - "physical-cpu-count": "^2.0.0" - } - }, - "@textlint/ast-node-types": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-4.2.1.tgz", - "integrity": "sha512-Pqg1LTJpF929Ovi/lCaPqlyz8yDwBFbQulC0jyQcbRAoTxYS4AZMc48Ug2yk0so5hISQXKrlAxyVBmBVl9EKGA==", - "dev": true - }, - "@textlint/markdown-to-ast": { - "version": "6.0.9", - "resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-6.0.9.tgz", - "integrity": "sha512-hfAWBvTeUGh5t5kTn2U3uP3qOSM1BSrxzl1jF3nn0ywfZXpRBZr5yRjXnl4DzIYawCtZOshmRi/tI3/x4TE1jQ==", - "dev": true, - "requires": { - "@textlint/ast-node-types": "^4.0.3", - "debug": "^2.1.3", - "remark-frontmatter": "^1.2.0", - "remark-parse": "^5.0.0", - "structured-source": "^3.0.2", - "traverse": "^0.6.6", - "unified": "^6.1.6" - } - }, - "@ts-morph/common": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.1.1.tgz", - "integrity": "sha512-8TLlC85CXgKNoTeqoXtrscPmKDbQCBfwZJ4hqli/QI4STa7sD2H6UqI9LSg8uBV5FYaD0QSdj/mtrCDrELvF+Q==", - "dev": true, - "requires": { - "@dsherret/to-absolute-glob": "^2.0.2", - "fs-extra": "^8.1.0", - "glob-parent": "^5.1.0", - "globby": "^10.0.1", - "is-negated-glob": "^1.0.0", - "multimatch": "^4.0.0", - "typescript": "~3.7.2" - }, - "dependencies": { - "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==", + "tsutils": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", + "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", "dev": true, "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "tslib": "^1.8.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 - }, "typescript": { - "version": "3.7.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.5.tgz", - "integrity": "sha512-/P5lkRXkWHNAbcJIiHPfRoKqyd7bsyCma1hZNUGfn20qm64T6ZBlrzprymeu918H+mB/0rIg2gGK/BXkhhYgBw==", + "version": "4.0.0-dev.20200512", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.0-dev.20200512.tgz", + "integrity": "sha512-ZsVvhdxpQaA6KpjlT8wNNtweORzNsMtwgCo8viKWQmOvaU+BlMsd3MjD2LONQjFSiETCaw4uq0nNdyfKrCjjIw==", "dev": true } - } - }, - "@types/babel__core": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.6.tgz", - "integrity": "sha512-tTnhWszAqvXnhW7m5jQU9PomXSiKXk2sFxpahXvI20SZKu9ylPi8WtIxueZ6ehDWikPT0jeFujMj3X4ZHuf3Tg==", - "dev": true, - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "@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" - } - }, - "@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" - } - }, - "@types/babel__traverse": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.9.tgz", - "integrity": "sha512-jEFQ8L1tuvPjOI8lnpaf73oCJe+aoxL6ygqSy6c8LcW98zaC+4mzWuQIRCEvKeCOu+lbqdXcg4Uqmm1S8AP1tw==", - "dev": true, - "requires": { - "@babel/types": "^7.3.0" - } - }, - "@types/benchmark": { - "version": "1.0.31", - "resolved": "https://registry.npmjs.org/@types/benchmark/-/benchmark-1.0.31.tgz", - "integrity": "sha1-LdNRTpM5bzYrpVUafJ/w2kBcHTg=", - "dev": true - }, - "@types/glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-VgNIkxK+j7Nz5P7jvUZlRvhuPSmsEfS03b0alKcq5V/STUKAa3Plemsn5mrQUO7am6OErJ4rhGEGJbACclrtRA==", - "dev": true, - "requires": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "@types/istanbul-lib-coverage": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", - "integrity": "sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg==", - "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": "*" - } - }, - "@types/istanbul-reports": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz", - "integrity": "sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "@types/jest": { - "version": "22.2.2", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-22.2.2.tgz", - "integrity": "sha1-r+Xay9ANZTJfUtoO0+duJZYprJ0=", - "dev": true - }, - "@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/node": { - "version": "12.6.8", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.6.8.tgz", - "integrity": "sha512-aX+gFgA5GHcDi89KG5keey2zf0WfZk/HAQotEamsK2kbey+8yGKcson0hbK8E+v0NArlCJQCqMP161YhV6ZXLg==", - "dev": true - }, - "@types/prettier": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-1.10.0.tgz", - "integrity": "sha1-Wr8ewKbpBP4kkMwgaPNqOOSmPEI=", - "dev": true - }, - "@types/q": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", - "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==", - "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": "13.0.8", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.8.tgz", - "integrity": "sha512-XAvHLwG7UQ+8M4caKIH0ZozIOYay5fQkAgyIXegXT9jPtdIGdhga+sUEdAr1CiG46aB+c64xQEYyEzlwWVTNzA==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "@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 - }, - "abab": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.3.tgz", - "integrity": "sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg==", - "dev": true - }, - "acorn": { - "version": "5.7.4", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", - "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", - "dev": true - }, - "acorn-globals": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", - "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", - "dev": true, - "requires": { - "acorn": "^6.0.1", - "acorn-walk": "^6.0.1" - }, - "dependencies": { - "acorn": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", - "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", - "dev": true - } - } - }, - "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 - }, - "ajv": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", - "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "alphanum-sort": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", - "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", - "dev": true - }, - "anchor-markdown-header": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/anchor-markdown-header/-/anchor-markdown-header-0.5.7.tgz", - "integrity": "sha1-BFBj125qH5zTJ6V6ASaqD97Dcac=", - "dev": true, - "requires": { - "emoji-regex": "~6.1.0" - } - }, - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true - }, - "ansi-red": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz", - "integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=", - "dev": true, - "requires": { - "ansi-wrap": "0.1.0" - } - }, - "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.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "ansi-to-html": { - "version": "0.6.14", - "resolved": "https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.6.14.tgz", - "integrity": "sha512-7ZslfB1+EnFSDO5Ju+ue5Y6It19DRnZXWv8jrGHgIlPna5Mh4jz7BV5jCbQneXNFurQcKoolaaAjHtgSBfOIuA==", - "dev": true, - "requires": { - "entities": "^1.1.2" - } - }, - "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 - }, - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "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": "sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "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 - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=", - "dev": true - }, - "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-differ": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", - "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", - "dev": true - }, - "array-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", - "dev": true - }, - "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 - }, - "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 - }, - "arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", - "dev": true - }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "dev": true, - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^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 - } - } - }, - "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": { - "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" - } - } - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - }, - "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 - }, - "astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "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==", - "dev": true - }, - "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 - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "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 - }, - "autolinker": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/autolinker/-/autolinker-0.28.1.tgz", - "integrity": "sha1-BlK0kYgYefB3XazgzcoyM5QqTkc=", - "dev": true, - "requires": { - "gulp-header": "^1.7.1" - } - }, - "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 - }, - "aws4": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", - "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==", - "dev": true - }, - "babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "babel-jest": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.9.0.tgz", - "integrity": "sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw==", - "dev": true, - "requires": { - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/babel__core": "^7.1.0", - "babel-plugin-istanbul": "^5.1.0", - "babel-preset-jest": "^24.9.0", - "chalk": "^2.4.2", - "slash": "^2.0.0" - }, - "dependencies": { - "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": { - "color-convert": "^1.9.0" - } - }, - "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": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true - }, - "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" - } - } - } - }, - "babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "dev": true, - "requires": { - "object.assign": "^4.1.0" - } - }, - "babel-plugin-istanbul": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz", - "integrity": "sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "find-up": "^3.0.0", - "istanbul-lib-instrument": "^3.3.0", - "test-exclude": "^5.2.3" - } - }, - "babel-plugin-jest-hoist": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz", - "integrity": "sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw==", - "dev": true, - "requires": { - "@types/babel__traverse": "^7.0.6" - } - }, - "babel-preset-jest": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz", - "integrity": "sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg==", - "dev": true, - "requires": { - "@babel/plugin-syntax-object-rest-spread": "^7.0.0", - "babel-plugin-jest-hoist": "^24.9.0" - } - }, - "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": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - }, - "dependencies": { - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true - } - } - }, - "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": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - }, - "dependencies": { - "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 - } - } - }, - "babylon-walk": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/babylon-walk/-/babylon-walk-1.0.2.tgz", - "integrity": "sha1-OxWl3btIKni0zpwByLoYFwLZ1s4=", - "dev": true, - "requires": { - "babel-runtime": "^6.11.6", - "babel-types": "^6.15.0", - "lodash.clone": "^4.5.0" - } - }, - "bail": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.3.tgz", - "integrity": "sha512-1X8CnjFVQ+a+KW36uBNMTU5s8+v5FzeqrP7hTG5aTb4aPreSbZJlhwPon9VKMuEVgV++JM+SQrALY3kr7eswdg==", - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha1-e95c7RRbbVUakNuH+DxVi060io8=", - "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" - }, - "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", - "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", - "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": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", - "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": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "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 - } - } - }, - "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 - }, - "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": { - "tweetnacl": "^0.14.3" - } - }, - "benchmark": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/benchmark/-/benchmark-2.1.4.tgz", - "integrity": "sha1-CfPeMckWQl1JjMLuVloOvzwqVik=", - "dev": true, - "requires": { - "lodash": "^4.17.4", - "platform": "^1.3.3" - } - }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true - }, - "bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, - "requires": { - "file-uri-to-path": "1.0.0" - } - }, - "bn.js": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.2.tgz", - "integrity": "sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA==", - "dev": true - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", - "dev": true - }, - "boundary": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/boundary/-/boundary-1.0.1.tgz", - "integrity": "sha1-TWfcJgLAzBbdm85+v4fpSCkPWBI=", - "dev": true - }, - "brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "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" - }, - "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" - } - }, - "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" - } - }, - "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" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } - } - }, - "brfs": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/brfs/-/brfs-1.6.1.tgz", - "integrity": "sha512-OfZpABRQQf+Xsmju8XE9bDjs+uU4vLREGolP7bDgcpsI17QREyZ4Bl+2KLxxx1kCgA0fAIhKQBaBYh+PEcCqYQ==", - "dev": true, - "requires": { - "quote-stream": "^1.0.1", - "resolve": "^1.1.5", - "static-module": "^2.2.0", - "through2": "^2.0.0" - } - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true - }, - "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-resolve": { - "version": "1.11.3", - "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", - "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", - "dev": true, - "requires": { - "resolve": "1.1.7" - }, - "dependencies": { - "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", - "dev": true - } - } - }, - "browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha1-uqVZ7hTO1zRSIputcyZGfGH6vWA=", - "dev": true - }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "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" - } - }, - "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": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "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": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "browserify-rsa": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "randombytes": "^2.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 - } - } - }, - "browserify-sign": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.0.tgz", - "integrity": "sha512-hEZC1KEeYuoHRqhGhTy6gWrpJA3ZDjFWv0DE61643ZnOXAKJb3u7yWcrU0mMc9SwAqK1n7myPGndkp0dFG7NFA==", - "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.2", - "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": { - "pako": "~1.0.5" - }, - "dependencies": { - "pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true - } - } - }, - "browserslist": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.12.0.tgz", - "integrity": "sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001043", - "electron-to-chromium": "^1.3.413", - "node-releases": "^1.1.53", - "pkg-up": "^2.0.0" - } - }, - "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": { - "fast-json-stable-stringify": "2.x" - } - }, - "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": { - "node-int64": "^0.4.0" - } - }, - "buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "dev": true, - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "buffer-equal": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", - "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=", - "dev": true - }, - "buffer-from": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz", - "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==", - "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=", - "dev": true - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha1-Cn9GQWgxyLZi7jb+TnxZ129marI=", - "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" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } - } - }, - "call-me-maybe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", - "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", - "dev": true - }, - "caller-callsite": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", - "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", - "dev": true, - "requires": { - "callsites": "^2.0.0" - }, - "dependencies": { - "callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", - "dev": true - } - } - }, - "caller-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", - "dev": true, - "requires": { - "caller-callsite": "^2.0.0" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, - "caniuse-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", - "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } - }, - "caniuse-lite": { - "version": "1.0.30001083", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001083.tgz", - "integrity": "sha512-CnYJ27awX4h7yj5glfK7r1TOI13LBytpLzEgfj0s4mY75/F8pnQcYjL+oVpmS38FB59+vU0gscQ9D8tc+lIXvA==", - "dev": true - }, - "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": { - "rsvp": "^4.8.4" - } - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true - }, - "character-entities": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.2.tgz", - "integrity": "sha512-sMoHX6/nBiy3KKfC78dnEalnpn0Az0oSNvqUWYTtYrhRI5iUIYsROU48G+E+kMFQzqXaJ8kHJZ85n7y6/PHgwQ==", - "dev": true - }, - "character-entities-legacy": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.2.tgz", - "integrity": "sha512-9NB2VbXtXYWdXzqrvAHykE/f0QJxzaKIpZ5QzNZrrgQ7Iyxr2vnfS8fCBNVW9nUEZE0lo57nxKRqnzY/dKrwlA==", - "dev": true - }, - "character-reference-invalid": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.2.tgz", - "integrity": "sha512-7I/xceXfKyUJmSAn/jw8ve/9DyOP7XxufNYLI9Px7CmsKgEUaZLUTax6nZxGQtaoiZCjpu6cHPj20xC/vqRReQ==", - "dev": true - }, - "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.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": { - "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" - } - } - } - }, - "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 - } - } - }, - "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": { - "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": "sha1-+TNprouafOAv1B+q0MqDAzGQxGM=", - "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": "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" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } - } - }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true, - "requires": { - "restore-cursor": "^2.0.0" - } - }, - "cli-spinners": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz", - "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==", - "dev": true - }, - "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" - }, - "dependencies": { - "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 - }, - "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" - } - } - } - }, - "clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", - "dev": true - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true - }, - "coa": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", - "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", - "dev": true, - "requires": { - "@types/q": "^1.5.1", - "chalk": "^2.4.1", - "q": "^1.1.2" - }, - "dependencies": { - "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": { - "color-convert": "^1.9.0" - } - }, - "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": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "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" - } - } - } - }, - "code-block-writer": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-10.1.0.tgz", - "integrity": "sha512-RG9hpXtWFeUWhuUav1YuP/vGcyncW+t90yJLk9fNZs1De2OuHTHKAKThVCokt29PYq5RoJ0QSZaIZ+rvPO23hA==", - "dev": true - }, - "coffee-script": { - "version": "1.12.7", - "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.12.7.tgz", - "integrity": "sha512-fLeEhqwymYat/MpTPUjSKHVYYl0ec2mOyALEMLmzr5i1isuG+6jfI2j2d5oBO3VIzgUXgBVIcOT9uH1TFxBckw==", - "dev": true - }, - "collapse-white-space": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.4.tgz", - "integrity": "sha512-YfQ1tAUZm561vpYD+5eyWN8+UsceQbSrqqlc/6zDY2gtAE+uZLSdkkovhnGpmCThsvKBFakq4EdY/FF93E8XIw==", - "dev": true - }, - "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": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/color/-/color-3.1.2.tgz", - "integrity": "sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==", - "dev": true, - "requires": { - "color-convert": "^1.9.1", - "color-string": "^1.5.2" - } - }, - "color-convert": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", - "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", - "dev": true, - "requires": { - "color-name": "^1.1.1" - } - }, - "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-string": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", - "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", - "dev": true, - "requires": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "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": { - "delayed-stream": "~1.0.0" - } - }, - "command-exists": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", - "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", - "dev": true - }, - "commander": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha1-9hmKqE5bg8RgVLlN3tv+1e6f8So=", - "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==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "concat-with-sourcemaps": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz", - "integrity": "sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==", - "dev": true, - "requires": { - "source-map": "^0.6.1" - } - }, - "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 - }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", - "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" - } - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true - }, - "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 - }, - "core-js-compat": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.5.tgz", - "integrity": "sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng==", - "dev": true, - "requires": { - "browserslist": "^4.8.5", - "semver": "7.0.0" - }, - "dependencies": { - "semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true - } - } - }, - "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=", - "dev": true - }, - "cosmiconfig": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", - "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", - "dev": true, - "requires": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^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==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.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 - } - } - }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://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": "https://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": "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" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, - "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" - } - }, - "css-color-names": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", - "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", - "dev": true - }, - "css-declaration-sorter": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", - "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", - "dev": true, - "requires": { - "postcss": "^7.0.1", - "timsort": "^0.3.0" - } - }, - "css-modules-loader-core": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/css-modules-loader-core/-/css-modules-loader-core-1.1.0.tgz", - "integrity": "sha1-WQhmgpShvs0mGuCkziGwtVHyHRY=", - "dev": true, - "requires": { - "icss-replace-symbols": "1.1.0", - "postcss": "6.0.1", - "postcss-modules-extract-imports": "1.1.0", - "postcss-modules-local-by-default": "1.2.0", - "postcss-modules-scope": "1.1.0", - "postcss-modules-values": "1.3.0" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.1.tgz", - "integrity": "sha1-AA29H47vIXqjaLmiEsX8QLKo8/I=", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "css-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", - "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", - "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" - } - }, - "css-select-base-adapter": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", - "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", - "dev": true - }, - "css-selector-tokenizer": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.2.tgz", - "integrity": "sha512-yj856NGuAymN6r8bn8/Jl46pR+OC3eEvAhfGYDUe7YPtTPAYrSSw4oAniZ9Y8T5B92hjhwTBLUen0/vKPxf6pw==", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "fastparse": "^1.1.2", - "regexpu-core": "^4.6.0" - } - }, - "css-tree": { - "version": "1.0.0-alpha.37", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", - "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", - "dev": true, - "requires": { - "mdn-data": "2.0.4", - "source-map": "^0.6.1" - } - }, - "css-what": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.3.0.tgz", - "integrity": "sha512-pv9JPyatiPaQ6pf4OvD/dbfm0o5LviWmwxNWzblYf/1u9QZd0ihV+PMwy5jdQWQ3349kZmKEx9WXuSka2dM4cg==", - "dev": true - }, - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true - }, - "cssnano": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", - "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", - "dev": true, - "requires": { - "cosmiconfig": "^5.0.0", - "cssnano-preset-default": "^4.0.7", - "is-resolvable": "^1.0.0", - "postcss": "^7.0.0" - } - }, - "cssnano-preset-default": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz", - "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==", - "dev": true, - "requires": { - "css-declaration-sorter": "^4.0.1", - "cssnano-util-raw-cache": "^4.0.1", - "postcss": "^7.0.0", - "postcss-calc": "^7.0.1", - "postcss-colormin": "^4.0.3", - "postcss-convert-values": "^4.0.1", - "postcss-discard-comments": "^4.0.2", - "postcss-discard-duplicates": "^4.0.2", - "postcss-discard-empty": "^4.0.1", - "postcss-discard-overridden": "^4.0.1", - "postcss-merge-longhand": "^4.0.11", - "postcss-merge-rules": "^4.0.3", - "postcss-minify-font-values": "^4.0.2", - "postcss-minify-gradients": "^4.0.2", - "postcss-minify-params": "^4.0.2", - "postcss-minify-selectors": "^4.0.2", - "postcss-normalize-charset": "^4.0.1", - "postcss-normalize-display-values": "^4.0.2", - "postcss-normalize-positions": "^4.0.2", - "postcss-normalize-repeat-style": "^4.0.2", - "postcss-normalize-string": "^4.0.2", - "postcss-normalize-timing-functions": "^4.0.2", - "postcss-normalize-unicode": "^4.0.1", - "postcss-normalize-url": "^4.0.1", - "postcss-normalize-whitespace": "^4.0.2", - "postcss-ordered-values": "^4.1.2", - "postcss-reduce-initial": "^4.0.3", - "postcss-reduce-transforms": "^4.0.2", - "postcss-svgo": "^4.0.2", - "postcss-unique-selectors": "^4.0.1" - } - }, - "cssnano-util-get-arguments": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", - "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", - "dev": true - }, - "cssnano-util-get-match": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", - "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", - "dev": true - }, - "cssnano-util-raw-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", - "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "cssnano-util-same-parent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", - "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", - "dev": true - }, - "csso": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.3.tgz", - "integrity": "sha512-NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ==", - "dev": true, - "requires": { - "css-tree": "1.0.0-alpha.39" - }, - "dependencies": { - "css-tree": { - "version": "1.0.0-alpha.39", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.39.tgz", - "integrity": "sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA==", - "dev": true, - "requires": { - "mdn-data": "2.0.6", - "source-map": "^0.6.1" - } - }, - "mdn-data": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.6.tgz", - "integrity": "sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA==", - "dev": true - } - } - }, - "cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - }, - "cssstyle": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz", - "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", - "dev": true, - "requires": { - "cssom": "0.3.x" - } - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "data-urls": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", - "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", - "dev": true, - "requires": { - "abab": "^2.0.0", - "whatwg-mimetype": "^2.2.0", - "whatwg-url": "^7.0.0" - }, - "dependencies": { - "whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "dev": true, - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - } - } - }, - "deasync": { - "version": "0.1.20", - "resolved": "https://registry.npmjs.org/deasync/-/deasync-0.1.20.tgz", - "integrity": "sha512-E1GI7jMI57hL30OX6Ht/hfQU8DO4AuB9m72WFm4c38GNbUD4Q03//XZaOIHZiY+H1xUaomcot5yk2q/qIZQkGQ==", - "dev": true, - "requires": { - "bindings": "^1.5.0", - "node-addon-api": "^1.7.1" - } - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", - "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=", - "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-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 - }, - "defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", - "dev": true, - "requires": { - "clone": "^1.0.2" - }, - "dependencies": { - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "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": "sha1-1Flono1lS6d+AqgX+HENcCyxbp0=", - "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": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", - "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": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", - "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": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "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 - } - } - }, - "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 - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true - }, - "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" - } - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", - "dev": true - }, - "detect-newline": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", - "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", - "dev": true - }, - "diacritics-map": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/diacritics-map/-/diacritics-map-0.1.0.tgz", - "integrity": "sha1-bfwP+dAQAKLt8oZTccrDFulJd68=", - "dev": true - }, - "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha1-gAwN0eCov7yVg1wgKtIg/jF+WhI=", - "dev": true - }, - "diff-sequences": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz", - "integrity": "sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==", - "dev": true - }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://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 - } - } - }, - "docs-ts": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/docs-ts/-/docs-ts-0.5.1.tgz", - "integrity": "sha512-zdBt4P6X7h577/Vku0YHAw/RR1+zpKklK+DOzed1HJltwAAciQG14qy18TzcMbVUFxrnT9OO4Y1K/lQLdX1i/Q==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "doctrine": "^3.0.0", - "fp-ts": "^2.6.2", - "fs-extra": "^7.0.1", - "glob": "^7.1.3", - "markdown-toc": "^1.2.0", - "rimraf": "^2.6.3", - "ts-morph": "^5.0.0", - "ts-node": "^8.0.2" - }, - "dependencies": { - "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": { - "color-convert": "^1.9.0" - } - }, - "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": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "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" - } - } - } - }, - "doctoc": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/doctoc/-/doctoc-1.4.0.tgz", - "integrity": "sha512-8IAq3KdMkxhXCUF+xdZxdJxwuz8N2j25sMgqiu4U4JWluN9tRKMlAalxGASszQjlZaBprdD2YfXpL3VPWUD4eg==", - "dev": true, - "requires": { - "@textlint/markdown-to-ast": "~6.0.9", - "anchor-markdown-header": "^0.5.5", - "htmlparser2": "~3.9.2", - "minimist": "~1.2.0", - "underscore": "~1.8.3", - "update-section": "^0.3.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 - } - } - }, - "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" - } - }, - "dom-serializer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", - "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", - "dev": true, - "requires": { - "domelementtype": "^1.3.0", - "entities": "^1.1.1" - } - }, - "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 - }, - "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", - "dev": true - }, - "domexception": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", - "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", - "dev": true, - "requires": { - "webidl-conversions": "^4.0.2" - } - }, - "domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", - "dev": true, - "requires": { - "domelementtype": "1" - } - }, - "domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "dev": true, - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "dot-prop": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz", - "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==", - "dev": true, - "requires": { - "is-obj": "^2.0.0" - } - }, - "dotenv": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-5.0.1.tgz", - "integrity": "sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow==", - "dev": true - }, - "dotenv-expand": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", - "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", - "dev": true - }, - "dtslint": { - "version": "github:gcanti/dtslint#de9181e0f1069b16ea15da87f74d88ed9bc221b7", - "from": "github:gcanti/dtslint", - "dev": true, - "requires": { - "fs-extra": "^6.0.1", - "parsimmon": "^1.12.0", - "strip-json-comments": "^2.0.1", - "tslint": "^5.12.0", - "typescript": "^4.0.0-dev.20200512" - }, - "dependencies": { - "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": { - "color-convert": "^1.9.0" - } - }, - "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": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "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" - } - }, - "tslint": { - "version": "5.20.1", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.20.1.tgz", - "integrity": "sha512-EcMxhzCFt8k+/UP5r8waCf/lzmeSyVlqxqMEDQE7rWYiQky8KpIBz1JAoYXfROHrPZ1XXd43q8yQnULOLiBRQg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "builtin-modules": "^1.1.1", - "chalk": "^2.3.0", - "commander": "^2.12.1", - "diff": "^4.0.1", - "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" - } - }, - "tsutils": { - "version": "2.29.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", - "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - } - }, - "typescript": { - "version": "4.0.0-dev.20200512", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.0-dev.20200512.tgz", - "integrity": "sha512-ZsVvhdxpQaA6KpjlT8wNNtweORzNsMtwgCo8viKWQmOvaU+BlMsd3MjD2LONQjFSiETCaw4uq0nNdyfKrCjjIw==", - "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" - } - }, - "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" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", - "dev": true - }, - "electron-to-chromium": { - "version": "1.3.473", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.473.tgz", - "integrity": "sha512-smevlzzMNz3vMz6OLeeCq5HRWEj2AcgccNPYnAx4Usx0IOciq9DU36RJcICcS09hXoY7t7deRfVYKD14IrGb9A==", - "dev": true - }, - "elliptic": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz", - "integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==", - "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 - } - } - }, - "emoji-regex": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-6.1.3.tgz", - "integrity": "sha1-7HmjlpsC0uzytyJUJ5v5m8eoOTI=", - "dev": true - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", - "dev": true - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } - }, - "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", - "dev": true - }, - "envinfo": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.5.1.tgz", - "integrity": "sha512-hQBkDf2iO4Nv0CNHpCuSBeaSrveU6nThVxFGTrq/eDlV716UQk09zChaJae4mZRsos1x4YLY2TaH3LHUae3ZmQ==", - "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.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", - "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", - "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" - } - }, - "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" - } - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", - "dev": true - }, - "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.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.1.tgz", - "integrity": "sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ==", - "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": { - "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 - } - } - }, - "esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", - "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.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", - "dev": true - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "dev": true - }, - "events": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.1.0.tgz", - "integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==", - "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" - } - }, - "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-range": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", - "dev": true, - "requires": { - "fill-range": "^2.1.0" - } - }, - "expect": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-24.9.0.tgz", - "integrity": "sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q==", - "dev": true, - "requires": { - "@jest/types": "^24.9.0", - "ansi-styles": "^3.2.0", - "jest-get-type": "^24.9.0", - "jest-matcher-utils": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-regex-util": "^24.9.0" - } - }, - "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": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=", - "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" - } - }, - "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 - } - } - }, - "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.2.4", - "resolved": "https://registry.npmjs.org/falafel/-/falafel-2.2.4.tgz", - "integrity": "sha512-0HXjo8XASWRmsS0X1EkhwEMZaD3Qvp7FfURwjLKjG1ghfRm/MGZl2r4cWUTv41KdNghTw4OUMmVtdGQp3+H+uQ==", - "dev": true, - "requires": { - "acorn": "^7.1.1", - "foreach": "^2.0.5", - "isarray": "^2.0.1", - "object-keys": "^1.0.6" - }, - "dependencies": { - "acorn": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.3.1.tgz", - "integrity": "sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA==", - "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 - } - } - }, - "fast-check": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/fast-check/-/fast-check-1.23.0.tgz", - "integrity": "sha512-MRxcYG4YHTzP8wbjPsl6lZeUpY9sBuYsp6/w8lWmSvgS0wBrhMSErVnHmt5zi9sDWROCd+H7bk2jpr6wzToM6w==", - "dev": true, - "requires": { - "pure-rand": "^2.0.0", - "tslib": "^1.10.0" - }, - "dependencies": { - "tslib": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", - "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==", - "dev": true - } - } - }, - "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", - "dev": true - }, - "fast-glob": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.2.tgz", - "integrity": "sha512-UDV82o4uQyljznxwMxyVRJgZZt3O5wENYojjzbaGEGZgeOxkLFf+V4cnUD+krzb2F72E18RhamkMZ7AdeggF7A==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.0", - "merge2": "^1.3.0", - "micromatch": "^4.0.2", - "picomatch": "^2.2.1" - }, - "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" - } - }, - "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.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", - "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 - }, - "fastparse": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", - "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", - "dev": true - }, - "fastq": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.8.0.tgz", - "integrity": "sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "fault": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.2.tgz", - "integrity": "sha512-o2eo/X2syzzERAtN5LcGbiVQ0WwZSlN3qLtadwAz3X8Bu+XWD16dja/KMsjZLiQr+BLGPDnHGkc4yUJf1Xpkpw==", - "dev": true, - "requires": { - "format": "^0.2.2" - } - }, - "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" - } - }, - "file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true - }, - "filesize": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", - "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==", - "dev": true - }, - "fill-range": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", - "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", - "dev": true, - "requires": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^3.0.0", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" - } - }, - "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" - } - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "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" - } - }, - "format": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", - "integrity": "sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs=", - "dev": true - }, - "fp-ts": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-2.6.2.tgz", - "integrity": "sha512-RUm0iNcD7eMFZo6W1K10kqi0DyYX06lbbjyNgKwEWg1kPZw91ZXlkEx/9cII1x/jY4fHzh14+Hquk5sJnXBzQA==", - "dev": true - }, - "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" - } - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "dev": true - }, - "fs-extra": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz", - "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "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.12", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.12.tgz", - "integrity": "sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q==", - "dev": true, - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1", - "node-pre-gyp": "*" - }, - "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, - "dev": true, - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.1.4", - "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": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "debug": { - "version": "3.2.6", - "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.7", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.6.0" - } - }, - "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" - } - }, - "glob": { - "version": "7.1.6", - "bundled": true, - "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" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "iconv-lite": { - "version": "0.4.24", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore-walk": { - "version": "3.0.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "bundled": true, - "dev": true, - "optional": true - }, - "ini": { - "version": "1.3.5", - "bundled": true, - "dev": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.5", - "bundled": true, - "dev": true, - "optional": true - }, - "minipass": { - "version": "2.9.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.3.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.9.0" - } - }, - "mkdirp": { - "version": "0.5.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "ms": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "needle": { - "version": "2.3.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "debug": "^3.2.6", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.14.0", - "bundled": true, - "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.4.2" - } - }, - "nopt": { - "version": "4.0.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npm-normalize-package-bin": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "npm-packlist": { - "version": "1.4.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "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", - "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, - "dev": true, - "optional": true, - "requires": { - "wrappy": "1" - } - }, - "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, - "dev": true, - "optional": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "rc": { - "version": "1.2.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - } - }, - "readable-stream": { - "version": "2.3.7", - "bundled": true, - "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" - } - }, - "rimraf": { - "version": "2.7.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "bundled": true, - "dev": true, - "optional": true - }, - "semver": { - "version": "5.7.1", - "bundled": true, - "dev": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "tar": { - "version": "4.4.13", - "bundled": true, - "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" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "wide-align": { - "version": "1.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "yallist": { - "version": "3.1.1", - "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 - }, - "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-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 - }, - "get-port": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", - "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=", - "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" - } - }, - "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.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" - } - }, - "glob-to-regexp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", - "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", - "dev": true - }, - "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.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", - "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", - "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" - } - }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true - }, - "grapheme-breaker": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/grapheme-breaker/-/grapheme-breaker-0.3.2.tgz", - "integrity": "sha1-W55reMODJFLSuiuxy4MPlidkEKw=", - "dev": true, - "requires": { - "brfs": "^1.2.0", - "unicode-trie": "^0.3.1" - } - }, - "gray-matter": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-2.1.1.tgz", - "integrity": "sha1-MELZrewqHe1qdwep7SOA+KF6Qw4=", - "dev": true, - "requires": { - "ansi-red": "^0.1.1", - "coffee-script": "^1.12.4", - "extend-shallow": "^2.0.1", - "js-yaml": "^3.8.1", - "toml": "^2.3.2" - }, - "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" - } - } - } - }, - "growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha1-8nNdwig2dPpnR4sQGBBZNVw2nl4=", - "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 - }, - "gulp-header": { - "version": "1.8.12", - "resolved": "https://registry.npmjs.org/gulp-header/-/gulp-header-1.8.12.tgz", - "integrity": "sha512-lh9HLdb53sC7XIZOYzTXM4lFuXElv3EVkSDhsd7DoJBj7hm+Ni7D3qYbb+Rr8DuM8nRanBvkVO9d7askreXGnQ==", - "dev": true, - "requires": { - "concat-with-sourcemaps": "*", - "lodash.template": "^4.4.0", - "through2": "^2.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.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", - "dev": true, - "requires": { - "ajv": "^6.5.5", - "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-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "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 - }, - "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" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } - } - }, - "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": { - "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" - } - } - } - }, - "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.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.1.1", - "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", - "dev": true - }, - "hex-color-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", - "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", - "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" - } - }, - "hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", - "dev": true - }, - "hsl-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", - "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", - "dev": true - }, - "hsla-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", - "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", - "dev": true - }, - "html-comment-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", - "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==", - "dev": true - }, - "html-encoding-sniffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", - "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", - "dev": true, - "requires": { - "whatwg-encoding": "^1.0.1" - } - }, - "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 - }, - "html-tags": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-1.2.0.tgz", - "integrity": "sha1-x43mW1Zjqll5id0rerSSANfk25g=", - "dev": true - }, - "htmlnano": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/htmlnano/-/htmlnano-0.2.5.tgz", - "integrity": "sha512-X1iPSwXG/iF9bVs+/obt2n6F64uH0ETkA8zp7qFDmLW9/+A6ueHGeb/+qD67T21qUY22owZPMdawljN50ajkqA==", - "dev": true, - "requires": { - "cssnano": "^4.1.10", - "normalize-html-whitespace": "^1.0.0", - "posthtml": "^0.12.0", - "posthtml-render": "^1.1.5", - "purgecss": "^1.4.0", - "svgo": "^1.3.2", - "terser": "^4.3.9", - "uncss": "^0.17.2" - }, - "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 - }, - "posthtml": { - "version": "0.12.3", - "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.12.3.tgz", - "integrity": "sha512-Fbpi95+JJyR0tqU7pUy1zTSQFjAsluuwB9pJ1h0jtnGk7n/O2TBtP5nDl9rV0JVACjQ1Lm5wSp4ppChr8u3MhA==", - "dev": true, - "requires": { - "posthtml-parser": "^0.4.2", - "posthtml-render": "^1.2.2" - } - }, - "terser": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.7.0.tgz", - "integrity": "sha512-Lfb0RiZcjRDXCC3OSHJpEkxJ9Qeqs6mp2v4jf2MHfy8vGERmVDuvjXdd/EnP5Deme5F2yBRBymKmKHCBg2echw==", - "dev": true, - "requires": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - } - } - } - }, - "htmlparser2": { - "version": "3.9.2", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", - "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", - "dev": true, - "requires": { - "domelementtype": "^1.3.0", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^2.0.2" - } - }, - "http-errors": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", - "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - }, - "dependencies": { - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - } - } - }, - "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 - }, - "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" - } - }, - "icss-replace-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", - "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", - "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.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true - }, - "import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", - "dev": true, - "requires": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" - } - }, - "import-local": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", - "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", - "dev": true, - "requires": { - "pkg-dir": "^3.0.0", - "resolve-cwd": "^2.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", - "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 - }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, - "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-absolute-url": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", - "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", - "dev": true - }, - "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" - } - }, - "is-alphabetical": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.2.tgz", - "integrity": "sha512-V0xN4BYezDHcBSKb1QHUFMlR4as/XEuCZBzMJUU4n7+Cbt33SmUnSol+pnXFvLxSHNq2CemUXNdaXV6Flg7+xg==", - "dev": true - }, - "is-alphanumerical": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.2.tgz", - "integrity": "sha512-pyfU/0kHdISIgslFfZN9nfY1Gk3MquQgUm1mJTjdkEPpkAKNWuBTSqFwewOpR7N351VkErCiyV71zX7mlQQqsg==", - "dev": true, - "requires": { - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0" - } - }, - "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": "sha1-76ouqdqg16suoTqXsritUf776L4=", - "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-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-color-stop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", - "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", - "dev": true, - "requires": { - "css-color-names": "^0.0.4", - "hex-color-regex": "^1.1.0", - "hsl-regex": "^1.0.0", - "hsla-regex": "^1.0.0", - "rgb-regex": "^1.0.1", - "rgba-regex": "^1.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" - } - }, - "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-decimal": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.2.tgz", - "integrity": "sha512-TRzl7mOCchnhchN+f3ICUCzYvL9ul7R+TYOsZ8xia++knyZAJfv/uA1FvQXsAnYIl1T3B2X5E/J7Wb1QXiIBXg==", - "dev": true - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=", - "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": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0=", - "dev": true - } - } - }, - "is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", - "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": "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-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-hexadecimal": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.2.tgz", - "integrity": "sha512-but/G3sapV3MNyqiDBLrOi4x8uCIw0RY3o/Vb5GT0sMFHrVV7731wFSVy41T5FO1og7G0gXLJh0MkgPRouko/A==", - "dev": true - }, - "is-html": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-html/-/is-html-1.1.0.tgz", - "integrity": "sha1-4E8cGNOUhRETlvmgJz6rUa8hhGQ=", - "dev": true, - "requires": { - "html-tags": "^1.0.0" - } - }, - "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": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "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": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=", - "dev": true, - "requires": { - "isobject": "^3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "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-resolvable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", - "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", - "dev": true - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, - "is-svg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", - "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", - "dev": true, - "requires": { - "html-comment-regex": "^1.1.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" - } - }, - "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-url": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", - "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", - "dev": true - }, - "is-whitespace-character": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.2.tgz", - "integrity": "sha512-SzM+T5GKUCtLhlHFKt2SDAX2RFzfS6joT91F2/WSi9LxgFdsnhfPK/UIA+JhRR2xuyLdrCys2PiFDrtn1fU5hQ==", - "dev": true - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha1-0YUOuXkezRjmGCzhKjDzlmNLsZ0=", - "dev": true - }, - "is-word-character": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.2.tgz", - "integrity": "sha512-T3FlsX8rCHAH8e7RE7PfOPZVFQlcV3XRF9eOOBQ1uf70OxO7CjjSOjeImMPCADBdYWcStAbVbYvJ1m2D3tb+EA==", - "dev": true - }, - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "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": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - }, - "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": "2.0.5", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", - "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", - "dev": true - }, - "istanbul-lib-instrument": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", - "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", - "dev": true, - "requires": { - "@babel/generator": "^7.4.0", - "@babel/parser": "^7.4.3", - "@babel/template": "^7.4.0", - "@babel/traverse": "^7.4.3", - "@babel/types": "^7.4.0", - "istanbul-lib-coverage": "^2.0.5", - "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 - } - } - }, - "istanbul-lib-report": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", - "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", - "dev": true, - "requires": { - "istanbul-lib-coverage": "^2.0.5", - "make-dir": "^2.1.0", - "supports-color": "^6.1.0" - }, - "dependencies": { - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "istanbul-lib-source-maps": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", - "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^2.0.5", - "make-dir": "^2.1.0", - "rimraf": "^2.6.3", - "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 - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "istanbul-reports": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.7.tgz", - "integrity": "sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==", - "dev": true, - "requires": { - "html-escaper": "^2.0.0" - } - }, - "jest": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-24.8.0.tgz", - "integrity": "sha512-o0HM90RKFRNWmAWvlyV8i5jGZ97pFwkeVoGvPW1EtLTgJc2+jcuqcbbqcSZLE/3f2S5pt0y2ZBETuhpWNl1Reg==", - "dev": true, - "requires": { - "import-local": "^2.0.0", - "jest-cli": "^24.8.0" - }, - "dependencies": { - "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 - }, - "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": { - "color-convert": "^1.9.0" - } - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "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 - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "jest-cli": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.9.0.tgz", - "integrity": "sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg==", - "dev": true, - "requires": { - "@jest/core": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "import-local": "^2.0.0", - "is-ci": "^2.0.0", - "jest-config": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "prompts": "^2.0.1", - "realpath-native": "^1.1.0", - "yargs": "^13.3.0" - }, - "dependencies": { - "@jest/core": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.9.0.tgz", - "integrity": "sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A==", - "dev": true, - "requires": { - "@jest/console": "^24.7.1", - "@jest/reporters": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "graceful-fs": "^4.1.15", - "jest-changed-files": "^24.9.0", - "jest-config": "^24.9.0", - "jest-haste-map": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-resolve": "^24.9.0", - "jest-resolve-dependencies": "^24.9.0", - "jest-runner": "^24.9.0", - "jest-runtime": "^24.9.0", - "jest-snapshot": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "jest-watcher": "^24.9.0", - "micromatch": "^3.1.10", - "p-each-series": "^1.0.0", - "realpath-native": "^1.1.0", - "rimraf": "^2.5.4", - "slash": "^2.0.0", - "strip-ansi": "^5.0.0" - } - }, - "@jest/test-result": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz", - "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==", - "dev": true, - "requires": { - "@jest/console": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/istanbul-lib-coverage": "^2.0.0" - } - }, - "@jest/types": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", - "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - } - }, - "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": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", - "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" - } - }, - "jest-config": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.9.0.tgz", - "integrity": "sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ==", - "dev": true, - "requires": { - "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^24.9.0", - "@jest/types": "^24.9.0", - "babel-jest": "^24.9.0", - "chalk": "^2.0.1", - "glob": "^7.1.1", - "jest-environment-jsdom": "^24.9.0", - "jest-environment-node": "^24.9.0", - "jest-get-type": "^24.9.0", - "jest-jasmine2": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-resolve": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "micromatch": "^3.1.10", - "pretty-format": "^24.9.0", - "realpath-native": "^1.1.0" - } - }, - "jest-util": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz", - "integrity": "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==", - "dev": true, - "requires": { - "@jest/console": "^24.9.0", - "@jest/fake-timers": "^24.9.0", - "@jest/source-map": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "callsites": "^3.0.0", - "chalk": "^2.0.1", - "graceful-fs": "^4.1.15", - "is-ci": "^2.0.0", - "mkdirp": "^0.5.1", - "slash": "^2.0.0", - "source-map": "^0.6.0" - } - }, - "jest-validate": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.9.0.tgz", - "integrity": "sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==", - "dev": true, - "requires": { - "@jest/types": "^24.9.0", - "camelcase": "^5.3.1", - "chalk": "^2.0.1", - "jest-get-type": "^24.9.0", - "leven": "^3.1.0", - "pretty-format": "^24.9.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" - } - }, - "realpath-native": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz", - "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==", - "dev": true, - "requires": { - "util.promisify": "^1.0.0" - } - }, - "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "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.2" - } - } - } - }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + } + }, + "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" + } + }, + "emoji-regex": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-6.1.3.tgz", + "integrity": "sha1-7HmjlpsC0uzytyJUJ5v5m8eoOTI=", + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "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.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", + "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", + "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" + } + }, + "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" + } + }, + "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.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.1.tgz", + "integrity": "sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ==", + "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": { + "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 - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + } + } + }, + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "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.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "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" + } + }, + "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": { - "ansi-regex": "^4.1.0" + "is-descriptor": "^0.1.0" } }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "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": { - "has-flag": "^3.0.0" + "is-extendable": "^0.1.0" } } } }, - "jest-changed-files": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.9.0.tgz", - "integrity": "sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg==", + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "dev": true, "requires": { - "@jest/types": "^24.9.0", - "execa": "^1.0.0", - "throat": "^4.0.0" + "fill-range": "^2.1.0" } }, - "jest-config": { + "expect": { "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.9.0.tgz", - "integrity": "sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ==", + "resolved": "https://registry.npmjs.org/expect/-/expect-24.9.0.tgz", + "integrity": "sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q==", "dev": true, "requires": { - "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^24.9.0", "@jest/types": "^24.9.0", - "babel-jest": "^24.9.0", - "chalk": "^2.0.1", - "glob": "^7.1.1", - "jest-environment-jsdom": "^24.9.0", - "jest-environment-node": "^24.9.0", + "ansi-styles": "^3.2.0", "jest-get-type": "^24.9.0", - "jest-jasmine2": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-resolve": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "micromatch": "^3.1.10", - "pretty-format": "^24.9.0", - "realpath-native": "^1.1.0" + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-regex-util": "^24.9.0" + } + }, + "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": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=", + "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": { - "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==", + "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": { - "color-convert": "^1.9.0" + "is-descriptor": "^1.0.0" } }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "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": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "is-extendable": "^0.1.0" } }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "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" + } }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "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": { - "has-flag": "^3.0.0" + "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" + } + }, + "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 } } }, - "jest-diff": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz", - "integrity": "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==", + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-check": { + "version": "1.25.1", + "resolved": "https://registry.npmjs.org/fast-check/-/fast-check-1.25.1.tgz", + "integrity": "sha512-4lyIDY2YKpSiPXpceCQBTfDxLh/7/C3OHgvzToea3y1YAlv38Wz9mfIsu+MD4go0NX3ow/g98kEmlW00+CoH3w==", "dev": true, "requires": { - "chalk": "^2.0.1", - "diff-sequences": "^24.9.0", - "jest-get-type": "^24.9.0", - "pretty-format": "^24.9.0" + "pure-rand": "^2.0.0", + "tslib": "^2.0.0" }, "dependencies": { - "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==", + "tslib": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.0.tgz", + "integrity": "sha512-lTqkx847PI7xEDYJntxZH89L2/aXInsyF2luSafe/+0fHOMjlBNXdH6th7f70qxLDhul7KZK0zC8V5ZIyHl0/g==", + "dev": true + } + } + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "dev": true + }, + "fast-glob": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.2.tgz", + "integrity": "sha512-UDV82o4uQyljznxwMxyVRJgZZt3O5wENYojjzbaGEGZgeOxkLFf+V4cnUD+krzb2F72E18RhamkMZ7AdeggF7A==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2", + "picomatch": "^2.2.1" + }, + "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": { - "color-convert": "^1.9.0" + "fill-range": "^7.0.1" } }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "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": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "to-regex-range": "^5.0.1" } }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "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 }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "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": { - "has-flag": "^3.0.0" + "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" } } } }, - "jest-docblock": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-24.9.0.tgz", - "integrity": "sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA==", + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "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 + }, + "fastq": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.8.0.tgz", + "integrity": "sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "fault": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.2.tgz", + "integrity": "sha512-o2eo/X2syzzERAtN5LcGbiVQ0WwZSlN3qLtadwAz3X8Bu+XWD16dja/KMsjZLiQr+BLGPDnHGkc4yUJf1Xpkpw==", + "dev": true, + "requires": { + "format": "^0.2.2" + } + }, + "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" + } + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, + "fill-range": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", + "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", + "dev": true, + "requires": { + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^3.0.0", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" + } + }, + "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" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "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" + } + }, + "format": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", + "integrity": "sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs=", + "dev": true + }, + "fp-ts": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-2.6.2.tgz", + "integrity": "sha512-RUm0iNcD7eMFZo6W1K10kqi0DyYX06lbbjyNgKwEWg1kPZw91ZXlkEx/9cII1x/jY4fHzh14+Hquk5sJnXBzQA==", + "dev": true + }, + "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-extra": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz", + "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==", "dev": true, "requires": { - "detect-newline": "^2.1.0" + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" } }, - "jest-each": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.9.0.tgz", - "integrity": "sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog==", + "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.12", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.12.tgz", + "integrity": "sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q==", "dev": true, + "optional": true, "requires": { - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "jest-get-type": "^24.9.0", - "jest-util": "^24.9.0", - "pretty-format": "^24.9.0" + "bindings": "^1.5.0", + "nan": "^2.12.1", + "node-pre-gyp": "*" }, "dependencies": { - "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==", + "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, "dev": true, + "optional": true, "requires": { - "color-convert": "^1.9.0" + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" } }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, "dev": true, + "optional": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.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 + "chownr": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "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": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "3.2.6", + "bundled": true, "dev": true, + "optional": true, "requires": { - "has-flag": "^3.0.0" + "ms": "^2.1.1" } - } - } - }, - "jest-environment-jsdom": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz", - "integrity": "sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA==", - "dev": true, - "requires": { - "@jest/environment": "^24.9.0", - "@jest/fake-timers": "^24.9.0", - "@jest/types": "^24.9.0", - "jest-mock": "^24.9.0", - "jest-util": "^24.9.0", - "jsdom": "^11.5.1" - } - }, - "jest-environment-node": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.9.0.tgz", - "integrity": "sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA==", - "dev": true, - "requires": { - "@jest/environment": "^24.9.0", - "@jest/fake-timers": "^24.9.0", - "@jest/types": "^24.9.0", - "jest-mock": "^24.9.0", - "jest-util": "^24.9.0" - } - }, - "jest-get-type": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", - "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==", - "dev": true - }, - "jest-haste-map": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz", - "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==", - "dev": true, - "requires": { - "@jest/types": "^24.9.0", - "anymatch": "^2.0.0", - "fb-watchman": "^2.0.0", - "fsevents": "^1.2.7", - "graceful-fs": "^4.1.15", - "invariant": "^2.2.4", - "jest-serializer": "^24.9.0", - "jest-util": "^24.9.0", - "jest-worker": "^24.9.0", - "micromatch": "^3.1.10", - "sane": "^4.0.3", - "walker": "^1.0.7" - }, - "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 - } - } - }, - "jest-jasmine2": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz", - "integrity": "sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw==", - "dev": true, - "requires": { - "@babel/traverse": "^7.1.0", - "@jest/environment": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "co": "^4.6.0", - "expect": "^24.9.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^24.9.0", - "jest-matcher-utils": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-runtime": "^24.9.0", - "jest-snapshot": "^24.9.0", - "jest-util": "^24.9.0", - "pretty-format": "^24.9.0", - "throat": "^4.0.0" - }, - "dependencies": { - "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==", + }, + "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.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, "dev": true, + "optional": true, "requires": { - "color-convert": "^1.9.0" + "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" } }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "glob": { + "version": "7.1.6", + "bundled": true, "dev": true, + "optional": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "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": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "iconv-lite": { + "version": "0.4.24", + "bundled": true, "dev": true, + "optional": true, "requires": { - "has-flag": "^3.0.0" + "safer-buffer": ">= 2.1.2 < 3" } - } - } - }, - "jest-leak-detector": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz", - "integrity": "sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA==", - "dev": true, - "requires": { - "jest-get-type": "^24.9.0", - "pretty-format": "^24.9.0" - } - }, - "jest-matcher-utils": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz", - "integrity": "sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA==", - "dev": true, - "requires": { - "chalk": "^2.0.1", - "jest-diff": "^24.9.0", - "jest-get-type": "^24.9.0", - "pretty-format": "^24.9.0" - }, - "dependencies": { - "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==", + }, + "ignore-walk": { + "version": "3.0.3", + "bundled": true, "dev": true, + "optional": true, "requires": { - "color-convert": "^1.9.0" + "minimatch": "^3.0.4" } }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "inflight": { + "version": "1.0.6", + "bundled": true, "dev": true, + "optional": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "once": "^1.3.0", + "wrappy": "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 + "inherits": { + "version": "2.0.4", + "bundled": true, + "dev": true, + "optional": true }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, "dev": true, + "optional": true, "requires": { - "has-flag": "^3.0.0" + "number-is-nan": "^1.0.0" } - } - } - }, - "jest-message-util": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz", - "integrity": "sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/stack-utils": "^1.0.1", - "chalk": "^2.0.1", - "micromatch": "^3.1.10", - "slash": "^2.0.0", - "stack-utils": "^1.0.1" - }, - "dependencies": { - "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==", + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, "dev": true, + "optional": true, "requires": { - "color-convert": "^1.9.0" + "brace-expansion": "^1.1.7" } }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "minimist": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true + }, + "minipass": { + "version": "2.9.0", + "bundled": true, "dev": true, + "optional": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" } }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true + "minizlib": { + "version": "1.3.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.9.0" + } }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true + "mkdirp": { + "version": "0.5.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimist": "^1.2.5" + } }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "ms": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.3.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.14.0", + "bundled": true, + "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.4.2" + } + }, + "nopt": { + "version": "4.0.3", + "bundled": true, "dev": true, + "optional": true, "requires": { - "has-flag": "^3.0.0" + "abbrev": "1", + "osenv": "^0.1.4" } - } - } - }, - "jest-mock": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz", - "integrity": "sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==", - "dev": true, - "requires": { - "@jest/types": "^24.9.0" - } - }, - "jest-pnp-resolver": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz", - "integrity": "sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ==", - "dev": true - }, - "jest-regex-util": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.9.0.tgz", - "integrity": "sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA==", - "dev": true - }, - "jest-resolve": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.9.0.tgz", - "integrity": "sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ==", - "dev": true, - "requires": { - "@jest/types": "^24.9.0", - "browser-resolve": "^1.11.3", - "chalk": "^2.0.1", - "jest-pnp-resolver": "^1.2.1", - "realpath-native": "^1.1.0" - }, - "dependencies": { - "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==", + }, + "npm-bundled": { + "version": "1.1.1", + "bundled": true, "dev": true, + "optional": true, "requires": { - "color-convert": "^1.9.0" + "npm-normalize-package-bin": "^1.0.1" } }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "npm-normalize-package-bin": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.8", + "bundled": true, "dev": true, + "optional": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.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 - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "npmlog": { + "version": "4.1.2", + "bundled": true, "dev": true, + "optional": true, "requires": { - "has-flag": "^3.0.0" + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" } - } - } - }, - "jest-resolve-dependencies": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz", - "integrity": "sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g==", - "dev": true, - "requires": { - "@jest/types": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-snapshot": "^24.9.0" - } - }, - "jest-runner": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.9.0.tgz", - "integrity": "sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg==", - "dev": true, - "requires": { - "@jest/console": "^24.7.1", - "@jest/environment": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "chalk": "^2.4.2", - "exit": "^0.1.2", - "graceful-fs": "^4.1.15", - "jest-config": "^24.9.0", - "jest-docblock": "^24.3.0", - "jest-haste-map": "^24.9.0", - "jest-jasmine2": "^24.9.0", - "jest-leak-detector": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-resolve": "^24.9.0", - "jest-runtime": "^24.9.0", - "jest-util": "^24.9.0", - "jest-worker": "^24.6.0", - "source-map-support": "^0.5.6", - "throat": "^4.0.0" - }, - "dependencies": { - "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==", + }, + "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, "dev": true, + "optional": true, "requires": { - "color-convert": "^1.9.0" + "wrappy": "1" } }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "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, "dev": true, + "optional": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" } }, - "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 + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true + "process-nextick-args": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "rc": { + "version": "1.2.8", + "bundled": true, "dev": true, + "optional": true, "requires": { - "has-flag": "^3.0.0" + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" } - } - } - }, - "jest-runtime": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.9.0.tgz", - "integrity": "sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw==", - "dev": true, - "requires": { - "@jest/console": "^24.7.1", - "@jest/environment": "^24.9.0", - "@jest/source-map": "^24.3.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/yargs": "^13.0.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.1.15", - "jest-config": "^24.9.0", - "jest-haste-map": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-mock": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-resolve": "^24.9.0", - "jest-snapshot": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "realpath-native": "^1.1.0", - "slash": "^2.0.0", - "strip-bom": "^3.0.0", - "yargs": "^13.3.0" - }, - "dependencies": { - "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==", + }, + "readable-stream": { + "version": "2.3.7", + "bundled": true, "dev": true, + "optional": true, "requires": { - "color-convert": "^1.9.0" + "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" } }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "rimraf": { + "version": "2.7.1", + "bundled": true, "dev": true, + "optional": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "glob": "^7.1.3" } }, - "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 + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true, + "optional": true }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true }, - "slash": { + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.1", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true + "bundled": true, + "dev": true, + "optional": true }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, "dev": true, + "optional": true, "requires": { - "has-flag": "^3.0.0" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } - } - } - }, - "jest-serializer": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz", - "integrity": "sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==", - "dev": true - }, - "jest-snapshot": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.9.0.tgz", - "integrity": "sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew==", - "dev": true, - "requires": { - "@babel/types": "^7.0.0", - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "expect": "^24.9.0", - "jest-diff": "^24.9.0", - "jest-get-type": "^24.9.0", - "jest-matcher-utils": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-resolve": "^24.9.0", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "pretty-format": "^24.9.0", - "semver": "^6.2.0" - }, - "dependencies": { - "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==", + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, "dev": true, + "optional": true, "requires": { - "color-convert": "^1.9.0" + "safe-buffer": "~5.1.0" } }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "strip-ansi": { + "version": "3.0.1", + "bundled": true, "dev": true, + "optional": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-regex": "^2.0.0" } }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true + "tar": { + "version": "4.4.13", + "bundled": true, + "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" + } }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, "dev": true, + "optional": true, "requires": { - "has-flag": "^3.0.0" + "string-width": "^1.0.2 || 2" } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "yallist": { + "version": "3.1.1", + "bundled": true, + "dev": true, + "optional": true } } }, - "jest-util": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz", - "integrity": "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==", + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "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-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 + }, + "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" + } + }, + "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": "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" + } + }, + "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.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", + "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", + "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" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "gray-matter": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-2.1.1.tgz", + "integrity": "sha1-MELZrewqHe1qdwep7SOA+KF6Qw4=", "dev": true, "requires": { - "@jest/console": "^24.9.0", - "@jest/fake-timers": "^24.9.0", - "@jest/source-map": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "callsites": "^3.0.0", - "chalk": "^2.0.1", - "graceful-fs": "^4.1.15", - "is-ci": "^2.0.0", - "mkdirp": "^0.5.1", - "slash": "^2.0.0", - "source-map": "^0.6.0" + "ansi-red": "^0.1.1", + "coffee-script": "^1.12.4", + "extend-shallow": "^2.0.1", + "js-yaml": "^3.8.1", + "toml": "^2.3.2" }, "dependencies": { - "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": { - "color-convert": "^1.9.0" - } - }, - "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": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "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 - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "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": { - "has-flag": "^3.0.0" + "is-extendable": "^0.1.0" } } } }, - "jest-validate": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.9.0.tgz", - "integrity": "sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==", + "growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha1-8nNdwig2dPpnR4sQGBBZNVw2nl4=", + "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 + }, + "gulp-header": { + "version": "1.8.12", + "resolved": "https://registry.npmjs.org/gulp-header/-/gulp-header-1.8.12.tgz", + "integrity": "sha512-lh9HLdb53sC7XIZOYzTXM4lFuXElv3EVkSDhsd7DoJBj7hm+Ni7D3qYbb+Rr8DuM8nRanBvkVO9d7askreXGnQ==", "dev": true, "requires": { - "@jest/types": "^24.9.0", - "camelcase": "^5.3.1", - "chalk": "^2.0.1", - "jest-get-type": "^24.9.0", - "leven": "^3.1.0", - "pretty-format": "^24.9.0" - }, - "dependencies": { - "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": { - "color-convert": "^1.9.0" - } - }, - "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": "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": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "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" - } - } + "concat-with-sourcemaps": "*", + "lodash.template": "^4.4.0", + "through2": "^2.0.0" } }, - "jest-watcher": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.9.0.tgz", - "integrity": "sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw==", + "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.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", "dev": true, "requires": { - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/yargs": "^13.0.0", - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.1", - "jest-util": "^24.9.0", - "string-length": "^2.0.0" + "ajv": "^6.5.5", + "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-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "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 + }, + "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" }, "dependencies": { - "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": { - "color-convert": "^1.9.0" - } - }, - "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": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true - }, - "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" - } } } }, - "jest-worker": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", - "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "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": { - "merge-stream": "^2.0.0", - "supports-color": "^6.1.0" + "is-number": "^3.0.0", + "kind-of": "^4.0.0" }, "dependencies": { - "has-flag": { + "is-number": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true + "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" + } + } + } }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "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": { - "has-flag": "^3.0.0" + "is-buffer": "^1.1.5" } } } }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", "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" - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", "dev": true }, - "jsdom": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", - "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", "dev": true, "requires": { - "abab": "^2.0.0", - "acorn": "^5.5.3", - "acorn-globals": "^4.1.0", - "array-equal": "^1.0.0", - "cssom": ">= 0.3.2 < 0.4.0", - "cssstyle": "^1.0.0", - "data-urls": "^1.0.0", - "domexception": "^1.0.1", - "escodegen": "^1.9.1", - "html-encoding-sniffer": "^1.0.2", - "left-pad": "^1.3.0", - "nwsapi": "^2.0.7", - "parse5": "4.0.0", - "pn": "^1.1.0", - "request": "^2.87.0", - "request-promise-native": "^1.0.5", - "sax": "^1.2.4", - "symbol-tree": "^3.2.2", - "tough-cookie": "^2.3.4", - "w3c-hr-time": "^1.0.1", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.3", - "whatwg-mimetype": "^2.1.0", - "whatwg-url": "^6.4.1", - "ws": "^5.2.0", - "xml-name-validator": "^3.0.0" + "whatwg-encoding": "^1.0.1" } }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "dev": true - }, - "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 - }, - "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=", + "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 }, - "json5": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", - "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", - "dev": true, - "requires": { - "minimist": "^1.2.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 - } - } - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "htmlparser2": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", + "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", "dev": true, "requires": { - "graceful-fs": "^4.1.6" + "domelementtype": "^1.3.0", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^2.0.2" } }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "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", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "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": { - "is-buffer": "^1.1.5" + "safer-buffer": ">= 2.1.2 < 3" } }, - "kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", "dev": true }, - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", "dev": true, "requires": { - "set-getter": "^0.1.0" + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" } }, - "left-pad": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", - "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==", - "dev": true - }, - "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==", + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, - "levenary": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", - "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { - "leven": "^3.1.0" + "once": "^1.3.0", + "wrappy": "1" } }, - "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" - } + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true }, - "list-item": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/list-item/-/list-item-1.1.1.tgz", - "integrity": "sha1-DGXQDih8tmPMs8s4Sad+iewmilY=", + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", "dev": true, "requires": { - "expand-range": "^1.8.1", - "extend-shallow": "^2.0.1", - "is-number": "^2.1.0", - "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=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } + "loose-envify": "^1.0.0" } }, - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "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": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" } }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "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": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "kind-of": "^3.0.2" } }, - "lodash": { - "version": "4.17.14", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.14.tgz", - "integrity": "sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw==", + "is-alphabetical": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.2.tgz", + "integrity": "sha512-V0xN4BYezDHcBSKb1QHUFMlR4as/XEuCZBzMJUU4n7+Cbt33SmUnSol+pnXFvLxSHNq2CemUXNdaXV6Flg7+xg==", "dev": true }, - "lodash._reinterpolate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", - "dev": true + "is-alphanumerical": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.2.tgz", + "integrity": "sha512-pyfU/0kHdISIgslFfZN9nfY1Gk3MquQgUm1mJTjdkEPpkAKNWuBTSqFwewOpR7N351VkErCiyV71zX7mlQQqsg==", + "dev": true, + "requires": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + } }, - "lodash.clone": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz", - "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y=", + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "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=", + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=", "dev": true }, - "lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "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 }, - "lodash.template": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", - "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", + "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": { - "lodash._reinterpolate": "^3.0.0", - "lodash.templatesettings": "^4.0.0" + "ci-info": "^2.0.0" } }, - "lodash.templatesettings": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", - "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", + "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": { - "lodash._reinterpolate": "^3.0.0" + "kind-of": "^3.0.2" } }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "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 }, - "log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "is-decimal": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.2.tgz", + "integrity": "sha512-TRzl7mOCchnhchN+f3ICUCzYvL9ul7R+TYOsZ8xia++knyZAJfv/uA1FvQXsAnYIl1T3B2X5E/J7Wb1QXiIBXg==", + "dev": true + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=", "dev": true, "requires": { - "chalk": "^2.0.1" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" }, "dependencies": { - "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": { - "color-convert": "^1.9.0" - } - }, - "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": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0=", "dev": true - }, - "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" - } } } }, - "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==", + "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": "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-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": { - "js-tokens": "^3.0.0 || ^4.0.0" + "is-extglob": "^2.1.1" } }, - "magic-string": { - "version": "0.22.5", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz", - "integrity": "sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w==", + "is-hexadecimal": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.2.tgz", + "integrity": "sha512-but/G3sapV3MNyqiDBLrOi4x8uCIw0RY3o/Vb5GT0sMFHrVV7731wFSVy41T5FO1og7G0gXLJh0MkgPRouko/A==", + "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": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", "dev": true, "requires": { - "vlq": "^0.2.2" + "kind-of": "^3.0.2" } }, - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "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": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=", "dev": true, "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" + "isobject": "^3.0.1" }, "dependencies": { - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true } } }, - "make-error": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz", - "integrity": "sha1-7+ToH22yjK3WBccPKcgxtY73dsg=", + "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-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "dev": true }, - "makeerror": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", - "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "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": { - "tmpl": "1.0.x" + "has-symbols": "^1.0.1" } }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, - "map-visit": { + "is-unc-path": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", "dev": true, "requires": { - "object-visit": "^1.0.0" + "unc-path-regex": "^0.1.2" } }, - "markdown-escapes": { + "is-whitespace-character": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.2.tgz", - "integrity": "sha512-lbRZ2mE3Q9RtLjxZBZ9+IMl68DKIXaVAhwvwn9pmjnPLS0h/6kyBMgNhqi1xFJ/2yv6cSyv0jbiZavZv93JkkA==", + "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.2.tgz", + "integrity": "sha512-SzM+T5GKUCtLhlHFKt2SDAX2RFzfS6joT91F2/WSi9LxgFdsnhfPK/UIA+JhRR2xuyLdrCys2PiFDrtn1fU5hQ==", "dev": true }, - "markdown-link": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/markdown-link/-/markdown-link-0.1.1.tgz", - "integrity": "sha1-MsXGUZmmRXMWMi0eQinRNAfIx88=", + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha1-0YUOuXkezRjmGCzhKjDzlmNLsZ0=", "dev": true }, - "markdown-toc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/markdown-toc/-/markdown-toc-1.2.0.tgz", - "integrity": "sha512-eOsq7EGd3asV0oBfmyqngeEIhrbkc7XVP63OwcJBIhH2EpG2PzFcbZdhy1jutXSlRBBVMNXHvMtSr5LAxSUvUg==", - "dev": true, - "requires": { - "concat-stream": "^1.5.2", - "diacritics-map": "^0.1.0", - "gray-matter": "^2.1.0", - "lazy-cache": "^2.0.2", - "list-item": "^1.1.1", - "markdown-link": "^0.1.1", - "minimist": "^1.2.0", - "mixin-deep": "^1.1.3", - "object.pick": "^1.2.0", - "remarkable": "^1.7.1", - "repeat-string": "^1.6.1", - "strip-color": "^0.1.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 - } - } + "is-word-character": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.2.tgz", + "integrity": "sha512-T3FlsX8rCHAH8e7RE7PfOPZVFQlcV3XRF9eOOBQ1uf70OxO7CjjSOjeImMPCADBdYWcStAbVbYvJ1m2D3tb+EA==", + "dev": true }, - "math-random": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz", - "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==", + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", "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" - } + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true }, - "mdn-data": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", - "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, - "merge-source-map": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz", - "integrity": "sha1-pd5GU42uhNQRTMXqArR3KmNGcB8=", + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", "dev": true, "requires": { - "source-map": "^0.5.6" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } + "isarray": "1.0.0" } }, - "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==", + "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 }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", "dev": true }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "istanbul-lib-instrument": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", + "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", "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" + "@babel/generator": "^7.4.0", + "@babel/parser": "^7.4.3", + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.3", + "@babel/types": "^7.4.0", + "istanbul-lib-coverage": "^2.0.5", + "semver": "^6.0.0" }, "dependencies": { - "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==", + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true } } }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "istanbul-lib-report": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", + "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", "dev": true, "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "supports-color": "^6.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==", + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true - }, - "mime-db": { - "version": "1.43.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz", - "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==", - "dev": true - }, - "mime-types": { - "version": "2.1.26", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz", - "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==", - "dev": true, - "requires": { - "mime-db": "1.43.0" - } - }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true - }, - "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": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "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==", + "istanbul-lib-source-maps": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", + "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", "dev": true, "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "rimraf": "^2.6.3", + "source-map": "^0.6.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==", + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "is-plain-object": "^2.0.4" + "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 + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" } } } }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "istanbul-reports": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.7.tgz", + "integrity": "sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==", "dev": true, "requires": { - "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 - } + "html-escaper": "^2.0.0" } }, - "mocha": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", - "integrity": "sha1-bYrlCPWRZ/lA8rWzxKYSrlDJCuY=", + "jest": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-24.8.0.tgz", + "integrity": "sha512-o0HM90RKFRNWmAWvlyV8i5jGZ97pFwkeVoGvPW1EtLTgJc2+jcuqcbbqcSZLE/3f2S5pt0y2ZBETuhpWNl1Reg==", "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" + "import-local": "^2.0.0", + "jest-cli": "^24.8.0" }, "dependencies": { - "commander": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", - "integrity": "sha1-30boZ9D8Kuxmo0ZitAapzK//Ww8=", + "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 }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=", - "dev": true, - "requires": { - "ms": "2.0.0" - } + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", + "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 + }, + "jest-cli": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.9.0.tgz", + "integrity": "sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg==", "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/core": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "import-local": "^2.0.0", + "is-ci": "^2.0.0", + "jest-config": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "prompts": "^2.0.1", + "realpath-native": "^1.1.0", + "yargs": "^13.3.0" + }, + "dependencies": { + "@jest/core": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.9.0.tgz", + "integrity": "sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/reporters": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "graceful-fs": "^4.1.15", + "jest-changed-files": "^24.9.0", + "jest-config": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-resolve-dependencies": "^24.9.0", + "jest-runner": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "jest-watcher": "^24.9.0", + "micromatch": "^3.1.10", + "p-each-series": "^1.0.0", + "realpath-native": "^1.1.0", + "rimraf": "^2.5.4", + "slash": "^2.0.0", + "strip-ansi": "^5.0.0" + } + }, + "@jest/test-result": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz", + "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==", + "dev": true, + "requires": { + "@jest/console": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/istanbul-lib-coverage": "^2.0.0" + } + }, + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "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" + } + }, + "jest-config": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.9.0.tgz", + "integrity": "sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^24.9.0", + "@jest/types": "^24.9.0", + "babel-jest": "^24.9.0", + "chalk": "^2.0.1", + "glob": "^7.1.1", + "jest-environment-jsdom": "^24.9.0", + "jest-environment-node": "^24.9.0", + "jest-get-type": "^24.9.0", + "jest-jasmine2": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "micromatch": "^3.1.10", + "pretty-format": "^24.9.0", + "realpath-native": "^1.1.0" + } + }, + "jest-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz", + "integrity": "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==", + "dev": true, + "requires": { + "@jest/console": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/source-map": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "callsites": "^3.0.0", + "chalk": "^2.0.1", + "graceful-fs": "^4.1.15", + "is-ci": "^2.0.0", + "mkdirp": "^0.5.1", + "slash": "^2.0.0", + "source-map": "^0.6.0" + } + }, + "jest-validate": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.9.0.tgz", + "integrity": "sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "camelcase": "^5.3.1", + "chalk": "^2.0.1", + "jest-get-type": "^24.9.0", + "leven": "^3.1.0", + "pretty-format": "^24.9.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" + } + }, + "realpath-native": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz", + "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==", + "dev": true, + "requires": { + "util.promisify": "^1.0.0" + } + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "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.2" + } + } } }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", "dev": true }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha1-HGszdALCE3YF7+GfEP7DkPb6q1Q=", + "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": { - "has-flag": "^3.0.0" + "ansi-regex": "^4.1.0" } } } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "multimatch": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-4.0.0.tgz", - "integrity": "sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ==", + "jest-changed-files": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.9.0.tgz", + "integrity": "sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg==", "dev": true, "requires": { - "@types/minimatch": "^3.0.3", - "array-differ": "^3.0.0", - "array-union": "^2.1.0", - "arrify": "^2.0.1", - "minimatch": "^3.0.4" + "@jest/types": "^24.9.0", + "execa": "^1.0.0", + "throat": "^4.0.0" } }, - "nan": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", - "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "jest-config": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.9.0.tgz", + "integrity": "sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ==", "dev": true, - "optional": true + "requires": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^24.9.0", + "@jest/types": "^24.9.0", + "babel-jest": "^24.9.0", + "chalk": "^2.0.1", + "glob": "^7.1.1", + "jest-environment-jsdom": "^24.9.0", + "jest-environment-node": "^24.9.0", + "jest-get-type": "^24.9.0", + "jest-jasmine2": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "micromatch": "^3.1.10", + "pretty-format": "^24.9.0", + "realpath-native": "^1.1.0" + } }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "jest-diff": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz", + "integrity": "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==", "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" - }, - "dependencies": { - "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 - } + "chalk": "^2.0.1", + "diff-sequences": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" } }, - "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 + "jest-docblock": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-24.9.0.tgz", + "integrity": "sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA==", + "dev": true, + "requires": { + "detect-newline": "^2.1.0" + } }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true + "jest-each": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.9.0.tgz", + "integrity": "sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "jest-get-type": "^24.9.0", + "jest-util": "^24.9.0", + "pretty-format": "^24.9.0" + } }, - "node-addon-api": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", - "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==", - "dev": true + "jest-environment-jsdom": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz", + "integrity": "sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA==", + "dev": true, + "requires": { + "@jest/environment": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-util": "^24.9.0", + "jsdom": "^11.5.1" + } }, - "node-forge": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.6.tgz", - "integrity": "sha512-sol30LUpz1jQFBjOKwbjxijiE3b6pjd74YwfD0fJOKPjF+fONKb2Yg8rYgS6+bK6VDl+/wfr4IYpC7jDzLUIfw==", - "dev": true + "jest-environment-node": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.9.0.tgz", + "integrity": "sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA==", + "dev": true, + "requires": { + "@jest/environment": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-util": "^24.9.0" + } }, - "node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "jest-get-type": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", + "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==", "dev": true }, - "node-libs-browser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", - "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", - "dev": true, - "requires": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.1", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.11.0", - "vm-browserify": "^1.0.1" + "jest-haste-map": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz", + "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "anymatch": "^2.0.0", + "fb-watchman": "^2.0.0", + "fsevents": "^1.2.7", + "graceful-fs": "^4.1.15", + "invariant": "^2.2.4", + "jest-serializer": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.9.0", + "micromatch": "^3.1.10", + "sane": "^4.0.3", + "walker": "^1.0.7" }, "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "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 } } }, - "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 + "jest-jasmine2": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz", + "integrity": "sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw==", + "dev": true, + "requires": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "co": "^4.6.0", + "expect": "^24.9.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "pretty-format": "^24.9.0", + "throat": "^4.0.0" + } }, - "node-notifier": { - "version": "5.4.3", - "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.3.tgz", - "integrity": "sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q==", + "jest-leak-detector": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz", + "integrity": "sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA==", "dev": true, "requires": { - "growly": "^1.3.0", - "is-wsl": "^1.1.0", - "semver": "^5.5.0", - "shellwords": "^0.1.1", - "which": "^1.3.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" } }, - "node-releases": { - "version": "1.1.58", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.58.tgz", - "integrity": "sha512-NxBudgVKiRh/2aPWMgPR7bPTX0VPmGx5QBwCtdHitnqFE5/O8DeBXuIMH1nwNnw/aMo6AjOrpsHzfY3UbUJ7yg==", - "dev": true - }, - "normalize-html-whitespace": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/normalize-html-whitespace/-/normalize-html-whitespace-1.0.0.tgz", - "integrity": "sha512-9ui7CGtOOlehQu0t/OhhlmDyc71mKVlv+4vF+me4iZLPrNtRL2xoquEdfZxasC/bdQi/Hr3iTrpyRKIG+ocabA==", - "dev": true + "jest-matcher-utils": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz", + "integrity": "sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "jest-diff": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + } }, - "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==", + "jest-message-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz", + "integrity": "sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==", "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" + "@babel/code-frame": "^7.0.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/stack-utils": "^1.0.1", + "chalk": "^2.0.1", + "micromatch": "^3.1.10", + "slash": "^2.0.0", + "stack-utils": "^1.0.1" }, "dependencies": { - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", "dev": true - }, - "resolve": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", - "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", - "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=", + "jest-mock": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz", + "integrity": "sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==", "dev": true, "requires": { - "remove-trailing-separator": "^1.0.1" + "@jest/types": "^24.9.0" } }, - "normalize-url": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", - "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", + "jest-pnp-resolver": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz", + "integrity": "sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ==", "dev": true }, - "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=", + "jest-regex-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.9.0.tgz", + "integrity": "sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA==", + "dev": true + }, + "jest-resolve": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.9.0.tgz", + "integrity": "sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ==", "dev": true, "requires": { - "path-key": "^2.0.0" + "@jest/types": "^24.9.0", + "browser-resolve": "^1.11.3", + "chalk": "^2.0.1", + "jest-pnp-resolver": "^1.2.1", + "realpath-native": "^1.1.0" } }, - "nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "jest-resolve-dependencies": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz", + "integrity": "sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g==", "dev": true, "requires": { - "boolbase": "~1.0.0" + "@jest/types": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-snapshot": "^24.9.0" } }, - "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 - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "jest-runner": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.9.0.tgz", + "integrity": "sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg==", "dev": true, "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" + "@jest/console": "^24.7.1", + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.4.2", + "exit": "^0.1.2", + "graceful-fs": "^4.1.15", + "jest-config": "^24.9.0", + "jest-docblock": "^24.3.0", + "jest-haste-map": "^24.9.0", + "jest-jasmine2": "^24.9.0", + "jest-leak-detector": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-resolve": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.6.0", + "source-map-support": "^0.5.6", + "throat": "^4.0.0" }, "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=", + "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": { - "is-descriptor": "^0.1.0" + "color-convert": "^1.9.0" + } + }, + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "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 + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "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" } } } }, - "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==", - "dev": true + "jest-runtime": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.9.0.tgz", + "integrity": "sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/environment": "^24.9.0", + "@jest/source-map": "^24.3.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/yargs": "^13.0.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.1.15", + "jest-config": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "strip-bom": "^3.0.0", + "yargs": "^13.3.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 + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + } + } }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "jest-serializer": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz", + "integrity": "sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==", "dev": true }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "jest-snapshot": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.9.0.tgz", + "integrity": "sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew==", "dev": true, "requires": { - "isobject": "^3.0.0" + "@babel/types": "^7.0.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "expect": "^24.9.0", + "jest-diff": "^24.9.0", + "jest-get-type": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-resolve": "^24.9.0", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^24.9.0", + "semver": "^6.2.0" }, "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true } } }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - } - }, - "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.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "jest-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz", + "integrity": "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==", "dev": true, "requires": { - "isobject": "^3.0.1" + "@jest/console": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/source-map": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "callsites": "^3.0.0", + "chalk": "^2.0.1", + "graceful-fs": "^4.1.15", + "is-ci": "^2.0.0", + "mkdirp": "^0.5.1", + "slash": "^2.0.0", + "source-map": "^0.6.0" }, "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "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 + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", "dev": true } } }, - "object.values": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", - "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1", - "has": "^1.0.3" - } - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "opn": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", - "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "jest-validate": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.9.0.tgz", + "integrity": "sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==", "dev": true, "requires": { - "is-wsl": "^1.1.0" + "@jest/types": "^24.9.0", + "camelcase": "^5.3.1", + "chalk": "^2.0.1", + "jest-get-type": "^24.9.0", + "leven": "^3.1.0", + "pretty-format": "^24.9.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + } } }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "jest-watcher": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.9.0.tgz", + "integrity": "sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw==", "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" + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/yargs": "^13.0.0", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "jest-util": "^24.9.0", + "string-length": "^2.0.0" } }, - "ora": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ora/-/ora-2.1.0.tgz", - "integrity": "sha512-hNNlAd3gfv/iPmsNxYoAPLvxg7HuPozww7fFonMZvL84tP6Ox5igfk5j/+a9rtJJwqMgKK+JgWsAQik5o0HTLA==", + "jest-worker": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", + "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", "dev": true, "requires": { - "chalk": "^2.3.1", - "cli-cursor": "^2.1.0", - "cli-spinners": "^1.1.0", - "log-symbols": "^2.2.0", - "strip-ansi": "^4.0.0", - "wcwidth": "^1.0.1" + "merge-stream": "^2.0.0", + "supports-color": "^6.1.0" }, "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "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==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "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": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^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==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, "requires": { "has-flag": "^3.0.0" @@ -10675,721 +4547,522 @@ } } }, - "os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", "dev": true }, - "p-each-series": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz", - "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=", + "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": { - "p-reduce": "^1.0.0" + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "jsdom": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", + "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "acorn": "^5.5.3", + "acorn-globals": "^4.1.0", + "array-equal": "^1.0.0", + "cssom": ">= 0.3.2 < 0.4.0", + "cssstyle": "^1.0.0", + "data-urls": "^1.0.0", + "domexception": "^1.0.1", + "escodegen": "^1.9.1", + "html-encoding-sniffer": "^1.0.2", + "left-pad": "^1.3.0", + "nwsapi": "^2.0.7", + "parse5": "4.0.0", + "pn": "^1.1.0", + "request": "^2.87.0", + "request-promise-native": "^1.0.5", + "sax": "^1.2.4", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.3.4", + "w3c-hr-time": "^1.0.1", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.3", + "whatwg-mimetype": "^2.1.0", + "whatwg-url": "^6.4.1", + "ws": "^5.2.0", + "xml-name-validator": "^3.0.0" } }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "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==", - "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" - } + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true }, - "p-reduce": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", - "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=", + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", "dev": true }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "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 }, - "pako": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", - "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", + "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 }, - "parcel": { - "version": "1.12.4", - "resolved": "https://registry.npmjs.org/parcel/-/parcel-1.12.4.tgz", - "integrity": "sha512-qfc74e2/R4pCoU6L/ZZnK9k3iDS6ir4uHea0e9th9w52eehcAGf2ido/iABq9PBXdsIOe4NSY3oUm7Khe7+S3w==", + "json5": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", + "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/core": "^7.4.4", - "@babel/generator": "^7.4.4", - "@babel/parser": "^7.4.4", - "@babel/plugin-transform-flow-strip-types": "^7.4.4", - "@babel/plugin-transform-modules-commonjs": "^7.4.4", - "@babel/plugin-transform-react-jsx": "^7.0.0", - "@babel/preset-env": "^7.4.4", - "@babel/runtime": "^7.4.4", - "@babel/template": "^7.4.4", - "@babel/traverse": "^7.4.4", - "@babel/types": "^7.4.4", - "@iarna/toml": "^2.2.0", - "@parcel/fs": "^1.11.0", - "@parcel/logger": "^1.11.1", - "@parcel/utils": "^1.11.0", - "@parcel/watcher": "^1.12.1", - "@parcel/workers": "^1.11.0", - "ansi-to-html": "^0.6.4", - "babylon-walk": "^1.0.2", - "browserslist": "^4.1.0", - "chalk": "^2.1.0", - "clone": "^2.1.1", - "command-exists": "^1.2.6", - "commander": "^2.11.0", - "core-js": "^2.6.5", - "cross-spawn": "^6.0.4", - "css-modules-loader-core": "^1.1.0", - "cssnano": "^4.0.0", - "deasync": "^0.1.14", - "dotenv": "^5.0.0", - "dotenv-expand": "^5.1.0", - "envinfo": "^7.3.1", - "fast-glob": "^2.2.2", - "filesize": "^3.6.0", - "get-port": "^3.2.0", - "htmlnano": "^0.2.2", - "is-glob": "^4.0.0", - "is-url": "^1.2.2", - "js-yaml": "^3.10.0", - "json5": "^1.0.1", - "micromatch": "^3.0.4", - "mkdirp": "^0.5.1", - "node-forge": "^0.7.1", - "node-libs-browser": "^2.0.0", - "opn": "^5.1.0", - "postcss": "^7.0.11", - "postcss-value-parser": "^3.3.1", - "posthtml": "^0.11.2", - "posthtml-parser": "^0.4.0", - "posthtml-render": "^1.1.3", - "resolve": "^1.4.0", - "semver": "^5.4.1", - "serialize-to-js": "^3.0.0", - "serve-static": "^1.12.4", - "source-map": "0.6.1", - "terser": "^3.7.3", - "v8-compile-cache": "^2.0.0", - "ws": "^5.1.1" + "minimist": "^1.2.0" }, "dependencies": { - "@nodelib/fs.stat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", - "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", - "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==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "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": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "fast-glob": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", - "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", - "dev": true, - "requires": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.1.2", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.3", - "micromatch": "^3.1.10" - } - }, - "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" - } - } - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, "minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true - }, - "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" - } } } }, - "parse-asn1": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", - "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", "dev": true, "requires": { - "asn1.js": "^4.0.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" + "graceful-fs": "^4.1.6" } }, - "parse-entities": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.2.1.tgz", - "integrity": "sha512-NBWYLQm1KSoDKk7GAHyioLTvCZ5QjdH/ASBBQTD3iLiAWJXS5bg1jEWI8nIJ+vgVvsceBVBcDGRWSo0KVQBvvg==", + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", "dev": true, "requires": { - "character-entities": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "character-reference-invalid": "^1.0.0", - "is-alphanumerical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-hexadecimal": "^1.0.0" + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" } }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "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": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "is-buffer": "^1.1.5" } }, - "parse5": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", - "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", - "dev": true - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true - }, - "parsimmon": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/parsimmon/-/parsimmon-1.13.0.tgz", - "integrity": "sha512-5UIrOCW+gjbILkjKPgTgmq8LKf8TT3Iy7kN2VD7OtQ81facKn8B4gG1X94jWqXYZsxG2KbJhrv/Yq/5H6BQn7A==", - "dev": true - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true - }, - "path-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", - "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", - "dev": true - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "dev": true }, - "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 + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "dev": true, + "requires": { + "set-getter": "^0.1.0" + } }, - "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=", + "left-pad": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", + "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==", "dev": true }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "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 }, - "path-parse": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", - "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" + } }, - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "list-item": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/list-item/-/list-item-1.1.1.tgz", + "integrity": "sha1-DGXQDih8tmPMs8s4Sad+iewmilY=", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "extend-shallow": "^2.0.1", + "is-number": "^2.1.0", + "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=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", "dev": true, "requires": { - "pify": "^3.0.0" + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" } }, - "pbkdf2": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", - "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", + "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": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" } }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "lodash": { + "version": "4.17.14", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.14.tgz", + "integrity": "sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw==", "dev": true }, - "physical-cpu-count": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/physical-cpu-count/-/physical-cpu-count-2.0.0.tgz", - "integrity": "sha1-GN4vl+S/epVRrXURlCtUlverpmA=", + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", "dev": true }, - "picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", "dev": true }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true + "lodash.template": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", + "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", + "dev": true, + "requires": { + "lodash._reinterpolate": "^3.0.0", + "lodash.templatesettings": "^4.0.0" + } }, - "pirates": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", - "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "lodash.templatesettings": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", + "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", "dev": true, "requires": { - "node-modules-regexp": "^1.0.0" + "lodash._reinterpolate": "^3.0.0" } }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "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": { - "find-up": "^3.0.0" + "js-tokens": "^3.0.0 || ^4.0.0" } }, - "pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", - "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "dev": true, "requires": { - "find-up": "^2.1.0" + "pify": "^4.0.1", + "semver": "^5.6.0" }, "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true } } }, - "platform": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.4.tgz", - "integrity": "sha1-bw+xftqqSPIUQrOpdcBjEw8cPr0=", + "make-error": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz", + "integrity": "sha1-7+ToH22yjK3WBccPKcgxtY73dsg=", "dev": true }, - "pn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", - "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", - "dev": true + "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" + } }, - "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=", + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", "dev": true }, - "postcss": { - "version": "7.0.32", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", - "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "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": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "dependencies": { - "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": { - "color-convert": "^1.9.0" - } - }, - "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": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.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" - } - } - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } + "object-visit": "^1.0.0" } }, - "postcss-calc": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.2.tgz", - "integrity": "sha512-rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ==", + "markdown-escapes": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.2.tgz", + "integrity": "sha512-lbRZ2mE3Q9RtLjxZBZ9+IMl68DKIXaVAhwvwn9pmjnPLS0h/6kyBMgNhqi1xFJ/2yv6cSyv0jbiZavZv93JkkA==", + "dev": true + }, + "markdown-link": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/markdown-link/-/markdown-link-0.1.1.tgz", + "integrity": "sha1-MsXGUZmmRXMWMi0eQinRNAfIx88=", + "dev": true + }, + "markdown-toc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/markdown-toc/-/markdown-toc-1.2.0.tgz", + "integrity": "sha512-eOsq7EGd3asV0oBfmyqngeEIhrbkc7XVP63OwcJBIhH2EpG2PzFcbZdhy1jutXSlRBBVMNXHvMtSr5LAxSUvUg==", "dev": true, "requires": { - "postcss": "^7.0.27", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.2" + "concat-stream": "^1.5.2", + "diacritics-map": "^0.1.0", + "gray-matter": "^2.1.0", + "lazy-cache": "^2.0.2", + "list-item": "^1.1.1", + "markdown-link": "^0.1.1", + "minimist": "^1.2.0", + "mixin-deep": "^1.1.3", + "object.pick": "^1.2.0", + "remarkable": "^1.7.1", + "repeat-string": "^1.6.1", + "strip-color": "^0.1.0" }, "dependencies": { - "postcss-value-parser": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", - "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true } } }, - "postcss-colormin": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", - "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "color": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } + "math-random": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz", + "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==", + "dev": true }, - "postcss-convert-values": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", - "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } + "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 }, - "postcss-discard-comments": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", - "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "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": { - "postcss": "^7.0.0" + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "dependencies": { + "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 + } } }, - "postcss-discard-duplicates": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", - "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } + "mime-db": { + "version": "1.43.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz", + "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==", + "dev": true }, - "postcss-discard-empty": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", - "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", + "mime-types": { + "version": "2.1.26", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz", + "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==", "dev": true, "requires": { - "postcss": "^7.0.0" + "mime-db": "1.43.0" } }, - "postcss-discard-overridden": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", - "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", "dev": true, "requires": { - "postcss": "^7.0.0" + "brace-expansion": "^1.1.7" } }, - "postcss-merge-longhand": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", - "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", - "dev": true, - "requires": { - "css-color-names": "0.0.4", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "stylehacks": "^4.0.0" - } + "minimist": { + "version": "0.0.8", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true }, - "postcss-merge-rules": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", - "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", + "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": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "cssnano-util-same-parent": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0", - "vendors": "^1.0.0" + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" }, "dependencies": { - "postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "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": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" + "is-plain-object": "^2.0.4" } } } }, - "postcss-minify-font-values": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", - "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-minify-gradients": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", - "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "is-color-stop": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-minify-params": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", - "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.0", - "browserslist": "^4.0.0", - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "uniqs": "^2.0.0" - } - }, - "postcss-minify-selectors": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", - "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", + "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": { - "alphanum-sort": "^1.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" + "minimist": "^1.2.5" }, "dependencies": { - "postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "dev": true, - "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true } } }, - "postcss-modules-extract-imports": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz", - "integrity": "sha1-thTJcgvmgW6u41+zpfqh26agXds=", + "mocha": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", + "integrity": "sha1-bYrlCPWRZ/lA8rWzxKYSrlDJCuY=", "dev": true, "requires": { - "postcss": "^6.0.1" + "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": { - "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==", + "commander": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha1-30boZ9D8Kuxmo0ZitAapzK//Ww8=", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=", "dev": true, "requires": { - "color-convert": "^1.9.0" + "ms": "2.0.0" } }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", "dev": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "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": { @@ -11398,21 +5071,19 @@ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" + "minimist": "0.0.8" } }, "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha1-HGszdALCE3YF7+GfEP7DkPb6q1Q=", "dev": true, "requires": { "has-flag": "^3.0.0" @@ -11420,377 +5091,448 @@ } } }, - "postcss-modules-local-by-default": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", - "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "multimatch": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-4.0.0.tgz", + "integrity": "sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ==", + "dev": true, + "requires": { + "@types/minimatch": "^3.0.3", + "array-differ": "^3.0.0", + "array-union": "^2.1.0", + "arrify": "^2.0.1", + "minimatch": "^3.0.4" + } + }, + "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": { - "css-selector-tokenizer": "^0.7.0", - "postcss": "^6.0.1" + "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" }, "dependencies": { - "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": { - "color-convert": "^1.9.0" - } - }, - "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": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "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 + } + } + }, + "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 + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "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": "5.4.3", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.3.tgz", + "integrity": "sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q==", + "dev": true, + "requires": { + "growly": "^1.3.0", + "is-wsl": "^1.1.0", + "semver": "^5.5.0", + "shellwords": "^0.1.1", + "which": "^1.3.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true - }, - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.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" - } } } }, - "postcss-modules-scope": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", - "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", + "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": { - "css-selector-tokenizer": "^0.7.0", - "postcss": "^6.0.1" + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" }, "dependencies": { - "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": { - "color-convert": "^1.9.0" - } - }, - "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": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", "dev": true }, - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "resolve": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", + "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "path-parse": "^1.0.6" } } } }, - "postcss-modules-values": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", - "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", + "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" + } + }, + "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" + } + }, + "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-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", "dev": true, "requires": { - "icss-replace-symbols": "^1.1.0", - "postcss": "^6.0.1" + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" }, "dependencies": { - "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": { - "color-convert": "^1.9.0" - } - }, - "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": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "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": { - "has-flag": "^3.0.0" + "is-descriptor": "^0.1.0" } } } }, - "postcss-normalize-charset": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", - "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", + "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==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", "dev": true, "requires": { - "postcss": "^7.0.0" + "isobject": "^3.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } } }, - "postcss-normalize-display-values": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", - "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", "dev": true, "requires": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" } }, - "postcss-normalize-positions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", - "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", + "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": { - "cssnano-util-get-arguments": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" } }, - "postcss-normalize-repeat-style": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", - "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", "dev": true, "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" + "isobject": "^3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } } }, - "postcss-normalize-string": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", - "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" + "wrappy": "1" } }, - "postcss-normalize-timing-functions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", - "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", "dev": true, "requires": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" + "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" } }, - "postcss-normalize-unicode": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", - "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", + "p-each-series": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz", + "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=", "dev": true, "requires": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" + "p-reduce": "^1.0.0" } }, - "postcss-normalize-url": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", - "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", + "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==", "dev": true, "requires": { - "is-absolute-url": "^2.0.0", - "normalize-url": "^3.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" + "p-try": "^2.0.0" } }, - "postcss-normalize-whitespace": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", - "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", + "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": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" + "p-limit": "^2.0.0" } }, - "postcss-ordered-values": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", - "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", + "p-reduce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", + "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=", + "dev": true + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "parse-entities": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.2.1.tgz", + "integrity": "sha512-NBWYLQm1KSoDKk7GAHyioLTvCZ5QjdH/ASBBQTD3iLiAWJXS5bg1jEWI8nIJ+vgVvsceBVBcDGRWSo0KVQBvvg==", "dev": true, "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" } }, - "postcss-reduce-initial": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", - "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", "dev": true, "requires": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" } }, - "postcss-reduce-transforms": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", - "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", - "dev": true, - "requires": { - "cssnano-util-get-match": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } + "parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "dev": true }, - "postcss-selector-parser": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", - "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } + "parsimmon": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/parsimmon/-/parsimmon-1.13.0.tgz", + "integrity": "sha512-5UIrOCW+gjbILkjKPgTgmq8LKf8TT3Iy7kN2VD7OtQ81facKn8B4gG1X94jWqXYZsxG2KbJhrv/Yq/5H6BQn7A==", + "dev": true }, - "postcss-svgo": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz", - "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", - "dev": true, - "requires": { - "is-svg": "^3.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "svgo": "^1.0.0" - } + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true }, - "postcss-unique-selectors": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", - "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", + "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 + }, + "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=", + "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 + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "dev": true, "requires": { - "alphanum-sort": "^1.0.0", - "postcss": "^7.0.0", - "uniqs": "^2.0.0" + "pify": "^3.0.0" } }, - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "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.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "dev": true }, - "posthtml": { - "version": "0.11.6", - "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.11.6.tgz", - "integrity": "sha512-C2hrAPzmRdpuL3iH0TDdQ6XCc9M7Dcc3zEW5BLerY65G4tWWszwv6nG/ksi6ul5i2mx22ubdljgktXCtNkydkw==", + "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": { - "posthtml-parser": "^0.4.1", - "posthtml-render": "^1.1.5" + "node-modules-regexp": "^1.0.0" } }, - "posthtml-parser": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.4.2.tgz", - "integrity": "sha512-BUIorsYJTvS9UhXxPTzupIztOMVNPa/HtAm9KHni9z6qEfiJ1bpOBL5DfUOL9XAc3XkLIEzBzpph+Zbm4AdRAg==", + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", "dev": true, "requires": { - "htmlparser2": "^3.9.2" + "find-up": "^3.0.0" } }, - "posthtml-render": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-1.2.2.tgz", - "integrity": "sha512-MbIXTWwAfJ9qET6Zl29UNwJcDJEEz9Zkr5oDhiujitJa7YBJwEpbkX2cmuklCDxubTMoRWpid3q8DrSyGnUUzQ==", + "platform": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.4.tgz", + "integrity": "sha1-bw+xftqqSPIUQrOpdcBjEw8cPr0=", + "dev": true + }, + "pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", + "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 }, "prelude-ls": { @@ -11825,18 +5567,6 @@ } } }, - "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", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "dev": true - }, "process-nextick-args": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", @@ -11849,28 +5579,6 @@ "integrity": "sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ==", "dev": true }, - "public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "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 - } - } - }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -11893,98 +5601,12 @@ "integrity": "sha512-mk98aayyd00xbfHgE3uEmAUGzz3jCdm8Mkf5DUXUhc7egmOaGG2D7qhVlynGenNe9VaNJZvzO9hkc8myuTkDgw==", "dev": true }, - "purgecss": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-1.4.2.tgz", - "integrity": "sha512-hkOreFTgiyMHMmC2BxzdIw5DuC6kxAbP/gGOGd3MEsF3+5m69rIvUEPaxrnoUtfODTFKe9hcXjGwC6jcjoyhOw==", - "dev": true, - "requires": { - "glob": "^7.1.3", - "postcss": "^7.0.14", - "postcss-selector-parser": "^6.0.0", - "yargs": "^14.0.0" - }, - "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "yargs": { - "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", - "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": "^15.0.1" - } - }, - "yargs-parser": { - "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", - "decamelize": "^1.2.0" - } - } - } - }, - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", - "dev": true - }, "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", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "dev": true - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "dev": true - }, - "quote-stream": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/quote-stream/-/quote-stream-1.0.2.tgz", - "integrity": "sha1-hJY/jJwmuULhU/7rU6rnRlK34LI=", - "dev": true, - "requires": { - "buffer-equal": "0.0.1", - "minimist": "^1.1.3", - "through2": "^2.0.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 - } - } - }, "randomatic": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", @@ -12010,31 +5632,6 @@ } } }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true - }, "react-is": { "version": "16.13.0", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.0.tgz", @@ -12077,17 +5674,6 @@ "util-deprecate": "~1.0.1" } }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - }, "realpath-native": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz", @@ -12097,37 +5683,6 @@ "util.promisify": "^1.0.0" } }, - "regenerate": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.1.tgz", - "integrity": "sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A==", - "dev": true - }, - "regenerate-unicode-properties": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", - "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", - "dev": true, - "requires": { - "regenerate": "^1.4.0" - } - }, - "regenerator-runtime": { - "version": "0.13.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", - "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", - "dev": true - }, - "regenerator-transform": { - "version": "0.14.4", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz", - "integrity": "sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.8.4", - "private": "^0.1.8" - } - }, "regex-not": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", @@ -12138,43 +5693,6 @@ "safe-regex": "^1.1.0" } }, - "regexpu-core": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", - "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", - "dev": true, - "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.2.0", - "regjsgen": "^0.5.1", - "regjsparser": "^0.6.4", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.2.0" - } - }, - "regjsgen": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", - "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", - "dev": true - }, - "regjsparser": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", - "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - } - } - }, "remark-frontmatter": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-1.3.1.tgz", @@ -12340,16 +5858,6 @@ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", "dev": true }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "dev": true, - "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - } - }, "ret": { "version": "0.1.15", "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", @@ -12362,18 +5870,6 @@ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true }, - "rgb-regex": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", - "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", - "dev": true - }, - "rgba-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", - "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", - "dev": true - }, "rimraf": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", @@ -12383,16 +5879,6 @@ "glob": "^7.0.5" } }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, "rsvp": { "version": "4.8.5", "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", @@ -12457,67 +5943,11 @@ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", "dev": true }, - "saxes": { - "version": "3.1.11", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", - "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", - "dev": true, - "requires": { - "xmlchars": "^2.1.1" - } - }, "semver": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", - "dev": true - }, - "send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", - "dev": true, - "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.7.2", - "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "dependencies": { - "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 - } - } - }, - "serialize-to-js": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/serialize-to-js/-/serialize-to-js-3.1.1.tgz", - "integrity": "sha512-F+NGU0UHMBO4Q965tjw7rvieNVjlH6Lqi2emq/Lc9LUURYJbiCzmpi4Cy1OOjjVPtxu0c+NE85LU6968Wko5ZA==", - "dev": true - }, - "serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", - "dev": true, - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.1" - } + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "dev": true }, "set-blocking": { "version": "2.0.0", @@ -12557,34 +5987,6 @@ } } }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "dev": true - }, - "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", - "dev": true - }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "shallow-copy": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz", - "integrity": "sha1-QV9CcC1z2BAzApLMXuhurhoRoXA=", - "dev": true - }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", @@ -12612,23 +6014,6 @@ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true }, - "simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", - "dev": true, - "requires": { - "is-arrayish": "^0.3.1" - }, - "dependencies": { - "is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", - "dev": true - } - } - }, "sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", @@ -12854,12 +6239,6 @@ "tweetnacl": "~0.14.0" } }, - "stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "dev": true - }, "stack-utils": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz", @@ -12872,15 +6251,6 @@ "integrity": "sha512-Qe8QntFrrpWTnHwvwj2FZTgv+PKIsp0B9VxLzLLbSpPXWOgRgc5LVj/aTiSfK1RqIeF9jeC1UeOH8Q8y60A7og==", "dev": true }, - "static-eval": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.0.5.tgz", - "integrity": "sha512-nNbV6LbGtMBgv7e9LFkt5JV8RVlRsyJrphfAt9tOtBBW/SfnzZDf2KnS72an8e434A+9e/BmJuTxeGPvrAK7KA==", - "dev": true, - "requires": { - "escodegen": "^1.11.1" - } - }, "static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", @@ -12902,90 +6272,12 @@ } } }, - "static-module": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/static-module/-/static-module-2.2.5.tgz", - "integrity": "sha512-D8vv82E/Kpmz3TXHKG8PPsCPg+RAX6cbCOyvjM6x04qZtQ47EtJFVwRsdov3n5d6/6ynrOY9XB4JkaZwB2xoRQ==", - "dev": true, - "requires": { - "concat-stream": "~1.6.0", - "convert-source-map": "^1.5.1", - "duplexer2": "~0.1.4", - "escodegen": "~1.9.0", - "falafel": "^2.1.0", - "has": "^1.0.1", - "magic-string": "^0.22.4", - "merge-source-map": "1.0.4", - "object-inspect": "~1.4.0", - "quote-stream": "~1.0.2", - "readable-stream": "~2.3.3", - "shallow-copy": "~0.0.1", - "static-eval": "^2.0.0", - "through2": "~2.0.3" - }, - "dependencies": { - "escodegen": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.1.tgz", - "integrity": "sha512-6hTjO1NAWkHnDk3OqQ4YrCuwwmGHL9S3nPlzBOUG/R44rda3wLNrfvQ5fkSGjyhHFKM7ALPKcKGrwvCLe0lC7Q==", - "dev": true, - "requires": { - "esprima": "^3.1.3", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - } - }, - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", - "dev": true - }, - "object-inspect": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.4.1.tgz", - "integrity": "sha512-wqdhLpfCUbEsoEwl3FXwGyv8ief1k/1aUdIPCqVnupM6e8l63BEJdiF/0swtn04/8p05tG/T0FrpTlfwvljOdw==", - "dev": true - } - } - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", - "dev": true - }, "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", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", - "dev": true, - "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } - }, - "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==", - "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" - } - }, "string-length": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", @@ -13118,86 +6410,13 @@ "boundary": "^1.0.1" } }, - "stylehacks": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", - "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", "dev": true, "requires": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "dev": true, - "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "svgo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", - "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "coa": "^2.0.2", - "css-select": "^2.0.0", - "css-select-base-adapter": "^0.1.1", - "css-tree": "1.0.0-alpha.37", - "csso": "^4.0.2", - "js-yaml": "^3.13.1", - "mkdirp": "~0.5.1", - "object.values": "^1.1.0", - "sax": "~1.2.4", - "stable": "^0.1.8", - "unquote": "~1.1.1", - "util.promisify": "~1.0.0" - }, - "dependencies": { - "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": { - "color-convert": "^1.9.0" - } - }, - "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": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "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" - } - } + "has-flag": "^2.0.0" } }, "symbol-tree": { @@ -13206,17 +6425,6 @@ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", "dev": true }, - "terser": { - "version": "3.17.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-3.17.0.tgz", - "integrity": "sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ==", - "dev": true, - "requires": { - "commander": "^2.19.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.10" - } - }, "test-exclude": { "version": "5.2.3", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz", @@ -13245,39 +6453,12 @@ "xtend": "~4.0.1" } }, - "timers-browserify": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", - "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", - "dev": true, - "requires": { - "setimmediate": "^1.0.4" - } - }, - "timsort": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", - "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", - "dev": true - }, - "tiny-inflate": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", - "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==", - "dev": true - }, "tmpl": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", "dev": true }, - "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", @@ -13326,12 +6507,6 @@ } } }, - "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", - "dev": true - }, "toml": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/toml/-/toml-2.3.6.tgz", @@ -13427,28 +6602,28 @@ } }, "ts-node": { - "version": "8.10.2", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.10.2.tgz", - "integrity": "sha512-ISJJGgkIpDdBhWVu3jufsWpK3Rzo7bdiIXJjQc0ynKxVOVcg2oIrf2H2cejminGrptVc6q6/uynAHNCuWGbpVA==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.0.2.tgz", + "integrity": "sha1-ns3414KgykyA0dZBy7I2r0rBt1Y=", "dev": true, "requires": { "arg": "^4.1.0", - "diff": "^4.0.1", + "diff": "^3.1.0", "make-error": "^1.1.1", - "source-map-support": "^0.5.17", - "yn": "3.1.1" + "source-map-support": "^0.5.6", + "yn": "^3.0.0" }, "dependencies": { - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", "dev": true }, "source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.10.tgz", + "integrity": "sha1-IhQIC8nVGDJRHuK6uW48L5NTEgw=", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -13605,12 +6780,6 @@ "tslib": "^1.8.1" } }, - "tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", - "dev": true - }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -13653,109 +6822,6 @@ "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", "dev": true }, - "uncss": { - "version": "0.17.3", - "resolved": "https://registry.npmjs.org/uncss/-/uncss-0.17.3.tgz", - "integrity": "sha512-ksdDWl81YWvF/X14fOSw4iu8tESDHFIeyKIeDrK6GEVTQvqJc1WlOEXqostNwOCi3qAj++4EaLsdAgPmUbEyog==", - "dev": true, - "requires": { - "commander": "^2.20.0", - "glob": "^7.1.4", - "is-absolute-url": "^3.0.1", - "is-html": "^1.1.0", - "jsdom": "^14.1.0", - "lodash": "^4.17.15", - "postcss": "^7.0.17", - "postcss-selector-parser": "6.0.2", - "request": "^2.88.0" - }, - "dependencies": { - "acorn": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", - "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", - "dev": true - }, - "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 - }, - "is-absolute-url": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", - "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", - "dev": true - }, - "jsdom": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-14.1.0.tgz", - "integrity": "sha512-O901mfJSuTdwU2w3Sn+74T+RnDVP+FuV5fH8tcPWyqrseRAb0s5xOtPgCFiPOtLcyK7CLIJwPyD83ZqQWvA5ng==", - "dev": true, - "requires": { - "abab": "^2.0.0", - "acorn": "^6.0.4", - "acorn-globals": "^4.3.0", - "array-equal": "^1.0.0", - "cssom": "^0.3.4", - "cssstyle": "^1.1.1", - "data-urls": "^1.1.0", - "domexception": "^1.0.1", - "escodegen": "^1.11.0", - "html-encoding-sniffer": "^1.0.2", - "nwsapi": "^2.1.3", - "parse5": "5.1.0", - "pn": "^1.1.0", - "request": "^2.88.0", - "request-promise-native": "^1.0.5", - "saxes": "^3.1.9", - "symbol-tree": "^3.2.2", - "tough-cookie": "^2.5.0", - "w3c-hr-time": "^1.0.1", - "w3c-xmlserializer": "^1.1.2", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^7.0.0", - "ws": "^6.1.2", - "xml-name-validator": "^3.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 - }, - "parse5": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", - "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", - "dev": true - }, - "whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "dev": true, - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "ws": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", - "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0" - } - } - } - }, "underscore": { "version": "1.8.3", "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", @@ -13772,44 +6838,6 @@ "xtend": "^4.0.1" } }, - "unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", - "dev": true - }, - "unicode-match-property-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", - "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", - "dev": true, - "requires": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" - } - }, - "unicode-match-property-value-ecmascript": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", - "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", - "dev": true - }, - "unicode-property-aliases-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", - "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", - "dev": true - }, - "unicode-trie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-0.3.1.tgz", - "integrity": "sha1-1nHd3YkQGgi6w3tqUWEBBgIFIIU=", - "dev": true, - "requires": { - "pako": "^0.2.5", - "tiny-inflate": "^1.0.0" - } - }, "unified": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/unified/-/unified-6.2.0.tgz", @@ -13836,18 +6864,6 @@ "set-value": "^2.0.1" } }, - "uniq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", - "dev": true - }, - "uniqs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", - "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", - "dev": true - }, "unist-util-is": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-2.1.2.tgz", @@ -13893,12 +6909,6 @@ "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=", "dev": true }, - "unquote": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", - "dev": true - }, "unset-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", @@ -13945,12 +6955,6 @@ } } }, - "upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true - }, "update-section": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/update-section/-/update-section-0.3.3.tgz", @@ -13972,39 +6976,12 @@ "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", "dev": true }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true - } - } - }, "use": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", "dev": true }, - "util": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", - "dev": true, - "requires": { - "inherits": "2.0.3" - } - }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -14029,12 +7006,6 @@ "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", "dev": true }, - "v8-compile-cache": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", - "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==", - "dev": true - }, "validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -14045,12 +7016,6 @@ "spdx-expression-parse": "^3.0.0" } }, - "vendors": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", - "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", - "dev": true - }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", @@ -14089,18 +7054,6 @@ "unist-util-stringify-position": "^1.1.1" } }, - "vlq": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", - "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==", - "dev": true - }, - "vm-browserify": { - "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 - }, "w3c-hr-time": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", @@ -14110,17 +7063,6 @@ "browser-process-hrtime": "^1.0.0" } }, - "w3c-xmlserializer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", - "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", - "dev": true, - "requires": { - "domexception": "^1.0.1", - "webidl-conversions": "^4.0.2", - "xml-name-validator": "^3.0.0" - } - }, "walker": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", @@ -14130,15 +7072,6 @@ "makeerror": "1.0.x" } }, - "wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", - "dev": true, - "requires": { - "defaults": "^1.0.3" - } - }, "webidl-conversions": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", @@ -14258,12 +7191,6 @@ "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 - }, "xtend": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", @@ -14313,9 +7240,9 @@ } }, "yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.0.0.tgz", + "integrity": "sha1-AHPGtW6SrtZS+9/WJDHy1rmnoJE=", "dev": true } } diff --git a/package.json b/package.json index fea09449f..b92767da1 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "docs-ts": "^0.5.1", "doctoc": "^1.4.0", "dtslint": "github:gcanti/dtslint", - "fast-check": "^1.23.0", + "fast-check": "^1.25.1", "glob": "^7.1.6", "jest": "^24.8.0", "mocha": "^5.2.0", diff --git a/test/property-test/NonEmptyArray.ts b/test/property-test/NonEmptyArray.ts deleted file mode 100644 index 3c6deb84c..000000000 --- a/test/property-test/NonEmptyArray.ts +++ /dev/null @@ -1,9 +0,0 @@ -import * as fc from 'fast-check' -import { NonEmptyArray } from '../../src/NonEmptyArray' - -/** - * Returns an `Arbitrary` that yelds a non empty array - */ -export function nonEmptyArray(arb: fc.Arbitrary): fc.Arbitrary> { - return fc.array(arb, 1, 100) as any -} diff --git a/test/property-test/Option.ts b/test/property-test/Option.ts deleted file mode 100644 index 2266bdcfc..000000000 --- a/test/property-test/Option.ts +++ /dev/null @@ -1,26 +0,0 @@ -import * as fc from 'fast-check' -import { Option, some, none } from '../../src/Option' - -/** - * Returns an `Arbitrary` that yelds only `some`s - * @since 0.0.2 - */ -export function getSome(arb: fc.Arbitrary): fc.Arbitrary> { - return arb.map(some) -} - -/** - * Returns an `Arbitrary` that yelds only `none`s - * @since 0.0.2 - */ -export function getNone(): fc.Arbitrary> { - return fc.constant(none) -} - -/** - * Returns an `Arbitrary` that yelds both `some`s and `none`s - * @since 0.0.2 - */ -export function getOption(arb: fc.Arbitrary): fc.Arbitrary> { - return fc.oneof(getNone(), getSome(arb)) -} From ffd1afc0dd4cc3d1c4cfb50ffa0423b5c5b94523 Mon Sep 17 00:00:00 2001 From: gcanti Date: Fri, 19 Jun 2020 15:25:24 +0200 Subject: [PATCH 083/106] add tests for seq / par instances --- CHANGELOG.md | 3 +- docs/modules/StateReaderTaskEither.ts.md | 59 ++- docs/modules/TaskThese.ts.md | 25 ++ jest.config.js | 2 +- src/StateReaderTaskEither.ts | 53 ++- src/TaskThese.ts | 19 +- test/ReaderTask.ts | 210 ++++----- test/ReaderTaskEither.ts | 55 +-- test/StateReaderTaskEither.ts | 15 +- test/Task.ts | 141 +++--- test/TaskEither.ts | 544 +++++++++++------------ test/TaskThese.ts | 128 +++--- test/util.ts | 70 +++ 13 files changed, 715 insertions(+), 609 deletions(-) create mode 100644 test/util.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index dbc68f6d3..3cbeca3b8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -203,8 +203,7 @@ high state of flux, you're at risk of it changing without notice. - add `comonadStore` instance (@gcanti) - `StateReaderTaskEither` - add `functorStateReaderTaskEither` instance (@gcanti) - - add `applicativeStateReaderTaskEitherPar` instance (@gcanti) - - add `applicativeStateReaderTaskEitherSeq` instance (@gcanti) + - add `applicativeStateReaderTaskEither` instance (@gcanti) - add `bifunctorStateReaderTaskEither` instance (@gcanti) - add `altStateReaderTaskEither` instance (@gcanti) - `Task` diff --git a/docs/modules/StateReaderTaskEither.ts.md b/docs/modules/StateReaderTaskEither.ts.md index 8cb3bf233..308baa2d2 100644 --- a/docs/modules/StateReaderTaskEither.ts.md +++ b/docs/modules/StateReaderTaskEither.ts.md @@ -28,6 +28,12 @@ Added in v2.0.0 - [chainFirst](#chainfirst) - [chainW](#chainw) - [flatten](#flatten) +- [MonadIO](#monadio) + - [fromIO](#fromio) +- [MonadTask](#monadtask) + - [fromTask](#fromtask) +- [MonadThrow](#monadthrow) + - [throwError](#throwerror) - [combinators](#combinators) - [chainEitherK](#chaineitherk) - [chainEitherKW](#chaineitherkw) @@ -68,8 +74,7 @@ Added in v2.0.0 - [URI](#uri) - [URI (type alias)](#uri-type-alias) - [altReaderStateTaskEither](#altreaderstatetaskeither) - - [applicativeStateReaderTaskEitherPar](#applicativestatereadertaskeitherpar) - - [applicativeStateReaderTaskEitherSeq](#applicativestatereadertaskeitherseq) + - [applicativeStateReaderTaskEither](#applicativestatereadertaskeither) - [bifunctorStateReaderTaskEither](#bifunctorstatereadertaskeither) - [functorStateReaderTaskEither](#functorstatereadertaskeither) - [stateReaderTaskEither](#statereadertaskeither) @@ -246,6 +251,42 @@ export declare const flatten: ( Added in v2.0.0 +# MonadIO + +## fromIO + +**Signature** + +```ts +export declare const fromIO: (fa: IO) => StateReaderTaskEither +``` + +Added in v2.7.0 + +# MonadTask + +## fromTask + +**Signature** + +```ts +export declare const fromTask: (fa: Task) => StateReaderTaskEither +``` + +Added in v2.7.0 + +# MonadThrow + +## throwError + +**Signature** + +```ts +export declare const throwError: (e: E) => StateReaderTaskEither +``` + +Added in v2.7.0 + # combinators ## chainEitherK @@ -676,22 +717,12 @@ export declare const altReaderStateTaskEither: Alt4<'StateReaderTaskEither'> Added in v2.7.0 -## applicativeStateReaderTaskEitherPar - -**Signature** - -```ts -export declare const applicativeStateReaderTaskEitherPar: Applicative4<'StateReaderTaskEither'> -``` - -Added in v2.7.0 - -## applicativeStateReaderTaskEitherSeq +## applicativeStateReaderTaskEither **Signature** ```ts -export declare const applicativeStateReaderTaskEitherSeq: Applicative4<'StateReaderTaskEither'> +export declare const applicativeStateReaderTaskEither: Applicative4<'StateReaderTaskEither'> ``` Added in v2.7.0 diff --git a/docs/modules/TaskThese.ts.md b/docs/modules/TaskThese.ts.md index 8818bdb57..1794575cd 100644 --- a/docs/modules/TaskThese.ts.md +++ b/docs/modules/TaskThese.ts.md @@ -19,6 +19,9 @@ Added in v2.4.0 - [mapLeft](#mapleft) - [Functor](#functor) - [map](#map) +- [MonadIO](#monadio) + - [fromIO](#fromio) + - [fromTask](#fromtask) - [combinators](#combinators) - [swap](#swap) - [constructors](#constructors) @@ -100,6 +103,28 @@ export declare const map: (f: (a: A) => B) => (fa: TaskThese) => Added in v2.4.0 +# MonadIO + +## fromIO + +**Signature** + +```ts +export declare const fromIO: (fa: IO) => TaskThese +``` + +Added in v2.7.0 + +## fromTask + +**Signature** + +```ts +export declare const fromTask: (fa: T.Task) => TaskThese +``` + +Added in v2.7.0 + # combinators ## swap diff --git a/jest.config.js b/jest.config.js index f052d0d55..1b4b65d24 100644 --- a/jest.config.js +++ b/jest.config.js @@ -25,5 +25,5 @@ module.exports = { statements: 100 } }, - modulePathIgnorePatterns: ['property-test', 'smoke-tests'] + modulePathIgnorePatterns: ['util', 'smoke-tests'] } diff --git a/src/StateReaderTaskEither.ts b/src/StateReaderTaskEither.ts index 9211b1023..7cb284484 100644 --- a/src/StateReaderTaskEither.ts +++ b/src/StateReaderTaskEither.ts @@ -25,6 +25,7 @@ import { TaskEither } from './TaskEither' import ReaderTaskEither = RTE.ReaderTaskEither import { Functor4 } from './Functor' import { Applicative4 } from './Applicative' +import { MonadIO4 } from './MonadIO' /* tslint:disable:readonly-array */ /** @@ -508,6 +509,24 @@ export const alt: ( RTE.alt(() => that()(s)) ) +/** + * @category MonadIO + * @since 2.7.0 + */ +export const fromIO: MonadIO4['fromIO'] = rightIO + +/** + * @category MonadTask + * @since 2.7.0 + */ +export const fromTask: MonadTask4['fromTask'] = rightTask + +/** + * @category MonadThrow + * @since 2.7.0 + */ +export const throwError: MonadThrow4['throwError'] = left + // ------------------------------------------------------------------------------------- // instances // ------------------------------------------------------------------------------------- @@ -515,8 +534,7 @@ export const alt: ( /* istanbul ignore next */ const map_: Monad4['map'] = (fa, f) => pipe(fa, map(f)) /* istanbul ignore next */ -const apPar_: Monad4['ap'] = (fab, fa) => pipe(fab, ap(fa)) -const apSeq_: Monad4['ap'] = (fab, fa) => chain_(fab, (f) => map_(fa, f)) +const ap_: Monad4['ap'] = (fab, fa) => pipe(fab, ap(fa)) /* istanbul ignore next */ const chain_: Monad4['chain'] = (ma, f) => pipe(ma, chain(f)) const of = right @@ -576,21 +594,10 @@ export const functorStateReaderTaskEither: Functor4 = { * @category instances * @since 2.7.0 */ -export const applicativeStateReaderTaskEitherPar: Applicative4 = { - URI, - map: map_, - ap: apPar_, - of -} - -/** - * @category instances - * @since 2.7.0 - */ -export const applicativeStateReaderTaskEitherSeq: Applicative4 = { +export const applicativeStateReaderTaskEither: Applicative4 = { URI, map: map_, - ap: apSeq_, + ap: ap_, of } @@ -623,14 +630,14 @@ export const stateReaderTaskEither: Monad4 & Bifunctor4 & Alt4 & URI, map: map_, of, - ap: apPar_, + ap: ap_, chain: chain_, bimap: bimap_, mapLeft: mapLeft_, alt: alt_, - fromIO: rightIO, - fromTask: rightTask, - throwError: left + fromIO, + fromTask, + throwError } // TODO: remove in v3 @@ -644,14 +651,14 @@ export const stateReaderTaskEitherSeq: typeof stateReaderTaskEither = { URI, map: map_, of, - ap: apSeq_, + ap: ap_, chain: chain_, bimap: bimap_, mapLeft: mapLeft_, alt: alt_, - fromIO: rightIO, - fromTask: rightTask, - throwError: left + fromIO, + fromTask, + throwError } // ------------------------------------------------------------------------------------- diff --git a/src/TaskThese.ts b/src/TaskThese.ts index a6e2a6a55..2cb22eeb3 100644 --- a/src/TaskThese.ts +++ b/src/TaskThese.ts @@ -8,7 +8,7 @@ import { Functor2 } from './Functor' import { IO } from './IO' import { IOEither } from './IOEither' import { Monad2C } from './Monad' -import { MonadTask2C } from './MonadTask' +import { MonadTask2C, MonadTask2 } from './MonadTask' import { Semigroup } from './Semigroup' import * as T from './Task' import * as TH from './These' @@ -20,6 +20,7 @@ import * as TH from './These' import These = TH.These import Task = T.Task import { Applicative2C, Applicative2 } from './Applicative' +import { MonadIO2 } from './MonadIO' /** * @category model @@ -167,6 +168,18 @@ export const mapLeft: (f: (e: E) => G) => (fa: TaskThese) => Task */ export const of: Applicative2['of'] = right +/** + * @category MonadIO + * @since 2.7.0 + */ +export const fromIO: MonadIO2['fromIO'] = rightIO + +/** + * @category MonadIO + * @since 2.7.0 + */ +export const fromTask: MonadTask2['fromTask'] = rightTask + // ------------------------------------------------------------------------------------- // instances // ------------------------------------------------------------------------------------- @@ -249,8 +262,8 @@ export function getMonad(SE: Semigroup): Monad2C & MonadTask2C { - describe('pipeable', () => { - it('map', async () => { - const double = (n: number): number => n * 2 - const x = await pipe(_.of(1), _.map(double))({})() - assert.deepStrictEqual(x, 2) - }) - - it('ap', async () => { - const double = (n: number): number => n * 2 - const x = await pipe(_.of(double), _.ap(_.of(1)))({})() - assert.deepStrictEqual(x, 2) - }) - - it('apFirst', async () => { - const x = await pipe(_.of('a'), _.apFirst(_.of('b')))({})() - assert.deepStrictEqual(x, 'a') - }) - - it('apSecond', async () => { - const x = await pipe(_.of('a'), _.apSecond(_.of('b')))({})() - assert.deepStrictEqual(x, 'b') - }) - - it('chain', async () => { - const f = (a: string) => _.of(a.length) - assert.deepStrictEqual(await pipe(_.of('foo'), _.chain(f))({})(), 3) - assert.deepStrictEqual(await _.readerTask.chain(_.of('foo'), f)({})(), 3) - }) - - it('chainFirst', async () => { - const f = (a: string) => _.of(a.length) - const x = await pipe(_.of('foo'), _.chainFirst(f))({})() - assert.deepStrictEqual(x, 'foo') - }) - - it('flatten', async () => { - const x = await pipe(_.of(_.of('a')), _.flatten)({})() - assert.deepStrictEqual(x, 'a') - }) + // ------------------------------------------------------------------------------------- + // pipeables + // ------------------------------------------------------------------------------------- + + it('map', async () => { + const double = (n: number): number => n * 2 + const x = await pipe(_.of(1), _.map(double))({})() + assert.deepStrictEqual(x, 2) + }) + + it('ap', async () => { + const double = (n: number): number => n * 2 + const x = await pipe(_.of(double), _.ap(_.of(1)))({})() + assert.deepStrictEqual(x, 2) + }) + + it('apFirst', async () => { + const x = await pipe(_.of('a'), _.apFirst(_.of('b')))({})() + assert.deepStrictEqual(x, 'a') }) + it('apSecond', async () => { + const x = await pipe(_.of('a'), _.apSecond(_.of('b')))({})() + assert.deepStrictEqual(x, 'b') + }) + + it('chain', async () => { + const f = (a: string) => _.of(a.length) + assert.deepStrictEqual(await pipe(_.of('foo'), _.chain(f))({})(), 3) + assert.deepStrictEqual(await _.readerTask.chain(_.of('foo'), f)({})(), 3) + }) + + it('chainFirst', async () => { + const f = (a: string) => _.of(a.length) + const x = await pipe(_.of('foo'), _.chainFirst(f))({})() + assert.deepStrictEqual(x, 'foo') + }) + + it('flatten', async () => { + const x = await pipe(_.of(_.of('a')), _.flatten)({})() + assert.deepStrictEqual(x, 'a') + }) + + it('of', async () => { + const e = await _.fromReader(R.of(1))({})() + assert.deepStrictEqual(e, 1) + }) + + it('fromIO', async () => { + const e = await _.fromIO(() => 1)({})() + assert.deepStrictEqual(e, 1) + }) + + // ------------------------------------------------------------------------------------- + // constructors + // ------------------------------------------------------------------------------------- + it('ask', async () => { const e = await _.ask()(1)() return assert.deepStrictEqual(e, 1) @@ -60,15 +76,6 @@ describe('ReaderTask', () => { return assert.deepStrictEqual(e, 3) }) - it('local', async () => { - const len = (s: string): number => s.length - const e = await pipe( - _.asks((n: number) => n + 1), - _.local(len) - )('aaa')() - assert.deepStrictEqual(e, 4) - }) - it('fromTask', async () => { const e = await _.fromTask(T.of(1))({})() assert.deepStrictEqual(e, 1) @@ -79,68 +86,17 @@ describe('ReaderTask', () => { assert.deepStrictEqual(e, 1) }) - it('getSemigroup', async () => { - const M = _.getSemigroup(semigroupString) - const e = await M.concat(_.of('a'), _.of('b'))({})() - assert.deepStrictEqual(e, 'ab') - }) + // ------------------------------------------------------------------------------------- + // combinators + // ------------------------------------------------------------------------------------- - it('getMonoid', async () => { - const M = _.getMonoid(monoidString) - const e = await M.concat(_.of('a'), M.empty)({})() - assert.deepStrictEqual(e, 'a') - const e2 = await M.concat(M.empty, _.of('b'))({})() - assert.deepStrictEqual(e2, 'b') - const e3 = await M.concat(_.of('a'), _.of('b'))({})() - assert.deepStrictEqual(e3, 'ab') - }) - - it('of', async () => { - const e = await _.fromReader(R.of(1))({})() - assert.deepStrictEqual(e, 1) - }) - - it('sequence parallel', async () => { - // tslint:disable-next-line: readonly-array - const log: Array = [] - const append = (message: string): _.ReaderTask<{}, number> => _.fromTask(() => Promise.resolve(log.push(message))) - const t1 = pipe( - append('start 1'), - _.chain(() => append('end 1')) - ) - const t2 = pipe( - append('start 2'), - _.chain(() => append('end 2')) - ) - const sequenceParallel = A.sequence(_.applicativeReaderTaskPar) - const ns = await sequenceParallel([t1, t2])({})() - assert.deepStrictEqual(ns, [3, 4]) - assert.deepStrictEqual(log, ['start 1', 'start 2', 'end 1', 'end 2']) - }) - - it('sequence series', async () => { - // tslint:disable-next-line: readonly-array - const log: Array = [] - const append = (message: string): _.ReaderTask<{}, number> => _.fromTask(() => Promise.resolve(log.push(message))) - const t1 = pipe( - append('start 1'), - _.chain(() => append('end 1')) - ) - const t2 = pipe( - append('start 2'), - _.chain(() => append('end 2')) - ) - const sequenceSeries = A.sequence(_.applicativeReaderTaskSeq) - const ns = await sequenceSeries([t1, t2])({})() - assert.deepStrictEqual(ns, [2, 4]) - assert.deepStrictEqual(log, ['start 1', 'end 1', 'start 2', 'end 2']) - }) - - describe('MonadIO', () => { - it('fromIO', async () => { - const e = await _.fromIO(() => 1)({})() - assert.deepStrictEqual(e, 1) - }) + it('local', async () => { + const len = (s: string): number => s.length + const e = await pipe( + _.asks((n: number) => n + 1), + _.local(len) + )('aaa')() + assert.deepStrictEqual(e, 4) }) it('chainIOK', async () => { @@ -166,4 +122,32 @@ describe('ReaderTask', () => { const x = await pipe(_.of('a'), _.chain(f))({})() assert.deepStrictEqual(x, 1) }) + + // ------------------------------------------------------------------------------------- + // instances + // ------------------------------------------------------------------------------------- + + it('getSemigroup', async () => { + const M = _.getSemigroup(semigroupString) + const e = await M.concat(_.of('a'), _.of('b'))({})() + assert.deepStrictEqual(e, 'ab') + }) + + it('getMonoid', async () => { + const M = _.getMonoid(monoidString) + const e = await M.concat(_.of('a'), M.empty)({})() + assert.deepStrictEqual(e, 'a') + const e2 = await M.concat(M.empty, _.of('b'))({})() + assert.deepStrictEqual(e2, 'b') + const e3 = await M.concat(_.of('a'), _.of('b'))({})() + assert.deepStrictEqual(e3, 'ab') + }) + + it('applicativeTaskEitherSeq', async () => { + await assertSeq(_.applicativeReaderTaskSeq, { fromTask: _.fromTask }, (fa) => fa(null)()) + }) + + it('applicativeTaskEitherPar', async () => { + await assertPar(_.applicativeReaderTaskPar, { fromTask: _.fromTask }, (fa) => fa(null)()) + }) }) diff --git a/test/ReaderTaskEither.ts b/test/ReaderTaskEither.ts index e7c088a04..3431ef403 100644 --- a/test/ReaderTaskEither.ts +++ b/test/ReaderTaskEither.ts @@ -13,6 +13,7 @@ import { semigroupString, semigroupSum } from '../src/Semigroup' import * as T from '../src/Task' import * as TE from '../src/TaskEither' import * as RT from '../src/ReaderTask' +import { assertSeq, assertPar } from './util' describe('ReaderTaskEither', () => { describe('pipeables', () => { @@ -142,6 +143,22 @@ describe('ReaderTaskEither', () => { }) }) + // ------------------------------------------------------------------------------------- + // instances + // ------------------------------------------------------------------------------------- + + it('applicativeReaderTaskEitherSeq', async () => { + await assertSeq(_.applicativeReaderTaskEitherSeq, { fromTask: _.fromTask }, (fa) => fa(null)()) + }) + + it('applicativeReaderTaskEitherPar', async () => { + await assertPar(_.applicativeReaderTaskEitherPar, { fromTask: _.fromTask }, (fa) => fa(null)()) + }) + + // ------------------------------------------------------------------------------------- + // constructors + // ------------------------------------------------------------------------------------- + it('ask', async () => { const e = await _.ask()(1)() return assert.deepStrictEqual(e, E.right(1)) @@ -245,44 +262,6 @@ describe('ReaderTaskEither', () => { assert.deepStrictEqual(e2, E.right(5)) }) - it('applicativeReaderTaskEitherPar', async () => { - // tslint:disable-next-line: readonly-array - const log: Array = [] - const append = (message: string): _.ReaderTaskEither<{}, void, number> => - _.rightTask(() => Promise.resolve(log.push(message))) - const t1 = pipe( - append('start 1'), - _.chain(() => append('end 1')) - ) - const t2 = pipe( - append('start 2'), - _.chain(() => append('end 2')) - ) - const sequenceParallel = A.sequence(_.applicativeReaderTaskEitherPar) - const ns = await sequenceParallel([t1, t2])({})() - assert.deepStrictEqual(ns, E.right([3, 4])) - assert.deepStrictEqual(log, ['start 1', 'start 2', 'end 1', 'end 2']) - }) - - it('applicativeReaderTaskEitherSeq', async () => { - // tslint:disable-next-line: readonly-array - const log: Array = [] - const append = (message: string): _.ReaderTaskEither<{}, void, number> => - _.rightTask(() => Promise.resolve(log.push(message))) - const t1 = pipe( - append('start 1'), - _.chain(() => append('end 1')) - ) - const t2 = pipe( - append('start 2'), - _.chain(() => append('end 2')) - ) - const sequenceSeries = A.sequence(_.applicativeReaderTaskEitherSeq) - const ns = await sequenceSeries([t1, t2])({})() - assert.deepStrictEqual(ns, E.right([2, 4])) - assert.deepStrictEqual(log, ['start 1', 'end 1', 'start 2', 'end 2']) - }) - describe('MonadIO', () => { it('fromIO', async () => { const e = await _.fromIO(() => 1)({})() diff --git a/test/StateReaderTaskEither.ts b/test/StateReaderTaskEither.ts index 72f0e975b..de8aee6c2 100644 --- a/test/StateReaderTaskEither.ts +++ b/test/StateReaderTaskEither.ts @@ -12,6 +12,7 @@ import * as _ from '../src/StateReaderTaskEither' import * as T from '../src/Task' import * as TE from '../src/TaskEither' import * as A from '../src/Array' +import { assertSeq } from './util' describe('StateReaderTaskEither', () => { describe('pipeables', () => { @@ -138,6 +139,18 @@ describe('StateReaderTaskEither', () => { }) }) + // ------------------------------------------------------------------------------------- + // instances + // ------------------------------------------------------------------------------------- + + it('applicativeStateReaderTaskEither', async () => { + await assertSeq(_.applicativeStateReaderTaskEither, { fromTask: _.fromTask }, (fa) => fa(null)(null)()) + }) + + // ------------------------------------------------------------------------------------- + // utils + // ------------------------------------------------------------------------------------- + it('run', async () => { const ma = _.right('aaa') const e = await ma({})({})() @@ -157,7 +170,7 @@ describe('StateReaderTaskEither', () => { append('start 2'), _.chain(() => append('end 2')) ) - const sequence = A.sequence(_.applicativeStateReaderTaskEitherSeq) + const sequence = A.sequence(_.applicativeStateReaderTaskEither) assert.deepStrictEqual(await sequence([t1, t2])({})({})(), E.right([[2, 4], {}])) assert.deepStrictEqual(log, ['start 1', 'end 1', 'start 2', 'end 2']) }) diff --git a/test/Task.ts b/test/Task.ts index 740960547..3c6d48f44 100644 --- a/test/Task.ts +++ b/test/Task.ts @@ -1,9 +1,9 @@ import * as assert from 'assert' -import * as A from '../src/Array' import * as I from '../src/IO' import { monoidString } from '../src/Monoid' import { pipe } from '../src/function' import * as _ from '../src/Task' +import { assertSeq, assertPar } from './util' const delayReject = (n: number, a: A): _.Task => () => new Promise((_, reject) => { @@ -13,63 +13,79 @@ const delayReject = (n: number, a: A): _.Task => () => const delay = (millis: number, a: A): _.Task => _.delay(millis)(_.of(a)) describe('Task', () => { - describe('pipeables', () => { - it('map', async () => { - const double = (n: number): number => n * 2 - const x = await pipe(delay(1, 2), _.map(double))() - assert.deepStrictEqual(x, 4) - }) + // ------------------------------------------------------------------------------------- + // pipeables + // ------------------------------------------------------------------------------------- - it('ap', async () => { - const double = (n: number): number => n * 2 - const x = await pipe(delay(1, double), _.ap(delay(0, 2)))() - assert.deepStrictEqual(x, 4) - }) + it('map', async () => { + const double = (n: number): number => n * 2 + assert.deepStrictEqual(await pipe(delay(1, 2), _.map(double))(), 4) + }) - it('apFirst', async () => { - const x = await pipe(_.of('a'), _.apFirst(_.of('b')))() - assert.deepStrictEqual(x, 'a') - }) + it('ap', async () => { + const double = (n: number): number => n * 2 + assert.deepStrictEqual(await pipe(delay(1, double), _.ap(delay(0, 2)))(), 4) + }) - it('apSecond', async () => { - const x = await pipe(_.of('a'), _.apSecond(_.of('b')))() - assert.deepStrictEqual(x, 'b') - }) + it('apFirst', async () => { + assert.deepStrictEqual(await pipe(_.of('a'), _.apFirst(_.of('b')))(), 'a') + }) - it('chain', async () => { - const f = (n: number): _.Task => () => Promise.resolve(n * 2) - const x = await pipe(delay(1, 2), _.chain(f))() - return assert.deepStrictEqual(x, 4) - }) + it('apSecond', async () => { + assert.deepStrictEqual(await pipe(_.of('a'), _.apSecond(_.of('b')))(), 'b') + }) - it('chainFirst', async () => { - const f = (n: number): _.Task => () => Promise.resolve(n * 2) - const x = await pipe(delay(1, 2), _.chainFirst(f))() - return assert.deepStrictEqual(x, 2) - }) + it('chain', async () => { + const f = (n: number): _.Task => () => Promise.resolve(n * 2) + return assert.deepStrictEqual(await pipe(delay(1, 2), _.chain(f))(), 4) + }) - it('flatten', async () => { - const x = await pipe(_.of(_.of('a')), _.flatten)() - return assert.deepStrictEqual(x, 'a') - }) + it('chainFirst', async () => { + const f = (n: number): _.Task => () => Promise.resolve(n * 2) + return assert.deepStrictEqual(await pipe(delay(1, 2), _.chainFirst(f))(), 2) + }) + + it('flatten', async () => { + return assert.deepStrictEqual(await pipe(_.of(_.of('a')), _.flatten)(), 'a') + }) + + it('fromIO', async () => { + const io = () => 1 + const t = _.fromIO(io) + assert.deepStrictEqual(await t(), 1) + }) + + it('fromTask', async () => { + const io = () => 1 + const t = _.fromIO(io) + assert.deepStrictEqual(_.fromTask(t), t) + }) + + // ------------------------------------------------------------------------------------- + // instances + // ------------------------------------------------------------------------------------- + + it('applicativeTaskSeq', async () => { + await assertSeq(_.applicativeTaskSeq, { fromTask: _.fromTask }, (fa) => fa()) + }) + + it('applicativeTaskPar', async () => { + await assertPar(_.applicativeTaskPar, { fromTask: _.fromTask }, (fa) => fa()) }) describe('getRaceMonoid', () => { const M = _.getRaceMonoid() it('concat', async () => { - const x = await M.concat(delay(10, 1), delay(10, 2))() - return assert.deepStrictEqual(x, 1) + assert.deepStrictEqual(await M.concat(delay(10, 1), delay(10, 2))(), 1) }) it('empty (right)', async () => { - const x = await M.concat(delay(10, 1), M.empty)() - return assert.deepStrictEqual(x, 1) + assert.deepStrictEqual(await M.concat(delay(10, 1), M.empty)(), 1) }) it('empty (left)', async () => { - const x = await M.concat(M.empty, delay(10, 1))() - return assert.deepStrictEqual(x, 1) + assert.deepStrictEqual(await M.concat(M.empty, delay(10, 1))(), 1) }) it('concat (rejected)', async () => { @@ -85,55 +101,24 @@ describe('Task', () => { const M = _.getMonoid(monoidString) it('concat', async () => { - const x = await M.concat(delay(10, 'a'), delay(10, 'b'))() - return assert.deepStrictEqual(x, 'ab') + assert.deepStrictEqual(await M.concat(delay(10, 'a'), delay(10, 'b'))(), 'ab') }) it('empty (right)', async () => { - const x = await M.concat(delay(10, 'a'), M.empty)() - return assert.deepStrictEqual(x, 'a') + assert.deepStrictEqual(await M.concat(delay(10, 'a'), M.empty)(), 'a') }) it('empty (left)', async () => { - const x = await M.concat(M.empty, delay(10, 'a'))() - return assert.deepStrictEqual(x, 'a') + assert.deepStrictEqual(await M.concat(M.empty, delay(10, 'a'))(), 'a') }) }) - it('applicativeTaskSeq', async () => { - // tslint:disable-next-line: readonly-array - const log: Array = [] - const append = (message: string): _.Task => () => Promise.resolve(log.push(message)) - const t1 = pipe( - append('start 1'), - _.chain(() => append('end 1')) - ) - const t2 = pipe( - append('start 2'), - _.chain(() => append('end 2')) - ) - const sequenceSeries = A.sequence(_.applicativeTaskSeq) - const x = await sequenceSeries([t1, t2])() - assert.deepStrictEqual(x, [2, 4]) - assert.deepStrictEqual(log, ['start 1', 'end 1', 'start 2', 'end 2']) - }) - - it('fromIO', async () => { - const io = () => 1 - const task = _.fromIO(io) - const x = await task() - assert.deepStrictEqual(x, 1) - }) - - it('fromTask', async () => { - const io = () => 1 - const t = _.fromIO(io) - assert.deepStrictEqual(_.fromTask(t), t) - }) + // ------------------------------------------------------------------------------------- + // combinators + // ------------------------------------------------------------------------------------- it('chainIOK', async () => { const f = (s: string) => I.of(s.length) - const x = await pipe(_.of('a'), _.chainIOK(f))() - assert.deepStrictEqual(x, 1) + assert.deepStrictEqual(await pipe(_.of('a'), _.chainIOK(f))(), 1) }) }) diff --git a/test/TaskEither.ts b/test/TaskEither.ts index 0f7f7d386..76d5e42ae 100644 --- a/test/TaskEither.ts +++ b/test/TaskEither.ts @@ -9,214 +9,228 @@ import { semigroupString, semigroupSum } from '../src/Semigroup' import * as _ from '../src/TaskEither' import * as IE from '../src/IOEither' import { pipe } from '../src/function' +import { assertSeq, assertPar } from './util' describe('TaskEither', () => { - describe('pipeables', () => { - it('alt', async () => { - const x = await pipe( + // ------------------------------------------------------------------------------------- + // pipeables + // ------------------------------------------------------------------------------------- + + it('alt', async () => { + assert.deepStrictEqual( + await pipe( _.left('a'), _.alt(() => _.right(1)) - )() - assert.deepStrictEqual(x, E.right(1)) - }) + )(), + E.right(1) + ) + }) - it('map', async () => { - const double = (n: number): number => n * 2 - const x = await pipe(_.right(1), _.map(double))() - assert.deepStrictEqual(x, E.right(2)) - }) + it('map', async () => { + const double = (n: number): number => n * 2 + assert.deepStrictEqual(await pipe(_.right(1), _.map(double))(), E.right(2)) + }) - it('ap', async () => { - const double = (n: number): number => n * 2 - const x = await pipe(_.right(double), _.ap(_.right(1)))() - assert.deepStrictEqual(x, E.right(2)) - }) + it('ap', async () => { + const double = (n: number): number => n * 2 + assert.deepStrictEqual(await pipe(_.right(double), _.ap(_.right(1)))(), E.right(2)) + }) - it('apFirst', async () => { - const x = await pipe(_.right('a'), _.apFirst(_.right('b')))() - assert.deepStrictEqual(x, E.right('a')) - }) + it('apFirst', async () => { + assert.deepStrictEqual(await pipe(_.right('a'), _.apFirst(_.right('b')))(), E.right('a')) + }) - it('apSecond', async () => { - const x = await pipe(_.right('a'), _.apSecond(_.right('b')))() - assert.deepStrictEqual(x, E.right('b')) - }) + it('apSecond', async () => { + assert.deepStrictEqual(await pipe(_.right('a'), _.apSecond(_.right('b')))(), E.right('b')) + }) - it('chain', async () => { - const e1 = await pipe( + it('chain', async () => { + assert.deepStrictEqual( + await pipe( _.right('foo'), _.chain((a) => (a.length > 2 ? _.right(a.length) : _.left('foo'))) - )() - assert.deepStrictEqual(e1, E.right(3)) - const e2 = await pipe( + )(), + E.right(3) + ) + assert.deepStrictEqual( + await pipe( _.right('a'), _.chain((a) => (a.length > 2 ? _.right(a.length) : _.left('foo'))) - )() - assert.deepStrictEqual(e2, E.left('foo')) - }) + )(), + E.left('foo') + ) + }) - it('chainFirst', async () => { - const e1 = await pipe( + it('chainFirst', async () => { + assert.deepStrictEqual( + await pipe( _.right('foo'), _.chainFirst((a) => (a.length > 2 ? _.right(a.length) : _.left('foo'))) - )() - assert.deepStrictEqual(e1, E.right('foo')) - }) + )(), + E.right('foo') + ) + }) - it('flatten', async () => { - const e1 = await pipe(_.right(_.right('a')), _.flatten)() - assert.deepStrictEqual(e1, E.right('a')) - }) + it('flatten', async () => { + assert.deepStrictEqual(await pipe(_.right(_.right('a')), _.flatten)(), E.right('a')) + }) - it('bimap', async () => { - const f = (s: string): number => s.length - const g = (n: number): boolean => n > 2 + it('bimap', async () => { + const f = (s: string): number => s.length + const g = (n: number): boolean => n > 2 - const e1 = await pipe(_.right(1), _.bimap(f, g))() - assert.deepStrictEqual(e1, E.right(false)) - const e2 = await pipe(_.left('foo'), _.bimap(f, g))() - assert.deepStrictEqual(e2, E.left(3)) - }) + assert.deepStrictEqual(await pipe(_.right(1), _.bimap(f, g))(), E.right(false)) + assert.deepStrictEqual(await pipe(_.left('foo'), _.bimap(f, g))(), E.left(3)) + }) - it('mapLeft', async () => { - const double = (n: number): number => n * 2 - const e = await pipe(_.left(1), _.mapLeft(double))() - assert.deepStrictEqual(e, E.left(2)) - }) + it('mapLeft', async () => { + const double = (n: number): number => n * 2 + assert.deepStrictEqual(await pipe(_.left(1), _.mapLeft(double))(), E.left(2)) + }) - it('fromPredicate', async () => { - const gt2 = _.fromPredicate( - (n: number) => n >= 2, - (n) => `Invalid number ${n}` - ) - const e1 = await gt2(3)() - assert.deepStrictEqual(e1, E.right(3)) - const e2 = await gt2(1)() - assert.deepStrictEqual(e2, E.left('Invalid number 1')) - - // refinements - const isNumber = (u: string | number): u is number => typeof u === 'number' - const e3 = await _.fromPredicate(isNumber, () => 'not a number')(4)() - assert.deepStrictEqual(e3, E.right(4)) - }) + it('fromPredicate', async () => { + const gt2 = _.fromPredicate( + (n: number) => n >= 2, + (n) => `Invalid number ${n}` + ) + assert.deepStrictEqual(await gt2(3)(), E.right(3)) + assert.deepStrictEqual(await gt2(1)(), E.left('Invalid number 1')) + // refinements + const isNumber = (u: string | number): u is number => typeof u === 'number' + assert.deepStrictEqual(await _.fromPredicate(isNumber, () => 'not a number')(4)(), E.right(4)) + }) - it('filterOrElse', async () => { - const e1 = await pipe( + it('filterOrElse', async () => { + assert.deepStrictEqual( + await pipe( _.right(12), _.filterOrElse( (n) => n > 10, () => 'a' ) - )() - assert.deepStrictEqual(e1, E.right(12)) - const e2 = await pipe( + )(), + E.right(12) + ) + assert.deepStrictEqual( + await pipe( _.right(7), _.filterOrElse( (n) => n > 10, () => 'a' ) - )() - assert.deepStrictEqual(e2, E.left('a')) - }) + )(), + E.left('a') + ) + }) - it('fromOption', async () => { - const e1 = await pipe( + it('fromOption', async () => { + assert.deepStrictEqual( + await pipe( none, _.fromOption(() => 'none') - )() - assert.deepStrictEqual(e1, E.left('none')) - const e2 = await pipe( + )(), + E.left('none') + ) + assert.deepStrictEqual( + await pipe( some(1), _.fromOption(() => 'none') - )() - assert.deepStrictEqual(e2, E.right(1)) - }) + )(), + E.right(1) + ) }) - describe('bracket', () => { - // tslint:disable-next-line: readonly-array - let log: Array = [] + // ------------------------------------------------------------------------------------- + // instances + // ------------------------------------------------------------------------------------- - const acquireFailure = _.left('acquire failure') - const acquireSuccess = _.right({ res: 'acquire success' }) - const useSuccess = () => _.right('use success') - const useFailure = () => _.left('use failure') - const releaseSuccess = () => - _.rightIO(() => { - log.push('release success') - }) - const releaseFailure = () => _.left('release failure') + describe('getTaskValidation', () => { + const TV = _.getTaskValidation(semigroupString) - beforeEach(() => { - log = [] + it('ap', async () => { + const fab = _.left('a') + const fa = _.left('b') + assert.deepStrictEqual(await TV.ap(fab, fa)(), E.left('ab')) }) - it('should return the acquire error if acquire fails', async () => { - const e = await _.bracket(acquireFailure, useSuccess, releaseSuccess)() - assert.deepStrictEqual(e, E.left('acquire failure')) + it('alt', async () => { + assert.deepStrictEqual(await TV.alt(_.right(1), () => _.right(2))(), E.right(1)) + assert.deepStrictEqual(await TV.alt(_.left('a'), () => _.right(2))(), E.right(2)) + assert.deepStrictEqual(await TV.alt(_.right(1), () => _.left('b'))(), E.right(1)) + assert.deepStrictEqual(await TV.alt(_.left('a'), () => _.left('b'))(), E.left('ab')) }) + }) - it('body and release must not be called if acquire fails', async () => { - await _.bracket(acquireFailure, useSuccess, releaseSuccess)() - assert.deepStrictEqual(log, []) + describe('getFilterable', () => { + const F_ = _.getFilterable(A.getMonoid()) + const { filter } = pipeable(F_) + + it('filter', async () => { + assert.deepStrictEqual( + await pipe( + _.right(1), + filter((n) => n > 0) + )(), + await _.right(1)() + ) + assert.deepStrictEqual( + await pipe( + _.right(-1), + filter((n) => n > 0) + )(), + await _.left([])() + ) + assert.deepStrictEqual( + await pipe( + _.left(['a']), + filter((n) => n > 0) + )(), + await _.left(['a'])() + ) }) + }) - it('should return the use error if use fails and release does not', async () => { - const e = await _.bracket(acquireSuccess, useFailure, releaseSuccess)() - assert.deepStrictEqual(e, E.left('use failure')) + describe('getSemigroup', () => { + it('concat', async () => { + const S = _.getSemigroup(semigroupSum) + assert.deepStrictEqual(await S.concat(_.left('a'), _.left('b'))(), E.left('a')) + assert.deepStrictEqual(await S.concat(_.left('a'), _.right(2))(), E.right(2)) + assert.deepStrictEqual(await S.concat(_.right(1), _.left('b'))(), E.right(1)) + assert.deepStrictEqual(await S.concat(_.right(1), _.right(2))(), E.right(3)) }) + }) - it('should return the release error if both use and release fail', async () => { - const e = await _.bracket(acquireSuccess, useFailure, releaseFailure)() - assert.deepStrictEqual(e, E.left('release failure')) + describe('getApplyMonoid', () => { + const M = _.getApplyMonoid(monoidString) + + it('concat (right)', async () => { + return assert.deepStrictEqual(await M.concat(_.right('a'), _.right('b'))(), E.right('ab')) }) - it('release must be called if the body returns', async () => { - await _.bracket(acquireSuccess, useSuccess, releaseSuccess)() - assert.deepStrictEqual(log, ['release success']) + it('concat (left)', async () => { + return assert.deepStrictEqual(await M.concat(_.right('a'), _.left('b'))(), E.left('b')) }) - it('release must be called if the body throws', async () => { - await _.bracket(acquireSuccess, useFailure, releaseSuccess)() - assert.deepStrictEqual(log, ['release success']) + it('empty (right)', async () => { + return assert.deepStrictEqual(await M.concat(_.right('a'), M.empty)(), E.right('a')) }) - it('should return the release error if release fails', async () => { - const e = await _.bracket(acquireSuccess, useSuccess, releaseFailure)() - assert.deepStrictEqual(e, E.left('release failure')) + it('empty (left)', async () => { + return assert.deepStrictEqual(await M.concat(M.empty, _.right('a'))(), E.right('a')) }) }) - it('orElse', async () => { - const e1 = await pipe( - _.left('foo'), - _.orElse((l) => _.right(l.length)) - )() - assert.deepStrictEqual(e1, E.right(3)) - const e2 = await pipe( - _.right(1), - _.orElse(() => _.right(2)) - )() - assert.deepStrictEqual(e2, E.right(1)) + it('applicativeTaskEitherSeq', async () => { + await assertSeq(_.applicativeTaskEitherSeq, { fromTask: _.fromTask }, (fa) => fa()) }) - it('leftIO', async () => { - const e = await _.leftIO(I.of(1))() - assert.deepStrictEqual(e, E.left(1)) + it('applicativeTaskEitherPar', async () => { + await assertPar(_.applicativeTaskEitherPar, { fromTask: _.fromTask }, (fa) => fa()) }) - it('tryCatch', async () => { - const e1 = await _.tryCatch( - () => Promise.resolve(1), - () => 'error' - )() - assert.deepStrictEqual(e1, E.right(1)) - const e2 = await _.tryCatch( - () => Promise.reject(undefined), - () => 'error' - )() - assert.deepStrictEqual(e2, E.left('error')) - }) + // ------------------------------------------------------------------------------------- + // utils + // ------------------------------------------------------------------------------------- it('taskify', async () => { const api1 = (_path: string, callback: (err: Error | null | undefined, result?: string) => void): void => { @@ -228,12 +242,9 @@ describe('TaskEither', () => { const api3 = (_path: string, callback: (err: Error | null | undefined, result?: string) => void): void => { callback(new Error('ko')) } - const e1 = await _.taskify(api1)('foo')() - assert.deepStrictEqual(e1, E.right('ok')) - const e2 = await _.taskify(api2)('foo')() - assert.deepStrictEqual(e2, E.right('ok')) - const e3 = await _.taskify(api3)('foo')() - assert.deepStrictEqual(e3, E.left(new Error('ko'))) + assert.deepStrictEqual(await _.taskify(api1)('foo')(), E.right('ok')) + assert.deepStrictEqual(await _.taskify(api2)('foo')(), E.right('ok')) + assert.deepStrictEqual(await _.taskify(api3)('foo')(), E.left(new Error('ko'))) }) it('composed taskify', async () => { @@ -242,180 +253,143 @@ describe('TaskEither', () => { } const taskApi = _.taskify(api)() - const e1 = await taskApi() - assert.deepStrictEqual(e1, E.right('ok')) - const e2 = await taskApi() - assert.deepStrictEqual(e2, E.right('ok')) + assert.deepStrictEqual(await taskApi(), E.right('ok')) + assert.deepStrictEqual(await taskApi(), E.right('ok')) }) - it('fromIOEither', async () => { - const e1 = await _.fromIOEither(() => E.right(1))() - assert.deepStrictEqual(e1, E.right(1)) - const e2 = await _.fromIOEither(() => E.left('foo'))() - assert.deepStrictEqual(e2, E.left('foo')) - }) + describe('bracket', () => { + // tslint:disable-next-line: readonly-array + let log: Array = [] - describe('getSemigroup', () => { - it('concat', async () => { - const S = _.getSemigroup(semigroupSum) - const e1 = await S.concat(_.left('a'), _.left('b'))() - assert.deepStrictEqual(e1, E.left('a')) + const acquireFailure = _.left('acquire failure') + const acquireSuccess = _.right({ res: 'acquire success' }) + const useSuccess = () => _.right('use success') + const useFailure = () => _.left('use failure') + const releaseSuccess = () => + _.rightIO(() => { + log.push('release success') + }) + const releaseFailure = () => _.left('release failure') - const e2 = await S.concat(_.left('a'), _.right(2))() - assert.deepStrictEqual(e2, E.right(2)) + beforeEach(() => { + log = [] + }) - const e3 = await S.concat(_.right(1), _.left('b'))() - assert.deepStrictEqual(e3, E.right(1)) + it('should return the acquire error if acquire fails', async () => { + assert.deepStrictEqual(await _.bracket(acquireFailure, useSuccess, releaseSuccess)(), E.left('acquire failure')) + }) - const e4 = await S.concat(_.right(1), _.right(2))() - assert.deepStrictEqual(e4, E.right(3)) + it('body and release must not be called if acquire fails', async () => { + await _.bracket(acquireFailure, useSuccess, releaseSuccess)() + assert.deepStrictEqual(log, []) }) - }) - describe('getApplyMonoid', () => { - const M = _.getApplyMonoid(monoidString) + it('should return the use error if use fails and release does not', async () => { + assert.deepStrictEqual(await _.bracket(acquireSuccess, useFailure, releaseSuccess)(), E.left('use failure')) + }) - it('concat (right)', async () => { - const x = await M.concat(_.right('a'), _.right('b'))() - return assert.deepStrictEqual(x, E.right('ab')) + it('should return the release error if both use and release fail', async () => { + assert.deepStrictEqual(await _.bracket(acquireSuccess, useFailure, releaseFailure)(), E.left('release failure')) }) - it('concat (left)', async () => { - const x = await M.concat(_.right('a'), _.left('b'))() - return assert.deepStrictEqual(x, E.left('b')) + it('release must be called if the body returns', async () => { + await _.bracket(acquireSuccess, useSuccess, releaseSuccess)() + assert.deepStrictEqual(log, ['release success']) }) - it('empty (right)', async () => { - const x = await M.concat(_.right('a'), M.empty)() - return assert.deepStrictEqual(x, E.right('a')) + it('release must be called if the body throws', async () => { + await _.bracket(acquireSuccess, useFailure, releaseSuccess)() + assert.deepStrictEqual(log, ['release success']) }) - it('empty (left)', async () => { - const x = await M.concat(M.empty, _.right('a'))() - return assert.deepStrictEqual(x, E.right('a')) + it('should return the release error if release fails', async () => { + assert.deepStrictEqual(await _.bracket(acquireSuccess, useSuccess, releaseFailure)(), E.left('release failure')) }) }) - it('applicativeTaskEitherPar', async () => { - // tslint:disable-next-line: readonly-array - const log: Array = [] - const append = (message: string): _.TaskEither => - _.rightTask(() => Promise.resolve(log.push(message))) - const t1 = pipe( - append('start 1'), - _.chain(() => append('end 1')) - ) - const t2 = pipe( - append('start 2'), - _.chain(() => append('end 2')) - ) - const sequenceParallel = A.sequence(_.applicativeTaskEitherPar) - const x = await sequenceParallel([t1, t2])() - assert.deepStrictEqual(x, E.right([3, 4])) - assert.deepStrictEqual(log, ['start 1', 'start 2', 'end 1', 'end 2']) - }) + // ------------------------------------------------------------------------------------- + // combinators + // ------------------------------------------------------------------------------------- - it('applicativeTaskEitherSeq', async () => { - // tslint:disable-next-line: readonly-array - const log: Array = [] - const append = (message: string): _.TaskEither => - _.rightTask(() => Promise.resolve(log.push(message))) - const t1 = pipe( - append('start 1'), - _.chain(() => append('end 1')) + it('orElse', async () => { + assert.deepStrictEqual( + await pipe( + _.left('foo'), + _.orElse((l) => _.right(l.length)) + )(), + E.right(3) ) - const t2 = pipe( - append('start 2'), - _.chain(() => append('end 2')) + assert.deepStrictEqual( + await pipe( + _.right(1), + _.orElse(() => _.right(2)) + )(), + E.right(1) ) - const sequenceSeries = A.sequence(_.applicativeTaskEitherSeq) - const x = await sequenceSeries([t1, t2])() - assert.deepStrictEqual(x, E.right([2, 4])) - assert.deepStrictEqual(log, ['start 1', 'end 1', 'start 2', 'end 2']) - }) - - it('rightIO', async () => { - const io = () => 1 - const fa = _.rightIO(io) - const e = await fa() - assert.deepStrictEqual(e, E.right(1)) }) it('swap', async () => { - const e1 = await _.swap(_.right(1))() - assert.deepStrictEqual(e1, E.left(1)) - const e2 = await _.swap(_.left('a'))() - assert.deepStrictEqual(e2, E.right('a')) - }) - - describe('getTaskValidation', () => { - const TV = _.getTaskValidation(semigroupString) - - it('ap', async () => { - const fab = _.left('a') - const fa = _.left('b') - const e1 = await TV.ap(fab, fa)() - assert.deepStrictEqual(e1, E.left('ab')) - }) - - it('alt', async () => { - const e1 = await TV.alt(_.right(1), () => _.right(2))() - assert.deepStrictEqual(e1, E.right(1)) - const e2 = await TV.alt(_.left('a'), () => _.right(2))() - assert.deepStrictEqual(e2, E.right(2)) - const e3 = await TV.alt(_.right(1), () => _.left('b'))() - assert.deepStrictEqual(e3, E.right(1)) - const e4 = await TV.alt(_.left('a'), () => _.left('b'))() - assert.deepStrictEqual(e4, E.left('ab')) - }) - }) - - describe('getFilterable', () => { - const F_ = _.getFilterable(A.getMonoid()) - const { filter } = pipeable(F_) - - it('filter', async () => { - const r1 = pipe( - _.right(1), - filter((n) => n > 0) - ) - assert.deepStrictEqual(await r1(), await _.right(1)()) - const r2 = pipe( - _.right(-1), - filter((n) => n > 0) - ) - assert.deepStrictEqual(await r2(), await _.left([])()) - const r3 = pipe( - _.left(['a']), - filter((n) => n > 0) - ) - assert.deepStrictEqual(await r3(), await _.left(['a'])()) - }) + assert.deepStrictEqual(await _.swap(_.right(1))(), E.left(1)) + assert.deepStrictEqual(await _.swap(_.left('a'))(), E.right('a')) }) it('chainEitherK', async () => { const f = (s: string) => E.right(s.length) - const x = await pipe(_.right('a'), _.chainEitherK(f))() - assert.deepStrictEqual(x, E.right(1)) + assert.deepStrictEqual(await pipe(_.right('a'), _.chainEitherK(f))(), E.right(1)) }) it('chainIOEitherK', async () => { const f = (s: string) => IE.right(s.length) - const x = await pipe(_.right('a'), _.chainIOEitherK(f))() - assert.deepStrictEqual(x, E.right(1)) + assert.deepStrictEqual(await pipe(_.right('a'), _.chainIOEitherK(f))(), E.right(1)) }) describe('tryCatchK', () => { const handleRejection = () => 'rejected' - it('resolving', () => { + it('resolving', async () => { const fOk = (n: number, s: string) => Promise.resolve(n + s.length) - return _.tryCatchK(fOk, handleRejection)(2, '1')().then((x) => assert.deepStrictEqual(x, E.right(3))) + return assert.deepStrictEqual(await _.tryCatchK(fOk, handleRejection)(2, '1')(), E.right(3)) }) - it('rejecting', () => { + it('rejecting', async () => { const fReject = () => Promise.reject() - return _.tryCatchK(fReject, handleRejection)()().then((x) => assert.deepStrictEqual(x, E.left('rejected'))) + return assert.deepStrictEqual(await _.tryCatchK(fReject, handleRejection)()(), E.left('rejected')) }) }) + + // ------------------------------------------------------------------------------------- + // constructors + // ------------------------------------------------------------------------------------- + + it('rightIO', async () => { + const io = () => 1 + const fa = _.rightIO(io) + assert.deepStrictEqual(await fa(), E.right(1)) + }) + + it('leftIO', async () => { + assert.deepStrictEqual(await _.leftIO(I.of(1))(), E.left(1)) + }) + + it('tryCatch', async () => { + assert.deepStrictEqual( + await _.tryCatch( + () => Promise.resolve(1), + () => 'error' + )(), + E.right(1) + ) + assert.deepStrictEqual( + await _.tryCatch( + () => Promise.reject(undefined), + () => 'error' + )(), + E.left('error') + ) + }) + + it('fromIOEither', async () => { + assert.deepStrictEqual(await _.fromIOEither(() => E.right(1))(), E.right(1)) + assert.deepStrictEqual(await _.fromIOEither(() => E.left('foo'))(), E.left('foo')) + }) }) diff --git a/test/TaskThese.ts b/test/TaskThese.ts index e39b94c9f..91bfcc3e6 100644 --- a/test/TaskThese.ts +++ b/test/TaskThese.ts @@ -5,30 +5,89 @@ import { pipe } from '../src/function' import * as T from '../src/Task' import * as _ from '../src/TaskThese' import * as TH from '../src/These' +import { assertSeq, assertPar } from './util' +import { semigroupString } from '../src/Semigroup' describe('TaskThese', () => { - describe('pipeables', () => { + // ------------------------------------------------------------------------------------- + // pipeables + // ------------------------------------------------------------------------------------- + + it('map', async () => { + const double = (n: number) => n * 2 + assert.deepStrictEqual(await pipe(_.right(1), _.map(double))(), TH.right(2)) + }) + + it('bimap', async () => { + const f = (e: string) => e + e + const g = (a: number) => a + 1 + assert.deepStrictEqual(await pipe(_.right(1), _.bimap(f, g))(), TH.right(2)) + assert.deepStrictEqual(await pipe(_.left('a'), _.bimap(f, g))(), TH.left('aa')) + assert.deepStrictEqual(await pipe(_.both('a', 1), _.bimap(f, g))(), TH.both('aa', 2)) + }) + + it('mapLeft', async () => { + const f = (e: string) => e + e + assert.deepStrictEqual(await pipe(_.right(1), _.mapLeft(f))(), TH.right(1)) + assert.deepStrictEqual(await pipe(_.left('a'), _.mapLeft(f))(), TH.left('aa')) + assert.deepStrictEqual(await pipe(_.both('a', 1), _.mapLeft(f))(), TH.both('aa', 1)) + }) + + // ------------------------------------------------------------------------------------- + // instances + // ------------------------------------------------------------------------------------- + + describe('getApplicative', () => { + it('Par', async () => { + await assertSeq(_.getApplicative(T.applicativeTaskSeq, semigroupString), { fromTask: _.fromTask }, (fa) => fa()) + }) + + it('Seq', async () => { + await assertPar(_.getApplicative(T.applicativeTaskPar, semigroupString), { fromTask: _.fromTask }, (fa) => fa()) + }) + }) + + it('getSemigroup', async () => { + const S = _.getSemigroup(monoidString, monoidSum) + assert.deepStrictEqual(await S.concat(_.right(1), _.right(2))(), TH.right(3)) + assert.deepStrictEqual(await S.concat(_.right(1), _.left('a'))(), TH.both('a', 1)) + assert.deepStrictEqual(await S.concat(_.left('a'), _.left('b'))(), TH.left('ab')) + assert.deepStrictEqual(await S.concat(_.right(1), _.both('a', 2))(), TH.both('a', 3)) + assert.deepStrictEqual(await S.concat(_.left('a'), _.both('b', 2))(), TH.both('ab', 2)) + assert.deepStrictEqual(await S.concat(_.both('a', 1), _.both('b', 2))(), TH.both('ab', 3)) + }) + + describe('getMonad', () => { + const M = _.getMonad(monoidString) it('map', async () => { - const double = (n: number) => n * 2 - assert.deepStrictEqual(await pipe(_.right(1), _.map(double))(), TH.right(2)) + const f = (n: number): number => n * 2 + assert.deepStrictEqual(await M.map(_.right(1), f)(), TH.right(2)) + assert.deepStrictEqual(await M.map(_.left('a'), f)(), TH.left('a')) + assert.deepStrictEqual(await M.map(_.both('a', 1), f)(), TH.both('a', 2)) }) - it('bimap', async () => { - const f = (e: string) => e + e - const g = (a: number) => a + 1 - assert.deepStrictEqual(await pipe(_.right(1), _.bimap(f, g))(), TH.right(2)) - assert.deepStrictEqual(await pipe(_.left('a'), _.bimap(f, g))(), TH.left('aa')) - assert.deepStrictEqual(await pipe(_.both('a', 1), _.bimap(f, g))(), TH.both('aa', 2)) + it('ap', async () => { + const f = (n: number): number => n * 2 + assert.deepStrictEqual(await M.ap(_.right(f), _.right(1))(), TH.right(2)) }) - it('mapLeft', async () => { - const f = (e: string) => e + e - assert.deepStrictEqual(await pipe(_.right(1), _.mapLeft(f))(), TH.right(1)) - assert.deepStrictEqual(await pipe(_.left('a'), _.mapLeft(f))(), TH.left('aa')) - assert.deepStrictEqual(await pipe(_.both('a', 1), _.mapLeft(f))(), TH.both('aa', 1)) + it('chain', async () => { + const f = (n: number) => (n > 2 ? _.both(`c`, n + 1) : n > 1 ? _.right(n * 2) : _.left(`b`)) + assert.deepStrictEqual(await M.chain(_.right(1), f)(), TH.left('b')) + assert.deepStrictEqual(await M.chain(_.right(2), f)(), TH.right(4)) + + assert.deepStrictEqual(await M.chain(_.left('a'), f)(), TH.left('a')) + + assert.deepStrictEqual(await M.chain(_.both('a', 1), f)(), TH.left('ab')) + assert.deepStrictEqual(await M.chain(_.both('a', 2), f)(), TH.right(4)) + assert.deepStrictEqual(await M.chain(_.both('a', 3), f)(), TH.both('ac', 4)) }) }) + // ------------------------------------------------------------------------------------- + // constructors + // ------------------------------------------------------------------------------------- + it('right', async () => { const x = await _.right(1)() assert.deepStrictEqual(x, TH.right(1)) @@ -64,6 +123,10 @@ describe('TaskThese', () => { assert.deepStrictEqual(x, TH.left('a')) }) + // ------------------------------------------------------------------------------------- + // destructors + // ------------------------------------------------------------------------------------- + it('fold', async () => { const f = _.fold( (e) => T.of(`left ${e}`), @@ -87,41 +150,4 @@ describe('TaskThese', () => { assert.deepStrictEqual(await f(_.left('a'))(), ['a', 2]) assert.deepStrictEqual(await f(_.both('a', 1))(), ['a', 1]) }) - - it('getSemigroup', async () => { - const S = _.getSemigroup(monoidString, monoidSum) - assert.deepStrictEqual(await S.concat(_.right(1), _.right(2))(), TH.right(3)) - assert.deepStrictEqual(await S.concat(_.right(1), _.left('a'))(), TH.both('a', 1)) - assert.deepStrictEqual(await S.concat(_.left('a'), _.left('b'))(), TH.left('ab')) - assert.deepStrictEqual(await S.concat(_.right(1), _.both('a', 2))(), TH.both('a', 3)) - assert.deepStrictEqual(await S.concat(_.left('a'), _.both('b', 2))(), TH.both('ab', 2)) - assert.deepStrictEqual(await S.concat(_.both('a', 1), _.both('b', 2))(), TH.both('ab', 3)) - }) - - describe('getMonad', () => { - const M = _.getMonad(monoidString) - it('map', async () => { - const f = (n: number): number => n * 2 - assert.deepStrictEqual(await M.map(_.right(1), f)(), TH.right(2)) - assert.deepStrictEqual(await M.map(_.left('a'), f)(), TH.left('a')) - assert.deepStrictEqual(await M.map(_.both('a', 1), f)(), TH.both('a', 2)) - }) - - it('map', async () => { - const f = (n: number): number => n * 2 - assert.deepStrictEqual(await M.ap(_.right(f), _.right(1))(), TH.right(2)) - }) - - it('chain', async () => { - const f = (n: number) => (n > 2 ? _.both(`c`, n + 1) : n > 1 ? _.right(n * 2) : _.left(`b`)) - assert.deepStrictEqual(await M.chain(_.right(1), f)(), TH.left('b')) - assert.deepStrictEqual(await M.chain(_.right(2), f)(), TH.right(4)) - - assert.deepStrictEqual(await M.chain(_.left('a'), f)(), TH.left('a')) - - assert.deepStrictEqual(await M.chain(_.both('a', 1), f)(), TH.left('ab')) - assert.deepStrictEqual(await M.chain(_.both('a', 2), f)(), TH.right(4)) - assert.deepStrictEqual(await M.chain(_.both('a', 3), f)(), TH.both('ac', 4)) - }) - }) }) diff --git a/test/util.ts b/test/util.ts new file mode 100644 index 000000000..42e368eee --- /dev/null +++ b/test/util.ts @@ -0,0 +1,70 @@ +import * as assert from 'assert' +import { Applicative, Applicative1, Applicative2, Applicative2C, Applicative3, Applicative4 } from '../src/Applicative' +import { sequenceT } from '../src/Apply' +import { HKT, Kind, Kind2, Kind3, Kind4, URIS, URIS2, URIS3, URIS4 } from '../src/HKT' +import * as T from '../src/Task' + +export interface AssertParSeq { + ( + F: Applicative4, + MT: { + readonly fromTask: (fa: T.Task) => Kind4 + }, + run: (fa: Kind4) => Promise + ): Promise + ( + F: Applicative3, + MT: { + readonly fromTask: (fa: T.Task) => Kind3 + }, + run: (fa: Kind3) => Promise + ): Promise + ( + F: Applicative2, + MT: { + readonly fromTask: (fa: T.Task) => Kind2 + }, + run: (fa: Kind2) => Promise + ): Promise + ( + F: Applicative2C, + MT: { + readonly fromTask: (fa: T.Task) => Kind2 + }, + run: (fa: Kind2) => Promise + ): Promise + ( + F: Applicative1, + MT: { + readonly fromTask: (fa: T.Task) => Kind + }, + run: (fa: Kind) => Promise + ): Promise + ( + F: Applicative, + MT: { + readonly fromTask: (fa: T.Task) => HKT + }, + run: (fa: HKT) => Promise + ): Promise +} + +export const assertParSeq = (expected: ReadonlyArray): AssertParSeq => async ( + F: Applicative, + MT: { + readonly fromTask: (fa: T.Task) => HKT + }, + run: (fa: HKT) => Promise +) => { + // tslint:disable-next-line: readonly-array + const log: Array = [] + const a = MT.fromTask(T.delay(100)(T.fromIO(() => log.push('a')))) + const b = MT.fromTask(T.fromIO(() => log.push('b'))) + const ab = sequenceT(F)(a, b) + await run(ab) + assert.deepStrictEqual(log, expected) +} + +export const assertPar = assertParSeq(['b', 'a']) + +export const assertSeq = assertParSeq(['a', 'b']) From d28cadf9a8882895c39e597d3c87668fae3d771b Mon Sep 17 00:00:00 2001 From: gcanti Date: Fri, 19 Jun 2020 16:24:55 +0200 Subject: [PATCH 084/106] add tests for validation instances --- test/Apply.ts | 2 +- test/Either.ts | 74 ++++++++++++----------- test/IOEither.ts | 34 +++++------ test/ReaderEither.ts | 34 +++++------ test/ReaderTaskEither.ts | 48 +++++---------- test/TaskEither.ts | 124 ++++++++++++++++++++++----------------- 6 files changed, 150 insertions(+), 166 deletions(-) diff --git a/test/Apply.ts b/test/Apply.ts index 7a43ace49..65093c3c5 100644 --- a/test/Apply.ts +++ b/test/Apply.ts @@ -52,7 +52,7 @@ describe('Apply', () => { assert.deepStrictEqual(adoEither({ a: E.right(1), b: E.right(2) }), E.right({ a: 1, b: 2 })) assert.deepStrictEqual(adoEither({ a: E.right(1), b: E.left('error') }), E.left('error')) - const adoValidation = sequenceS(E.getValidation(A.getMonoid())) + const adoValidation = sequenceS(E.getApplicativeValidation(A.getMonoid())) assert.deepStrictEqual(adoValidation({ a: E.right(1) }), E.right({ a: 1 })) assert.deepStrictEqual(adoValidation({ a: E.right(1), b: E.right(2) }), E.right({ a: 1, b: 2 })) assert.deepStrictEqual(adoValidation({ a: E.right(1), b: E.left(['error']) }), E.left(['error'])) diff --git a/test/Either.ts b/test/Either.ts index 1fe6152f1..d89de35df 100644 --- a/test/Either.ts +++ b/test/Either.ts @@ -7,6 +7,7 @@ import * as O from '../src/Option' import { semigroupSum } from '../src/Semigroup' import { showString } from '../src/Show' import * as T from '../src/Task' +import { sequenceT } from '../src/Apply' describe('Either', () => { describe('pipeables', () => { @@ -516,45 +517,42 @@ describe('Either', () => { }) }) - describe('Validation', () => { - it('getValidation', () => { - const M = _.getValidation(monoidString) - const f = (s: string) => _.right(s.length) - assert.deepStrictEqual(M.chain(_.right('abc'), f), _.right(3)) - assert.deepStrictEqual(M.chain(_.left('a'), f), _.left('a')) - assert.deepStrictEqual( - M.chain(_.left('a'), () => _.left('b')), - _.left('a') - ) - assert.deepStrictEqual(M.of(1), _.right(1)) - const double = (n: number) => n * 2 - assert.deepStrictEqual(M.ap(_.right(double), _.right(1)), _.right(2)) - assert.deepStrictEqual(M.ap(_.right(double), _.left('foo')), _.left('foo')) - assert.deepStrictEqual(M.ap(_.left number>('foo'), _.right(1)), _.left('foo')) - assert.deepStrictEqual(M.ap(_.left('foo'), _.left('bar')), _.left('foobar')) - assert.deepStrictEqual( - M.alt(_.left('a'), () => _.right(1)), - _.right(1) - ) - assert.deepStrictEqual( - M.alt(_.right(1), () => _.left('a')), - _.right(1) - ) - assert.deepStrictEqual( - M.alt(_.left('a'), () => _.left('b')), - _.left('ab') - ) - }) + it('getApplicativeValidation', () => { + const A = _.getApplicativeValidation(monoidString) + assert.deepStrictEqual(sequenceT(A)(_.left('a'), _.left('b')), _.left('ab')) + const AV = _.getValidation(monoidString) + assert.deepStrictEqual(sequenceT(AV)(_.left('a'), _.left('b')), _.left('ab')) + }) - it('getValidationMonoid', () => { - const M = _.getValidationMonoid(monoidString, monoidSum) - assert.deepStrictEqual(M.concat(_.right(1), _.right(2)), _.right(3)) - assert.deepStrictEqual(M.concat(_.right(1), _.left('foo')), _.left('foo')) - assert.deepStrictEqual(M.concat(_.left('foo'), _.right(1)), _.left('foo')) - assert.deepStrictEqual(M.concat(_.left('foo'), _.left('bar')), _.left('foobar')) - assert.deepStrictEqual(M.concat(_.right(1), M.empty), _.right(1)) - assert.deepStrictEqual(M.concat(M.empty, _.right(1)), _.right(1)) - }) + it('getAltValidation', () => { + const A = _.getAltValidation(monoidString) + assert.deepStrictEqual( + A.alt(_.left('a'), () => _.left('b')), + _.left('ab') + ) + assert.deepStrictEqual( + A.alt(_.right(1), () => _.left('b')), + _.right(1) + ) + assert.deepStrictEqual( + A.alt(_.left('a'), () => _.right(2)), + _.right(2) + ) + const AV = _.getValidation(monoidString) + assert.deepStrictEqual( + AV.alt(_.left('a'), () => _.left('b')), + _.left('ab') + ) + }) + + it('getValidationMonoid', () => { + const M = _.getValidationMonoid(monoidString, monoidSum) + assert.deepStrictEqual(M.concat(_.right(1), _.right(2)), _.right(3)) + assert.deepStrictEqual(M.concat(_.right(1), _.left('foo')), _.left('foo')) + assert.deepStrictEqual(M.concat(_.left('foo'), _.right(1)), _.left('foo')) + assert.deepStrictEqual(M.concat(_.left('foo'), _.left('bar')), _.left('foobar')) + assert.deepStrictEqual(M.concat(_.right(1), M.empty), _.right(1)) + assert.deepStrictEqual(M.concat(M.empty, _.right(1)), _.right(1)) }) it('fromOption', () => { diff --git a/test/IOEither.ts b/test/IOEither.ts index 1501f5468..9277cdd5e 100644 --- a/test/IOEither.ts +++ b/test/IOEither.ts @@ -1,4 +1,5 @@ import * as assert from 'assert' +import { sequenceT } from '../src/Apply' import { getMonoid } from '../src/Array' import * as E from '../src/Either' import { pipe } from '../src/function' @@ -7,7 +8,7 @@ import * as _ from '../src/IOEither' import { monoidString } from '../src/Monoid' import { none, some } from '../src/Option' import { pipeable } from '../src/pipeable' -import { semigroupString, semigroupSum } from '../src/Semigroup' +import { semigroupSum } from '../src/Semigroup' describe('IOEither', () => { describe('pipeables', () => { @@ -280,26 +281,19 @@ describe('IOEither', () => { }) }) - describe('getIOValidation', () => { - const IV = _.getIOValidation(semigroupString) - - it('ap', () => { - const fab = _.left('a') - const fa = _.left('b') - const e1 = IV.ap(fab, fa)() - assert.deepStrictEqual(e1, E.left('ab')) - }) + it('getApplicativeIOValidation', () => { + const A = _.getApplicativeIOValidation(monoidString) + assert.deepStrictEqual(sequenceT(A)(_.left('a'), _.left('b'))(), E.left('ab')) + assert.deepStrictEqual(sequenceT(A)(_.left('a'), _.right(1))(), E.left('a')) + const AV = _.getIOValidation(monoidString) + assert.deepStrictEqual(sequenceT(AV)(_.left('a'), _.left('b'))(), E.left('ab')) + }) - it('alt', () => { - const e1 = IV.alt(_.right(1), () => _.right(2))() - assert.deepStrictEqual(e1, E.right(1)) - const e2 = IV.alt(_.left('a'), () => _.right(2))() - assert.deepStrictEqual(e2, E.right(2)) - const e3 = IV.alt(_.right(1), () => _.left('b'))() - assert.deepStrictEqual(e3, E.right(1)) - const e4 = IV.alt(_.left('a'), () => _.left('b'))() - assert.deepStrictEqual(e4, E.left('ab')) - }) + it('getAltIOValidation', () => { + const A = _.getAltIOValidation(monoidString) + assert.deepStrictEqual(A.alt(_.left('a'), () => _.left('b'))(), E.left('ab')) + const AV = _.getIOValidation(monoidString) + assert.deepStrictEqual(AV.alt(_.left('a'), () => _.left('b'))(), E.left('ab')) }) describe('getFilterable', () => { diff --git a/test/ReaderEither.ts b/test/ReaderEither.ts index 196c21eba..d39b37eb0 100644 --- a/test/ReaderEither.ts +++ b/test/ReaderEither.ts @@ -1,12 +1,12 @@ import * as assert from 'assert' +import * as Apply from '../src/Apply' import * as E from '../src/Either' +import { pipe } from '../src/function' import { monoidString } from '../src/Monoid' import { none, some } from '../src/Option' -import { pipe } from '../src/function' import * as R from '../src/Reader' import * as _ from '../src/ReaderEither' -import { semigroupSum, semigroupString } from '../src/Semigroup' -import * as Apply from '../src/Apply' +import { semigroupSum } from '../src/Semigroup' describe('ReaderEither', () => { describe('pipeables', () => { @@ -189,24 +189,18 @@ describe('ReaderEither', () => { ) }) - describe('getReaderValidation', () => { - const RV = _.getReaderValidation(semigroupString) - - it('ap', () => { - const sequenceS = Apply.sequenceS(RV) - assert.deepStrictEqual(sequenceS({ a: _.left('a'), b: _.left('b') })(undefined), E.left('ab')) - }) + it('getApplicativeReaderValidation', () => { + const A = _.getApplicativeReaderValidation(monoidString) + assert.deepStrictEqual(Apply.sequenceT(A)(_.left('a'), _.left('b'))(null), E.left('ab')) + const AV = _.getReaderValidation(monoidString) + assert.deepStrictEqual(Apply.sequenceT(AV)(_.left('a'), _.left('b'))(null), E.left('ab')) + }) - it('alt', async () => { - const e1 = RV.alt(_.right(1), () => _.right(2))(undefined) - assert.deepStrictEqual(e1, E.right(1)) - const e2 = RV.alt(_.left('a'), () => _.right(2))(undefined) - assert.deepStrictEqual(e2, E.right(2)) - const e3 = RV.alt(_.right(1), () => _.left('b'))(undefined) - assert.deepStrictEqual(e3, E.right(1)) - const e4 = RV.alt(_.left('a'), () => _.left('b'))(undefined) - assert.deepStrictEqual(e4, E.left('ab')) - }) + it('getAltReaderValidation', () => { + const A = _.getAltReaderValidation(monoidString) + assert.deepStrictEqual(A.alt(_.left('a'), () => _.left('b'))(null), E.left('ab')) + const AV = _.getReaderValidation(monoidString) + assert.deepStrictEqual(AV.alt(_.left('a'), () => _.left('b'))(null), E.left('ab')) }) it('chainEitherK', () => { diff --git a/test/ReaderTaskEither.ts b/test/ReaderTaskEither.ts index 3431ef403..897b9f1c2 100644 --- a/test/ReaderTaskEither.ts +++ b/test/ReaderTaskEither.ts @@ -1,19 +1,19 @@ import * as assert from 'assert' -import * as A from '../src/Array' +import { sequenceT } from '../src/Apply' import * as E from '../src/Either' +import { pipe } from '../src/function' import * as I from '../src/IO' import * as IE from '../src/IOEither' import { monoidSum } from '../src/Monoid' import { none, some } from '../src/Option' -import { pipe } from '../src/function' import * as R from '../src/Reader' import * as RE from '../src/ReaderEither' +import * as RT from '../src/ReaderTask' import * as _ from '../src/ReaderTaskEither' import { semigroupString, semigroupSum } from '../src/Semigroup' import * as T from '../src/Task' import * as TE from '../src/TaskEither' -import * as RT from '../src/ReaderTask' -import { assertSeq, assertPar } from './util' +import { assertPar, assertSeq } from './util' describe('ReaderTaskEither', () => { describe('pipeables', () => { @@ -324,36 +324,18 @@ describe('ReaderTaskEither', () => { assert.deepStrictEqual(e2, E.right(1)) }) - describe('getReaderTaskValidation', () => { - const RTV = _.getReaderTaskValidation(semigroupString) - it('of', async () => { - const e = await RTV.of(1)({})() - assert.deepStrictEqual(e, E.right(1)) - }) - - it('alt', async () => { - assert.deepStrictEqual(await RTV.alt(_.left('a'), () => _.left('b'))(null)(), E.left('ab')) - }) - - it('throwError', async () => { - const e = await RTV.throwError('error')({})() - assert.deepStrictEqual(e, E.left('error')) - }) + it('getApplicativeReaderTaskValidation', async () => { + const A = _.getApplicativeReaderTaskValidation(T.applicativeTaskPar, semigroupString) + assert.deepStrictEqual(await sequenceT(A)(_.left('a'), _.left('b'))(null)(), E.left('ab')) + const AV = _.getReaderTaskValidation(semigroupString) + assert.deepStrictEqual(await sequenceT(AV)(_.left('a'), _.left('b'))(null)(), E.left('ab')) + }) - it('traverse', async () => { - const e1 = await pipe([1, 2, 3], A.traverse(RTV)(RTV.of))({})() - assert.deepStrictEqual(e1, E.right([1, 2, 3])) - const e2 = await pipe( - [1, 2, 3], - A.traverse(RTV)((v) => RTV.throwError(`${v}`)) - )({})() - assert.deepStrictEqual(e2, E.left('123')) - const e3 = await pipe( - [1, 2, 3], - A.traverse(RTV)((v) => (v % 2 === 1 ? RTV.throwError(`${v}`) : RTV.of(v))) - )({})() - assert.deepStrictEqual(e3, E.left('13')) - }) + it('getAltReaderTaskValidation', async () => { + const A = _.getAltReaderTaskValidation(semigroupString) + assert.deepStrictEqual(await A.alt(_.left('a'), () => _.left('b'))(null)(), E.left('ab')) + const AV = _.getReaderTaskValidation(semigroupString) + assert.deepStrictEqual(await AV.alt(_.left('a'), () => _.left('b'))(null)(), E.left('ab')) }) describe('bracket', () => { diff --git a/test/TaskEither.ts b/test/TaskEither.ts index 76d5e42ae..fbac274cb 100644 --- a/test/TaskEither.ts +++ b/test/TaskEither.ts @@ -1,15 +1,17 @@ import * as assert from 'assert' +import { sequenceT } from '../src/Apply' import * as A from '../src/Array' import * as E from '../src/Either' +import { pipe } from '../src/function' import * as I from '../src/IO' +import * as IE from '../src/IOEither' import { monoidString } from '../src/Monoid' import { none, some } from '../src/Option' import { pipeable } from '../src/pipeable' import { semigroupString, semigroupSum } from '../src/Semigroup' +import * as T from '../src/Task' import * as _ from '../src/TaskEither' -import * as IE from '../src/IOEither' -import { pipe } from '../src/function' -import { assertSeq, assertPar } from './util' +import { assertPar, assertSeq } from './util' describe('TaskEither', () => { // ------------------------------------------------------------------------------------- @@ -88,62 +90,24 @@ describe('TaskEither', () => { assert.deepStrictEqual(await pipe(_.left(1), _.mapLeft(double))(), E.left(2)) }) - it('fromPredicate', async () => { - const gt2 = _.fromPredicate( - (n: number) => n >= 2, - (n) => `Invalid number ${n}` - ) - assert.deepStrictEqual(await gt2(3)(), E.right(3)) - assert.deepStrictEqual(await gt2(1)(), E.left('Invalid number 1')) - // refinements - const isNumber = (u: string | number): u is number => typeof u === 'number' - assert.deepStrictEqual(await _.fromPredicate(isNumber, () => 'not a number')(4)(), E.right(4)) - }) + // ------------------------------------------------------------------------------------- + // instances + // ------------------------------------------------------------------------------------- - it('filterOrElse', async () => { - assert.deepStrictEqual( - await pipe( - _.right(12), - _.filterOrElse( - (n) => n > 10, - () => 'a' - ) - )(), - E.right(12) - ) - assert.deepStrictEqual( - await pipe( - _.right(7), - _.filterOrElse( - (n) => n > 10, - () => 'a' - ) - )(), - E.left('a') - ) + it('getApplicativeTaskValidation', async () => { + const A = _.getApplicativeTaskValidation(T.applicativeTaskPar, semigroupString) + assert.deepStrictEqual(await sequenceT(A)(_.left('a'), _.left('b'))(), E.left('ab')) + const AV = _.getTaskValidation(semigroupString) + assert.deepStrictEqual(await sequenceT(AV)(_.left('a'), _.left('b'))(), E.left('ab')) }) - it('fromOption', async () => { - assert.deepStrictEqual( - await pipe( - none, - _.fromOption(() => 'none') - )(), - E.left('none') - ) - assert.deepStrictEqual( - await pipe( - some(1), - _.fromOption(() => 'none') - )(), - E.right(1) - ) + it('getAltTaskValidation', async () => { + const A = _.getAltTaskValidation(semigroupString) + assert.deepStrictEqual(await A.alt(_.left('a'), () => _.left('b'))(), E.left('ab')) + const AV = _.getTaskValidation(semigroupString) + assert.deepStrictEqual(await AV.alt(_.left('a'), () => _.left('b'))(), E.left('ab')) }) - // ------------------------------------------------------------------------------------- - // instances - // ------------------------------------------------------------------------------------- - describe('getTaskValidation', () => { const TV = _.getTaskValidation(semigroupString) @@ -311,6 +275,29 @@ describe('TaskEither', () => { // combinators // ------------------------------------------------------------------------------------- + it('filterOrElse', async () => { + assert.deepStrictEqual( + await pipe( + _.right(12), + _.filterOrElse( + (n) => n > 10, + () => 'a' + ) + )(), + E.right(12) + ) + assert.deepStrictEqual( + await pipe( + _.right(7), + _.filterOrElse( + (n) => n > 10, + () => 'a' + ) + )(), + E.left('a') + ) + }) + it('orElse', async () => { assert.deepStrictEqual( await pipe( @@ -392,4 +379,33 @@ describe('TaskEither', () => { assert.deepStrictEqual(await _.fromIOEither(() => E.right(1))(), E.right(1)) assert.deepStrictEqual(await _.fromIOEither(() => E.left('foo'))(), E.left('foo')) }) + + it('fromOption', async () => { + assert.deepStrictEqual( + await pipe( + none, + _.fromOption(() => 'none') + )(), + E.left('none') + ) + assert.deepStrictEqual( + await pipe( + some(1), + _.fromOption(() => 'none') + )(), + E.right(1) + ) + }) + + it('fromPredicate', async () => { + const gt2 = _.fromPredicate( + (n: number) => n >= 2, + (n) => `Invalid number ${n}` + ) + assert.deepStrictEqual(await gt2(3)(), E.right(3)) + assert.deepStrictEqual(await gt2(1)(), E.left('Invalid number 1')) + // refinements + const isNumber = (u: string | number): u is number => typeof u === 'number' + assert.deepStrictEqual(await _.fromPredicate(isNumber, () => 'not a number')(4)(), E.right(4)) + }) }) From 26f5274b0d8512ba8c55ad4749c8a974b4931ce0 Mon Sep 17 00:00:00 2001 From: gcanti Date: Fri, 19 Jun 2020 18:37:33 +0200 Subject: [PATCH 085/106] export missing `of`s --- docs/modules/Array.ts.md | 2 +- docs/modules/Either.ts.md | 14 +++ docs/modules/Identity.ts.md | 14 +++ docs/modules/Option.ts.md | 14 +++ docs/modules/Reader.ts.md | 2 +- docs/modules/ReaderTaskEither.ts.md | 14 +++ docs/modules/StateReaderTaskEither.ts.md | 14 +++ src/Array.ts | 71 +++++++------- src/Const.ts | 15 +-- src/Either.ts | 64 ++++++------ src/IO.ts | 26 ++--- src/IOEither.ts | 78 ++++++++------- src/Identity.ts | 58 ++++++----- src/Map.ts | 16 +-- src/NonEmptyArray.ts | 45 +++++---- src/Option.ts | 98 ++++++++++--------- src/Reader.ts | 42 ++++---- src/ReaderEither.ts | 32 +++--- src/ReaderTask.ts | 14 ++- src/ReaderTaskEither.ts | 53 +++++----- src/ReadonlyArray.ts | 113 ++++++++------------- src/ReadonlyMap.ts | 19 ++-- src/ReadonlyNonEmptyArray.ts | 42 ++++---- src/ReadonlyRecord.ts | 86 +++++----------- src/ReadonlyTuple.ts | 41 ++++---- src/Record.ts | 69 ++++++------- src/State.ts | 18 ++-- src/StateReaderTaskEither.ts | 73 ++++++++------ src/Store.ts | 12 ++- src/Task.ts | 15 +-- src/TaskEither.ts | 26 ++--- src/TaskThese.ts | 16 +-- src/These.ts | 19 ++-- src/Traced.ts | 8 +- src/Tree.ts | 119 +++++++++++------------ src/Tuple.ts | 24 +++-- src/Writer.ts | 10 +- 37 files changed, 745 insertions(+), 651 deletions(-) diff --git a/docs/modules/Array.ts.md b/docs/modules/Array.ts.md index df855528a..bf6845c49 100644 --- a/docs/modules/Array.ts.md +++ b/docs/modules/Array.ts.md @@ -539,7 +539,7 @@ Added in v2.6.3 **Signature** ```ts -export declare const unfold: (b: B, f: (b: B) => Option) => A[] +export declare const unfold: (b: B, f: (b: B) => Option<[A, B]>) => A[] ``` Added in v2.6.6 diff --git a/docs/modules/Either.ts.md b/docs/modules/Either.ts.md index 6a0a47364..95d837100 100644 --- a/docs/modules/Either.ts.md +++ b/docs/modules/Either.ts.md @@ -26,6 +26,8 @@ Added in v2.0.0 - [Alt](#alt) - [alt](#alt) +- [Applicative](#applicative) + - [of](#of) - [Apply](#apply) - [ap](#ap) - [apFirst](#apfirst) @@ -126,6 +128,18 @@ export declare const alt: (that: Lazy>) => (fa: Either) Added in v2.0.0 +# Applicative + +## of + +**Signature** + +```ts +export declare const of: (a: A) => Either +``` + +Added in v2.7.0 + # Apply ## ap diff --git a/docs/modules/Identity.ts.md b/docs/modules/Identity.ts.md index d2589be65..71584fc4e 100644 --- a/docs/modules/Identity.ts.md +++ b/docs/modules/Identity.ts.md @@ -14,6 +14,8 @@ Added in v2.0.0 - [Alt](#alt) - [alt](#alt) +- [Applicative](#applicative) + - [of](#of) - [Apply](#apply) - [ap](#ap) - [apFirst](#apfirst) @@ -70,6 +72,18 @@ export declare const alt: (that: () => A) => (fa: A) => A Added in v2.0.0 +# Applicative + +## of + +**Signature** + +```ts +export declare const of: (a: A) => A +``` + +Added in v2.0.0 + # Apply ## ap diff --git a/docs/modules/Option.ts.md b/docs/modules/Option.ts.md index c45bb2344..273653cf1 100644 --- a/docs/modules/Option.ts.md +++ b/docs/modules/Option.ts.md @@ -27,6 +27,8 @@ Added in v2.0.0 - [alt](#alt) - [Alternative](#alternative) - [zero](#zero) +- [Applicative](#applicative) + - [of](#of) - [Apply](#apply) - [ap](#ap) - [apFirst](#apfirst) @@ -166,6 +168,18 @@ export declare const zero: () => Option Added in v2.7.0 +# Applicative + +## of + +**Signature** + +```ts +export declare const of: (a: A) => Option +``` + +Added in v2.7.0 + # Apply ## ap diff --git a/docs/modules/Reader.ts.md b/docs/modules/Reader.ts.md index 35f8cb87f..c792bde71 100644 --- a/docs/modules/Reader.ts.md +++ b/docs/modules/Reader.ts.md @@ -59,7 +59,7 @@ Added in v2.0.0 **Signature** ```ts -export declare const of: (a: A) => Reader +export declare const of: (a: A) => Reader ``` Added in v2.0.0 diff --git a/docs/modules/ReaderTaskEither.ts.md b/docs/modules/ReaderTaskEither.ts.md index 15d43d464..a6a16294a 100644 --- a/docs/modules/ReaderTaskEither.ts.md +++ b/docs/modules/ReaderTaskEither.ts.md @@ -14,6 +14,8 @@ Added in v2.0.0 - [Alt](#alt) - [alt](#alt) +- [Applicative](#applicative) + - [of](#of) - [Apply](#apply) - [ap](#ap) - [apFirst](#apfirst) @@ -112,6 +114,18 @@ export declare const alt: ( Added in v2.0.0 +# Applicative + +## of + +**Signature** + +```ts +export declare const of: (a: A) => ReaderTaskEither +``` + +Added in v2.7.0 + # Apply ## ap diff --git a/docs/modules/StateReaderTaskEither.ts.md b/docs/modules/StateReaderTaskEither.ts.md index 308baa2d2..3410747be 100644 --- a/docs/modules/StateReaderTaskEither.ts.md +++ b/docs/modules/StateReaderTaskEither.ts.md @@ -14,6 +14,8 @@ Added in v2.0.0 - [Alt](#alt) - [alt](#alt) +- [Applicative](#applicative) + - [of](#of) - [Apply](#apply) - [ap](#ap) - [apFirst](#apfirst) @@ -105,6 +107,18 @@ export declare const alt: ( Added in v2.6.2 +# Applicative + +## of + +**Signature** + +```ts +export declare const of: (a: A) => StateReaderTaskEither +``` + +Added in v2.7.0 + # Apply ## ap diff --git a/src/Array.ts b/src/Array.ts index dcc88bd71..fb04f0ebf 100644 --- a/src/Array.ts +++ b/src/Array.ts @@ -4,7 +4,6 @@ import { Alt1 } from './Alt' import { Alternative1 } from './Alternative' import { Applicative1 } from './Applicative' -import { Apply1 } from './Apply' import { Compactable1, Separated } from './Compactable' import { Either } from './Either' import { Eq } from './Eq' @@ -974,6 +973,42 @@ export const difference: ( */ export const of: (a: A) => Array = RA.of as any +// ------------------------------------------------------------------------------------- +// non-pipeables +// ------------------------------------------------------------------------------------- + +const map_: Monad1['map'] = RA.monadArray.map as any +const ap_: Monad1['ap'] = RA.monadArray.ap as any +const chain_: Monad1['chain'] = RA.monadArray.chain as any +const mapWithIndex_: FunctorWithIndex1['mapWithIndex'] = RA.functorWithIndexArray.mapWithIndex as any +const filter_: Filterable1['filter'] = RA.filterableArray.filter as any +const filterMap_: Filterable1['filterMap'] = RA.filterableArray.filterMap as any +const partition_: Filterable1['partition'] = RA.filterableArray.partition as any +const partitionMap_: Filterable1['partitionMap'] = RA.filterableArray.partitionMap as any +const filterWithIndex_: FilterableWithIndex1['filterWithIndex'] = RA.filterableWithIndexArray + .filterWithIndex as any +const filterMapWithIndex_: FilterableWithIndex1['filterMapWithIndex'] = RA.filterableWithIndexArray + .filterMapWithIndex as any +const partitionWithIndex_: FilterableWithIndex1['partitionWithIndex'] = RA.filterableWithIndexArray + .partitionWithIndex as any +const partitionMapWithIndex_: FilterableWithIndex1['partitionMapWithIndex'] = RA.filterableWithIndexArray + .partitionMapWithIndex as any +const reduce_: Foldable1['reduce'] = RA.foldableArray.reduce +const foldMap_: Foldable1['foldMap'] = RA.foldableArray.foldMap +const reduceRight_: Foldable1['reduceRight'] = RA.foldableArray.reduceRight +const traverse_: Traversable1['traverse'] = RA.traversableArray.traverse as any +const alt_: Alternative1['alt'] = RA.alternativeArray.alt as any +const reduceWithIndex_: FoldableWithIndex1['reduceWithIndex'] = RA.foldableWithIndexArray.reduceWithIndex +const foldMapWithIndex_: FoldableWithIndex1['foldMapWithIndex'] = + RA.foldableWithIndexArray.foldMapWithIndex +const reduceRightWithIndex_: FoldableWithIndex1['reduceRightWithIndex'] = + RA.foldableWithIndexArray.reduceRightWithIndex +const traverseWithIndex_: TraversableWithIndex1['traverseWithIndex'] = RA.traversableWithIndexArray + .traverseWithIndex as any +const extend_: Extend1['extend'] = RA.extendArray.extend as any +const wither_: Witherable1['wither'] = RA.witherableArray.wither as any +const wilt_: Witherable1['wilt'] = RA.witherableArray.wilt as any + // ------------------------------------------------------------------------------------- // pipeables // ------------------------------------------------------------------------------------- @@ -1207,7 +1242,7 @@ export const wilt: PipeableWilt1 = RA.wilt as any * @category Unfoldable * @since 2.6.6 */ -export const unfold: (b: B, f: (b: B) => Option) => Array = RA.unfold as any +export const unfold: Unfoldable1['unfold'] = RA.unfold as any /** * @category Alternative @@ -1219,38 +1254,6 @@ export const zero: Alternative1['zero'] = RA.alternativeArray.zero as any // instances // ------------------------------------------------------------------------------------- -const map_: Functor1['map'] = RA.monadArray.map as any -const ap_: Apply1['ap'] = RA.monadArray.ap as any -const chain_: Monad1['chain'] = RA.monadArray.chain as any -const mapWithIndex_: FunctorWithIndex1['mapWithIndex'] = RA.functorWithIndexArray.mapWithIndex as any -const filter_: Filterable1['filter'] = RA.filterableArray.filter as any -const filterMap_: Filterable1['filterMap'] = RA.filterableArray.filterMap as any -const partition_: Filterable1['partition'] = RA.filterableArray.partition as any -const partitionMap_: Filterable1['partitionMap'] = RA.filterableArray.partitionMap as any -const filterWithIndex_: FilterableWithIndex1['filterWithIndex'] = RA.filterableWithIndexArray - .filterWithIndex as any -const filterMapWithIndex_: FilterableWithIndex1['filterMapWithIndex'] = RA.filterableWithIndexArray - .filterMapWithIndex as any -const partitionWithIndex_: FilterableWithIndex1['partitionWithIndex'] = RA.filterableWithIndexArray - .partitionWithIndex as any -const partitionMapWithIndex_: FilterableWithIndex1['partitionMapWithIndex'] = RA.filterableWithIndexArray - .partitionMapWithIndex as any -const reduce_: Foldable1['reduce'] = RA.foldableArray.reduce -const foldMap_: Foldable1['foldMap'] = RA.foldableArray.foldMap -const reduceRight_: Foldable1['reduceRight'] = RA.foldableArray.reduceRight -const traverse_: Traversable1['traverse'] = RA.traversableArray.traverse as any -const alt_: Alternative1['alt'] = RA.alternativeArray.alt as any -const reduceWithIndex_: FoldableWithIndex1['reduceWithIndex'] = RA.foldableWithIndexArray.reduceWithIndex -const foldMapWithIndex_: FoldableWithIndex1['foldMapWithIndex'] = - RA.foldableWithIndexArray.foldMapWithIndex -const reduceRightWithIndex_: FoldableWithIndex1['reduceRightWithIndex'] = - RA.foldableWithIndexArray.reduceRightWithIndex -const traverseWithIndex_: TraversableWithIndex1['traverseWithIndex'] = RA.traversableWithIndexArray - .traverseWithIndex as any -const extend_: Extend1['extend'] = RA.extendArray.extend as any -const wither_: Witherable1['wither'] = RA.witherableArray.wither as any -const wilt_: Witherable1['wilt'] = RA.witherableArray.wilt as any - /** * @category instances * @since 2.0.0 diff --git a/src/Const.ts b/src/Const.ts index 56a2cfbc5..d45da3f42 100644 --- a/src/Const.ts +++ b/src/Const.ts @@ -133,16 +133,17 @@ export function getApplicative(M: Monoid): Applicative2C { } // ------------------------------------------------------------------------------------- -// pipeables +// non-pipeables // ------------------------------------------------------------------------------------- -const contramap_: (fa: Const, f: (b: B) => A) => Const = unsafeCoerce - -const map_: (fa: Const, f: (a: A) => B) => Const = unsafeCoerce - -const bimap_: (fea: Const, f: (e: E) => G, g: (a: A) => B) => Const = (fea, f) => make(f(fea)) +const contramap_: Contravariant2['contramap'] = unsafeCoerce +const map_: Functor2['map'] = unsafeCoerce +const bimap_: Bifunctor2['bimap'] = (fea, f) => make(f(fea)) +const mapLeft_: Bifunctor2['mapLeft'] = (fea, f) => make(f(fea)) -const mapLeft_: (fea: Const, f: (e: E) => G) => Const = (fea, f) => make(f(fea)) +// ------------------------------------------------------------------------------------- +// pipeables +// ------------------------------------------------------------------------------------- /** * @category Contravariant diff --git a/src/Either.ts b/src/Either.ts index 2dd96b191..6b4349815 100644 --- a/src/Either.ts +++ b/src/Either.ts @@ -319,6 +319,32 @@ export const filterOrElse: { } = (predicate: Predicate, onFalse: (a: A) => E) => (ma: Either) => chain_(ma, (a) => (predicate(a) ? right(a) : left(onFalse(a)))) +// ------------------------------------------------------------------------------------- +// non-pipeables +// ------------------------------------------------------------------------------------- + +const map_: Monad2['map'] = (ma, f) => (isLeft(ma) ? ma : right(f(ma.right))) +const ap_: Monad2['ap'] = (mab, ma) => (isLeft(mab) ? mab : isLeft(ma) ? ma : right(mab.right(ma.right))) +const chain_: (fa: Either, f: (a: A) => Either) => Either = (ma, f) => + isLeft(ma) ? ma : f(ma.right) +const reduce_: Foldable2['reduce'] = (fa, b, f) => (isLeft(fa) ? b : f(b, fa.right)) +const foldMap_: Foldable2['foldMap'] = (M) => (fa, f) => (isLeft(fa) ? M.empty : f(fa.right)) +const reduceRight_: Foldable2['reduceRight'] = (fa, b, f) => (isLeft(fa) ? b : f(fa.right, b)) +const traverse_ = (F: Applicative) => ( + ma: Either, + f: (a: A) => HKT +): HKT> => { + return isLeft(ma) ? F.of(left(ma.left)) : F.map>(f(ma.right), right) +} +const bimap_: Bifunctor2['bimap'] = (fea, f, g) => (isLeft(fea) ? left(f(fea.left)) : right(g(fea.right))) +const mapLeft_: Bifunctor2['mapLeft'] = (fea, f) => (isLeft(fea) ? left(f(fea.left)) : fea) +const alt_: Alt2['alt'] = (fa, that) => (isLeft(fa) ? that() : fa) +const extend_: Extend2['extend'] = (wa, f) => (isLeft(wa) ? wa : right(f(wa))) +const chainRec_: ChainRec2['chainRec'] = (a, f) => + tailRec(f(a), (e) => + isLeft(e) ? right(left(e.left)) : isLeft(e.right) ? left(f(e.right.left)) : right(right(e.right.right)) + ) + // ------------------------------------------------------------------------------------- // pipeables // ------------------------------------------------------------------------------------- @@ -383,6 +409,12 @@ export const apSecond = (fb: Either) => (fa: Either): Eithe fb ) +/** + * @category Applicative + * @since 2.7.0 + */ +export const of: Applicative2['of'] = right + /** * Less strict version of [`chain`](#chain). * @@ -492,38 +524,6 @@ export const throwError: MonadThrow2['throwError'] = left // instances // ------------------------------------------------------------------------------------- -const map_: (fa: Either, f: (a: A) => B) => Either = (ma, f) => - isLeft(ma) ? ma : right(f(ma.right)) -const ap_: (fab: Either B>, fa: Either) => Either = (mab, ma) => - isLeft(mab) ? mab : isLeft(ma) ? ma : right(mab.right(ma.right)) -const of = right -const chain_: (fa: Either, f: (a: A) => Either) => Either = (ma, f) => - isLeft(ma) ? ma : f(ma.right) -const reduce_: (fa: Either, b: B, f: (b: B, a: A) => B) => B = (fa, b, f) => - isLeft(fa) ? b : f(b, fa.right) -const foldMap_: (M: Monoid) => (fa: Either, f: (a: A) => M) => M = (M) => (fa, f) => - isLeft(fa) ? M.empty : f(fa.right) -const reduceRight_: (fa: Either, b: B, f: (a: A, b: B) => B) => B = (fa, b, f) => - isLeft(fa) ? b : f(fa.right, b) -const traverse_ = (F: Applicative) => ( - ma: Either, - f: (a: A) => HKT -): HKT> => { - return isLeft(ma) ? F.of(left(ma.left)) : F.map>(f(ma.right), right) -} -const bimap_: (fea: Either, f: (e: E) => G, g: (a: A) => B) => Either = (fea, f, g) => - isLeft(fea) ? left(f(fea.left)) : right(g(fea.right)) -const mapLeft_: (fea: Either, f: (e: E) => G) => Either = (fea, f) => - isLeft(fea) ? left(f(fea.left)) : fea -const alt_: (fa: Either, that: Lazy>) => Either = (fa, that) => - isLeft(fa) ? that() : fa -const extend_: (wa: Either, f: (wa: Either) => B) => Either = (wa, f) => - isLeft(wa) ? wa : right(f(wa)) -const chainRec_: (a: A, f: (a: A) => Either>) => Either = (a, f) => - tailRec(f(a), (e) => - isLeft(e) ? right(left(e.left)) : isLeft(e.right) ? left(f(e.right.left)) : right(right(e.right.right)) - ) - /** * @category instances * @since 2.0.0 diff --git a/src/IO.ts b/src/IO.ts index dce66d13b..a39fc7914 100644 --- a/src/IO.ts +++ b/src/IO.ts @@ -32,6 +32,21 @@ export interface IO { (): A } +// ------------------------------------------------------------------------------------- +// non-pipeables +// ------------------------------------------------------------------------------------- + +const map_: Monad1['map'] = (ma, f) => () => f(ma()) +const ap_: Monad1['ap'] = (mab, ma) => () => mab()(ma()) +const chain_: Monad1['chain'] = (ma, f) => () => f(ma())() +const chainRec_: ChainRec1['chainRec'] = (a, f) => () => { + let e = f(a)() + while (e._tag === 'Left') { + e = f(e.left)() + } + return e.right +} + // ------------------------------------------------------------------------------------- // pipeables // ------------------------------------------------------------------------------------- @@ -115,17 +130,6 @@ export const fromIO: MonadIO1['fromIO'] = identity // instances // ------------------------------------------------------------------------------------- -const map_: (fa: IO, f: (a: A) => B) => IO = (ma, f) => () => f(ma()) -const ap_: (fab: IO<(a: A) => B>, fa: IO) => IO = (mab, ma) => () => mab()(ma()) -const chain_: (fa: IO, f: (a: A) => IO) => IO = (ma, f) => () => f(ma())() -const chainRec_: ChainRec1['chainRec'] = (a, f) => () => { - let e = f(a)() - while (e._tag === 'Left') { - e = f(e.left)() - } - return e.right -} - /** * @category instances * @since 2.0.0 diff --git a/src/IOEither.ts b/src/IOEither.ts index 72d293f85..3a471c5b5 100644 --- a/src/IOEither.ts +++ b/src/IOEither.ts @@ -166,6 +166,47 @@ export const chainEitherK: ( f: (a: A) => Either ) => (ma: IOEither) => IOEither = chainEitherKW +/** + * @category constructors + * @since 2.0.0 + */ +export const fromOption: (onNone: Lazy) => (ma: Option) => IOEither = (onNone) => (ma) => + ma._tag === 'None' ? left(onNone()) : right(ma.value) + +/** + * @category constructors + * @since 2.0.0 + */ +export const fromPredicate: { + (refinement: Refinement, onFalse: (a: A) => E): (a: A) => IOEither + (predicate: Predicate, onFalse: (a: A) => E): (a: A) => IOEither +} = (predicate: Predicate, onFalse: (a: A) => E) => (a: A) => (predicate(a) ? right(a) : left(onFalse(a))) + +/** + * @category constructors + * @since 2.0.0 + */ +export const fromEither: (ma: E.Either) => IOEither = (ma) => + E.isLeft(ma) ? left(ma.left) : right(ma.right) + +// ------------------------------------------------------------------------------------- +// non-pipeables +// ------------------------------------------------------------------------------------- + +/* istanbul ignore next */ +const map_: Monad2['map'] = (fa, f) => pipe(fa, map(f)) +/* istanbul ignore next */ +const ap_: Monad2['ap'] = (fab, fa) => pipe(fab, ap(fa)) +const of = right +/* istanbul ignore next */ +const chain_: Monad2['chain'] = (ma, f) => pipe(ma, chain(f)) +/* istanbul ignore next */ +const bimap_: Bifunctor2['bimap'] = (fa, f, g) => pipe(fa, bimap(f, g)) +/* istanbul ignore next */ +const mapLeft_: Bifunctor2['mapLeft'] = (fa, f) => pipe(fa, mapLeft(f)) +/* istanbul ignore next */ +const alt_: Alt2['alt'] = (fa, that) => pipe(fa, alt(that)) + // ------------------------------------------------------------------------------------- // pipeables // ------------------------------------------------------------------------------------- @@ -282,29 +323,6 @@ export const flatten: (mma: IOEither>) => IOEither export const alt: (that: Lazy>) => (fa: IOEither) => IOEither = (that) => I.chain(E.fold(that, right)) -/** - * @category constructors - * @since 2.0.0 - */ -export const fromOption: (onNone: Lazy) => (ma: Option) => IOEither = (onNone) => (ma) => - ma._tag === 'None' ? left(onNone()) : right(ma.value) - -/** - * @category constructors - * @since 2.0.0 - */ -export const fromPredicate: { - (refinement: Refinement, onFalse: (a: A) => E): (a: A) => IOEither - (predicate: Predicate, onFalse: (a: A) => E): (a: A) => IOEither -} = (predicate: Predicate, onFalse: (a: A) => E) => (a: A) => (predicate(a) ? right(a) : left(onFalse(a))) - -/** - * @category constructors - * @since 2.0.0 - */ -export const fromEither: (ma: E.Either) => IOEither = (ma) => - E.isLeft(ma) ? left(ma.left) : right(ma.right) - /** * @category MonadIO * @since 2.7.0 @@ -339,20 +357,6 @@ declare module './HKT' { } } -/* istanbul ignore next */ -const map_: Monad2['map'] = (fa, f) => pipe(fa, map(f)) -/* istanbul ignore next */ -const bimap_: Bifunctor2['bimap'] = (fa, f, g) => pipe(fa, bimap(f, g)) -/* istanbul ignore next */ -const mapLeft_: Bifunctor2['mapLeft'] = (fa, f) => pipe(fa, mapLeft(f)) -/* istanbul ignore next */ -const ap_: Monad2['ap'] = (fab, fa) => pipe(fab, ap(fa)) -const of = right -/* istanbul ignore next */ -const chain_: Monad2['chain'] = (ma, f) => pipe(ma, chain(f)) -/* istanbul ignore next */ -const alt_: Alt2['alt'] = (fa, that) => pipe(fa, alt(that)) - /** * Semigroup returning the left-most non-`Left` value. If both operands are `Right`s then the inner values are * concatenated using the provided `Semigroup` diff --git a/src/Identity.ts b/src/Identity.ts index 1dad9bf8a..7185bfbd0 100644 --- a/src/Identity.ts +++ b/src/Identity.ts @@ -6,8 +6,9 @@ import { Applicative, Applicative1 } from './Applicative' import { ChainRec1, tailRec } from './ChainRec' import { Comonad1 } from './Comonad' import { Eq } from './Eq' +import { Extend1 } from './Extend' import { Foldable1 } from './Foldable' -import { identity as id, Lazy } from './function' +import { identity as id } from './function' import { Functor1 } from './Functor' import { HKT } from './HKT' import { Monad1 } from './Monad' @@ -25,17 +26,21 @@ import { PipeableTraverse1, Traversable1 } from './Traversable' */ export type Identity = A -/** - * @category instances - * @since 2.0.0 - */ -export const getShow: (S: Show) => Show> = id +// ------------------------------------------------------------------------------------- +// non-pipeables +// ------------------------------------------------------------------------------------- -/** - * @category instances - * @since 2.0.0 - */ -export const getEq: (E: Eq) => Eq> = id +const map_: Monad1['map'] = (ma, f) => f(ma) +const ap_: Monad1['ap'] = (mab, ma) => mab(ma) +const chain_: Monad1['chain'] = (ma, f) => f(ma) +const reduce_: Foldable1['reduce'] = (fa, b, f) => f(b, fa) +const foldMap_: Foldable1['foldMap'] = (_) => (fa, f) => f(fa) +const reduceRight_: Foldable1['reduceRight'] = (fa, b, f) => f(fa, b) +const alt_: Alt1['alt'] = id +const extend_: Extend1['extend'] = (wa, f) => f(wa) +const traverse_ = (F: Applicative) => (ta: Identity, f: (a: A) => HKT): HKT> => + F.map(f(ta), id) +const chainRec_: ChainRec1['chainRec'] = tailRec // ------------------------------------------------------------------------------------- // pipeables @@ -101,6 +106,12 @@ export const apSecond = (fb: Identity) => (fa: Identity): Identity['of'] = id + /** * Composes computations in sequence, using the return value of one computation to determine the next computation. * @@ -179,19 +190,6 @@ export const map: (f: (a: A) => B) => (fa: Identity) => Identity = ( // instances // ------------------------------------------------------------------------------------- -const alt_: (fa: A, that: Lazy) => A = id -const extend_: (wa: A, f: (wa: A) => B) => B = (wa, f) => f(wa) -const map_: (fa: Identity, f: (a: A) => B) => Identity = (ma, f) => f(ma) -const ap_: (fab: Identity<(a: A) => B>, fa: Identity) => Identity = (mab, ma) => mab(ma) -const chain_: (fa: Identity, f: (a: A) => Identity) => Identity = (ma, f) => f(ma) -const reduce_: (fa: Identity, b: B, f: (b: B, a: A) => B) => B = (fa, b, f) => f(b, fa) -const foldMap_: (M: Monoid) => (fa: Identity, f: (a: A) => M) => M = (_) => (fa, f) => f(fa) -const reduceRight_: (fa: Identity, b: B, f: (a: A, b: B) => B) => B = (fa, b, f) => f(fa, b) -const traverse_ = (F: Applicative) => (ta: Identity, f: (a: A) => HKT): HKT> => - F.map(f(ta), id) -const of = id -const chainRec_ = tailRec - /** * @category instances * @since 2.0.0 @@ -210,6 +208,18 @@ declare module './HKT' { } } +/** + * @category instances + * @since 2.0.0 + */ +export const getShow: (S: Show) => Show> = id + +/** + * @category instances + * @since 2.0.0 + */ +export const getEq: (E: Eq) => Eq> = id + /** * @category instances * @since 2.7.0 diff --git a/src/Map.ts b/src/Map.ts index b0aa3f8bc..69fb40891 100644 --- a/src/Map.ts +++ b/src/Map.ts @@ -235,6 +235,16 @@ export function fromFoldable(E: Eq, M: Magma, F: Foldable): (f return RM.fromFoldable(E, M, F) as any } +// ------------------------------------------------------------------------------------- +// non-pipeables +// ------------------------------------------------------------------------------------- + +const map__: Functor2['map'] = RM.functorMap.map as any +const filter_: Filterable2['filter'] = RM.filterableMap.filter as any +const filterMap_: Filterable2['filterMap'] = RM.filterableMap.filterMap as any +const partition_: Filterable2['partition'] = RM.filterableMap.partition as any +const partitionMap_: Filterable2['partitionMap'] = RM.filterableMap.partitionMap as any + // ------------------------------------------------------------------------------------- // pipeables // ------------------------------------------------------------------------------------- @@ -296,12 +306,6 @@ export const separate: (fa: Map>) => Separated['map'] = RM.functorMap.map as any -const filter_: Filterable2['filter'] = RM.filterableMap.filter as any -const filterMap_: Filterable2['filterMap'] = RM.filterableMap.filterMap as any -const partition_: Filterable2['partition'] = RM.filterableMap.partition as any -const partitionMap_: Filterable2['partitionMap'] = RM.filterableMap.partitionMap as any - /** * @category instances * @since 2.0.0 diff --git a/src/NonEmptyArray.ts b/src/NonEmptyArray.ts index c29c9f98d..92e9c4bd2 100644 --- a/src/NonEmptyArray.ts +++ b/src/NonEmptyArray.ts @@ -5,7 +5,6 @@ */ import { Alt1 } from './Alt' import { Applicative1 } from './Applicative' -import { Apply1 } from './Apply' import { Comonad1 } from './Comonad' import { Eq } from './Eq' import { Extend1 } from './Extend' @@ -315,6 +314,30 @@ export const zip: { */ export const unzip: (as: NonEmptyArray<[A, B]>) => [NonEmptyArray, NonEmptyArray] = RNEA.unzip as any +// ------------------------------------------------------------------------------------- +// non-pipeables +// ------------------------------------------------------------------------------------- + +const map_: Monad1['map'] = RNEA.functorNonEmptyArray.map as any +const mapWithIndex_: FunctorWithIndex1['mapWithIndex'] = RNEA.functorWithIndexNonEmptyArray + .mapWithIndex as any +const ap_: Monad1['ap'] = RNEA.applicativeNonEmptyArray.ap as any +const chain_: Monad1['chain'] = RNEA.monadNonEmptyArray.chain as any +const extend_: Extend1['extend'] = RNEA.comonadNonEmptyArray.extend as any +const reduce_: Foldable1['reduce'] = RNEA.foldableNonEmptyArray.reduce as any +const foldMap_: Foldable1['foldMap'] = RNEA.foldableNonEmptyArray.foldMap as any +const reduceRight_: Foldable1['reduceRight'] = RNEA.foldableNonEmptyArray.reduceRight as any +const traverse_: Traversable1['traverse'] = RNEA.traversableNonEmptyArray.traverse as any +const alt_: Alt1['alt'] = RNEA.altNonEmptyArray.alt as any +const reduceWithIndex_: FoldableWithIndex1['reduceWithIndex'] = RNEA.foldableWithIndexNonEmptyArray + .reduceWithIndex as any +const foldMapWithIndex_: FoldableWithIndex1['foldMapWithIndex'] = RNEA.foldableWithIndexNonEmptyArray + .foldMapWithIndex as any +const reduceRightWithIndex_: FoldableWithIndex1['reduceRightWithIndex'] = RNEA + .foldableWithIndexNonEmptyArray.reduceRightWithIndex as any +const traverseWithIndex_: TraversableWithIndex1['traverseWithIndex'] = RNEA + .traversableWithIndexNonEmptyArray.traverseWithIndex as any + // ------------------------------------------------------------------------------------- // pipeables // ------------------------------------------------------------------------------------- @@ -473,26 +496,6 @@ export const extract: Comonad1['extract'] = head // instances // ------------------------------------------------------------------------------------- -const map_: Functor1['map'] = RNEA.functorNonEmptyArray.map as any -const mapWithIndex_: FunctorWithIndex1['mapWithIndex'] = RNEA.functorWithIndexNonEmptyArray - .mapWithIndex as any -const ap_: Apply1['ap'] = RNEA.applicativeNonEmptyArray.ap as any -const chain_: Monad1['chain'] = RNEA.monadNonEmptyArray.chain as any -const extend_: Extend1['extend'] = RNEA.comonadNonEmptyArray.extend as any -const reduce_: Foldable1['reduce'] = RNEA.foldableNonEmptyArray.reduce as any -const foldMap_: Foldable1['foldMap'] = RNEA.foldableNonEmptyArray.foldMap as any -const reduceRight_: Foldable1['reduceRight'] = RNEA.foldableNonEmptyArray.reduceRight as any -const traverse_: Traversable1['traverse'] = RNEA.traversableNonEmptyArray.traverse as any -const alt_: Alt1['alt'] = RNEA.altNonEmptyArray.alt as any -const reduceWithIndex_: FoldableWithIndex1['reduceWithIndex'] = RNEA.foldableWithIndexNonEmptyArray - .reduceWithIndex as any -const foldMapWithIndex_: FoldableWithIndex1['foldMapWithIndex'] = RNEA.foldableWithIndexNonEmptyArray - .foldMapWithIndex as any -const reduceRightWithIndex_: FoldableWithIndex1['reduceRightWithIndex'] = RNEA - .foldableWithIndexNonEmptyArray.reduceRightWithIndex as any -const traverseWithIndex_: TraversableWithIndex1['traverseWithIndex'] = RNEA - .traversableWithIndexNonEmptyArray.traverseWithIndex as any - /** * @category instances * @since 2.0.0 diff --git a/src/Option.ts b/src/Option.ts index 44ea2cb8b..1056dd17f 100644 --- a/src/Option.ts +++ b/src/Option.ts @@ -378,6 +378,50 @@ export function mapNullable(f: (a: A) => B | null | undefined): (ma: Optio return (ma) => (isNone(ma) ? none : fromNullable(f(ma.value))) } +// ------------------------------------------------------------------------------------- +// non-pipeables +// ------------------------------------------------------------------------------------- + +const map_: Monad1['map'] = (fa, f) => (isNone(fa) ? none : some(f(fa.value))) +const ap_: Monad1['ap'] = (fab, fa) => (isNone(fab) ? none : isNone(fa) ? none : some(fab.value(fa.value))) +const chain_: Monad1['chain'] = (ma, f) => (isNone(ma) ? none : f(ma.value)) +const reduce_: Foldable1['reduce'] = (fa, b, f) => (isNone(fa) ? b : f(b, fa.value)) +const foldMap_: Foldable1['foldMap'] = (M) => (fa, f) => (isNone(fa) ? M.empty : f(fa.value)) +const reduceRight_: Foldable1['reduceRight'] = (fa, b, f) => (isNone(fa) ? b : f(fa.value, b)) +const traverse_ = (F: Applicative) => (ta: Option, f: (a: A) => HKT): HKT> => { + return isNone(ta) ? F.of(none) : F.map(f(ta.value), some) +} +const alt_: Alt1['alt'] = (fa, that) => (isNone(fa) ? that() : fa) +const filter_ = (fa: Option, predicate: Predicate): Option => + isNone(fa) ? none : predicate(fa.value) ? fa : none +const filterMap_: Filterable1['filterMap'] = (ma, f) => (isNone(ma) ? none : f(ma.value)) +const extend_: Extend1['extend'] = (wa, f) => (isNone(wa) ? none : some(f(wa))) +const partition_ = (fa: Option, predicate: Predicate): Separated, Option> => { + return { + left: filter_(fa, (a) => !predicate(a)), + right: filter_(fa, predicate) + } +} +const partitionMap_: Filterable1['partitionMap'] = (fa, f) => separate(map_(fa, f)) +const wither_ = (F: Applicative) => (fa: Option, f: (a: A) => HKT>): HKT> => + isNone(fa) ? F.of(none) : f(fa.value) +const wilt_ = (F: Applicative) => ( + fa: Option, + f: (a: A) => HKT> +): HKT, Option>> => { + const o = map_(fa, (a) => + F.map(f(a), (e) => ({ + left: getLeft(e), + right: getRight(e) + })) + ) + return isNone(o) + ? F.of({ + left: none, + right: none + }) + : o.value +} // ------------------------------------------------------------------------------------- // pipeables // ------------------------------------------------------------------------------------- @@ -420,6 +464,12 @@ export const apSecond = (fb: Option) => (fa: Option): Option => fb ) +/** + * @category Applicative + * @since 2.7.0 + */ +export const of: Applicative1['of'] = some + /** * Composes computations in sequence, using the return value of one computation to determine the next computation. * @@ -620,54 +670,6 @@ export const wilt: PipeableWilt1 = ( // instances // ------------------------------------------------------------------------------------- -const map_: (fa: Option, f: (a: A) => B) => Option = (fa, f) => (isNone(fa) ? none : some(f(fa.value))) -const ap_: (fab: Option<(a: A) => B>, fa: Option) => Option = (fab, fa) => - isNone(fab) ? none : isNone(fa) ? none : some(fab.value(fa.value)) -const of = some -const chain_: (fa: Option, f: (a: A) => Option) => Option = (ma, f) => (isNone(ma) ? none : f(ma.value)) -const reduce_: (fa: Option, b: B, f: (b: B, a: A) => B) => B = (fa, b, f) => (isNone(fa) ? b : f(b, fa.value)) -const foldMap_: (M: Monoid) => (fa: Option, f: (a: A) => M) => M = (M) => (fa, f) => - isNone(fa) ? M.empty : f(fa.value) -const reduceRight_: (fa: Option, b: B, f: (a: A, b: B) => B) => B = (fa, b, f) => - isNone(fa) ? b : f(fa.value, b) -const traverse_ = (F: Applicative) => (ta: Option, f: (a: A) => HKT): HKT> => { - return isNone(ta) ? F.of(none) : F.map(f(ta.value), some) -} -const alt_: (fa: Option, that: Lazy>) => Option = (fa, that) => (isNone(fa) ? that() : fa) -const filter_ = (fa: Option, predicate: Predicate): Option => - isNone(fa) ? none : predicate(fa.value) ? fa : none -const filterMap_: (fa: Option, f: (a: A) => Option) => Option = (ma, f) => - isNone(ma) ? none : f(ma.value) -const extend_: (wa: Option, f: (wa: Option) => B) => Option = (wa, f) => - isNone(wa) ? none : some(f(wa)) -const partition_ = (fa: Option, predicate: Predicate): Separated, Option> => { - return { - left: filter_(fa, (a) => !predicate(a)), - right: filter_(fa, predicate) - } -} -const partitionMap_: (fa: Option, f: (a: A) => Either) => Separated, Option> = (fa, f) => - separate(map_(fa, f)) -const wither_ = (F: Applicative) => (fa: Option, f: (a: A) => HKT>): HKT> => - isNone(fa) ? F.of(none) : f(fa.value) -const wilt_ = (F: Applicative) => ( - fa: Option, - f: (a: A) => HKT> -): HKT, Option>> => { - const o = map_(fa, (a) => - F.map(f(a), (e) => ({ - left: getLeft(e), - right: getRight(e) - })) - ) - return isNone(o) - ? F.of({ - left: none, - right: none - }) - : o.value -} - /** * @category instances * @since 2.0.0 diff --git a/src/Reader.ts b/src/Reader.ts index 1f2a199b7..2ea4d8380 100644 --- a/src/Reader.ts +++ b/src/Reader.ts @@ -58,11 +58,23 @@ export const asks: (f: (r: R) => A) => Reader = (f) => (r) => f(r) */ export const local: (f: (d: Q) => R) => (ma: Reader) => Reader = (f) => (ma) => (q) => ma(f(q)) -/** - * @category Applicative - * @since 2.0.0 - */ -export const of: (a: A) => Reader = (a) => () => a +// ------------------------------------------------------------------------------------- +// non-pipeables +// ------------------------------------------------------------------------------------- + +const map_: Monad2['map'] = (fa, f) => F.pipe(fa, map(f)) +const ap_: Monad2['ap'] = (fab, fa) => F.pipe(fab, ap(fa)) +/* istanbul ignore next */ +const chain_: Monad2['chain'] = (ma, f) => F.pipe(ma, chain(f)) +const compose_: (ab: Reader, la: Reader) => Reader = (ab, la) => (l) => ab(la(l)) +const promap_: (fbc: Reader, f: (d: D) => E, g: (a: A) => B) => Reader = (mbc, f, g) => (a) => + g(mbc(f(a))) +const first_: Strong2['first'] = (pab) => ([a, c]) => [pab(a), c] +const second_: Strong2['second'] = (pbc) => ([a, b]) => [a, pbc(b)] +const left_: Choice2['left'] = (pab: Reader): Reader, E.Either> => + E.fold>((a) => E.left(pab(a)), E.right) +const right_: Choice2['right'] = (pbc: Reader): Reader, E.Either> => + E.fold>(E.left, (b) => E.right(pbc(b))) // ------------------------------------------------------------------------------------- // pipeables @@ -112,6 +124,12 @@ export const apSecond = (fb: Reader) => (fa: Reader): Reade ap(fb) ) +/** + * @category Applicative + * @since 2.0.0 + */ +export const of: Applicative2['of'] = (a) => () => a + /** * Less strict version of [`chain`](#chain). * @@ -196,20 +214,6 @@ declare module './HKT' { } } -const map_: Monad2['map'] = (fa, f) => F.pipe(fa, map(f)) -const ap_: Monad2['ap'] = (fab, fa) => F.pipe(fab, ap(fa)) -/* istanbul ignore next */ -const chain_: Monad2['chain'] = (ma, f) => F.pipe(ma, chain(f)) -const compose_: (ab: Reader, la: Reader) => Reader = (ab, la) => (l) => ab(la(l)) -const promap_: (fbc: Reader, f: (d: D) => E, g: (a: A) => B) => Reader = (mbc, f, g) => (a) => - g(mbc(f(a))) -const first_: Strong2['first'] = (pab) => ([a, c]) => [pab(a), c] -const second_: Strong2['second'] = (pbc) => ([a, b]) => [a, pbc(b)] -const left_: Choice2['left'] = (pab: Reader): Reader, E.Either> => - E.fold>((a) => E.left(pab(a)), E.right) -const right_: Choice2['right'] = (pbc: Reader): Reader, E.Either> => - E.fold>(E.left, (b) => E.right(pbc(b))) - /** * @category instances * @since 2.0.0 diff --git a/src/ReaderEither.ts b/src/ReaderEither.ts index 6bd1aa541..99d2e116a 100644 --- a/src/ReaderEither.ts +++ b/src/ReaderEither.ts @@ -198,6 +198,24 @@ export const filterOrElse: { chain((a) => (predicate(a) ? right(a) : left(onFalse(a)))) ) +// ------------------------------------------------------------------------------------- +// non-pipeables +// ------------------------------------------------------------------------------------- + +/* istanbul ignore next */ +const map_: Monad3['map'] = (fa, f) => pipe(fa, map(f)) +/* istanbul ignore next */ +const bimap_: Bifunctor3['bimap'] = (fa, f, g) => pipe(fa, bimap(f, g)) +/* istanbul ignore next */ +const mapLeft_: Bifunctor3['mapLeft'] = (fa, f) => pipe(fa, mapLeft(f)) +/* istanbul ignore next */ +const ap_: Monad3['ap'] = (fab, fa) => pipe(fab, ap(fa)) +const of = right +/* istanbul ignore next */ +const chain_: Monad3['chain'] = (ma, f) => pipe(ma, chain(f)) +/* istanbul ignore next */ +const alt_: Alt3['alt'] = (fa, that) => pipe(fa, alt(that)) + // ------------------------------------------------------------------------------------- // pipeables // ------------------------------------------------------------------------------------- @@ -355,20 +373,6 @@ declare module './HKT' { } } -/* istanbul ignore next */ -const map_: Monad3['map'] = (fa, f) => pipe(fa, map(f)) -/* istanbul ignore next */ -const bimap_: Bifunctor3['bimap'] = (fa, f, g) => pipe(fa, bimap(f, g)) -/* istanbul ignore next */ -const mapLeft_: Bifunctor3['mapLeft'] = (fa, f) => pipe(fa, mapLeft(f)) -/* istanbul ignore next */ -const ap_: Monad3['ap'] = (fab, fa) => pipe(fab, ap(fa)) -const of = right -/* istanbul ignore next */ -const chain_: Monad3['chain'] = (ma, f) => pipe(ma, chain(f)) -/* istanbul ignore next */ -const alt_: Alt3['alt'] = (fa, that) => pipe(fa, alt(that)) - /** * Semigroup returning the left-most non-`Left` value. If both operands are `Right`s then the inner values are * concatenated using the provided `Semigroup` diff --git a/src/ReaderTask.ts b/src/ReaderTask.ts index 9d15b0bd0..47bcd8e52 100644 --- a/src/ReaderTask.ts +++ b/src/ReaderTask.ts @@ -108,6 +108,15 @@ export function fromTaskK, B>( export const chainTaskK: (f: (a: A) => Task) => (ma: ReaderTask) => ReaderTask = (f) => chain((a) => fromTask(f(a))) +// ------------------------------------------------------------------------------------- +// non-pipeables +// ------------------------------------------------------------------------------------- + +const map_: Monad2['map'] = (fa, f) => pipe(fa, map(f)) +const apPar_: Monad2['ap'] = (fab, fa) => pipe(fab, ap(fa)) +const apSeq_: Monad2['ap'] = (fab, fa) => chain_(fab, (f) => map_(fa, f)) +const chain_: Monad2['chain'] = (ma, f) => pipe(ma, chain(f)) + // ------------------------------------------------------------------------------------- // pipeables // ------------------------------------------------------------------------------------- @@ -228,11 +237,6 @@ declare module './HKT' { } } -const map_: Monad2['map'] = (fa, f) => pipe(fa, map(f)) -const apPar_: Monad2['ap'] = (fab, fa) => pipe(fab, ap(fa)) -const apSeq_: Monad2['ap'] = (fab, fa) => chain_(fab, (f) => map_(fa, f)) -const chain_: Monad2['chain'] = (ma, f) => pipe(ma, chain(f)) - /** * @category instances * @since 2.3.0 diff --git a/src/ReaderTaskEither.ts b/src/ReaderTaskEither.ts index 1d07712a6..69c8c96c1 100644 --- a/src/ReaderTaskEither.ts +++ b/src/ReaderTaskEither.ts @@ -353,6 +353,31 @@ export const chainTaskEitherK: ( f: (a: A) => TaskEither ) => (ma: ReaderTaskEither) => ReaderTaskEither = chainTaskEitherKW +// ------------------------------------------------------------------------------------- +// non-pipeables +// ------------------------------------------------------------------------------------- + +const map_: Monad3['map'] = (fa, f) => pipe(fa, map(f)) +const apPar_: Monad3['ap'] = (fab, fa) => pipe(fab, ap(fa)) +const apSeq_: Monad3['ap'] = (fab, fa) => chain_(fab, (f) => map_(fa, f)) +const chain_: Monad3['chain'] = (ma, f) => pipe(ma, chain(f)) +const alt_: ( + fa: ReaderTaskEither, + that: Lazy> +) => ReaderTaskEither = (fa, that) => (r) => + pipe( + fa(r), + TE.alt(() => that()(r)) + ) +const bimap_: ( + fea: ReaderTaskEither, + f: (e: E) => G, + g: (a: A) => B +) => ReaderTaskEither = (ma, f, g) => (e) => pipe(ma(e), TE.bimap(f, g)) +const mapLeft_: (fea: ReaderTaskEither, f: (e: E) => G) => ReaderTaskEither = (ma, f) => ( + e +) => pipe(ma(e), TE.mapLeft(f)) + // ------------------------------------------------------------------------------------- // pipeables // ------------------------------------------------------------------------------------- @@ -430,6 +455,12 @@ export const apSecond = (fb: ReaderTaskEither) => ( ap(fb) ) +/** + * @category Applicative + * @since 2.7.0 + */ +export const of: Applicative3['of'] = right + /** * Less strict version of [`chain`](#chain). * @@ -530,28 +561,6 @@ declare module './HKT' { } } -const map_: Monad3['map'] = (fa, f) => pipe(fa, map(f)) -const apPar_: Monad3['ap'] = (fab, fa) => pipe(fab, ap(fa)) -const apSeq_: Monad3['ap'] = (fab, fa) => chain_(fab, (f) => map_(fa, f)) -const of = right -const chain_: Monad3['chain'] = (ma, f) => pipe(ma, chain(f)) -const alt_: ( - fa: ReaderTaskEither, - that: Lazy> -) => ReaderTaskEither = (fa, that) => (r) => - pipe( - fa(r), - TE.alt(() => that()(r)) - ) -const bimap_: ( - fea: ReaderTaskEither, - f: (e: E) => G, - g: (a: A) => B -) => ReaderTaskEither = (ma, f, g) => (e) => pipe(ma(e), TE.bimap(f, g)) -const mapLeft_: (fea: ReaderTaskEither, f: (e: E) => G) => ReaderTaskEither = (ma, f) => ( - e -) => pipe(ma(e), TE.mapLeft(f)) - /** * Semigroup returning the left-most non-`Left` value. If both operands are `Right`s then the inner values are * concatenated using the provided `Semigroup` diff --git a/src/ReadonlyArray.ts b/src/ReadonlyArray.ts index 5d554765f..db6545050 100644 --- a/src/ReadonlyArray.ts +++ b/src/ReadonlyArray.ts @@ -1425,22 +1425,36 @@ export const of = (a: A): ReadonlyArray => [a] export const zero: Alternative1['zero'] = () => empty // ------------------------------------------------------------------------------------- -// pipeables +// non-pipeables // ------------------------------------------------------------------------------------- -const map_: (fa: ReadonlyArray, f: (a: A) => B) => ReadonlyArray = (fa, f) => fa.map((a) => f(a)) - -const ap_: (fab: ReadonlyArray<(a: A) => B>, fa: ReadonlyArray) => ReadonlyArray = (fab, fa) => - flatten(map_(fab, (f) => map_(fa, f))) - -const mapWithIndex_: (fa: ReadonlyArray, f: (i: number, a: A) => B) => ReadonlyArray = (fa, f) => - fa.map((a, i) => f(i, a)) - -const filterMap_: (fa: ReadonlyArray, f: (a: A) => Option) => ReadonlyArray = (as, f) => - filterMapWithIndex_(as, (_, a) => f(a)) - +const map_: Monad1['map'] = (fa, f) => fa.map((a) => f(a)) +const mapWithIndex_: FunctorWithIndex1['mapWithIndex'] = (fa, f) => fa.map((a, i) => f(i, a)) +const ap_: Monad1['ap'] = (fab, fa) => flatten(map_(fab, (f) => map_(fa, f))) +const chain_: Monad1['chain'] = (fa, f) => { + let outLen = 0 + const l = fa.length + const temp = new Array(l) + for (let i = 0; i < l; i++) { + const e = fa[i] + const arr = f(e) + outLen += arr.length + temp[i] = arr + } + const out = Array(outLen) + let start = 0 + for (let i = 0; i < l; i++) { + const arr = temp[i] + const l = arr.length + for (let j = 0; j < l; j++) { + out[j + start] = arr[j] + } + start += l + } + return out +} +const filterMap_: Filterable1['filterMap'] = (as, f) => filterMapWithIndex_(as, (_, a) => f(a)) const filter_: Filter1 = (as: ReadonlyArray, predicate: Predicate) => as.filter(predicate) - const partitionWithIndex_: PartitionWithIndex1 = ( fa: ReadonlyArray, predicateWithIndex: (i: number, a: A) => boolean @@ -1462,19 +1476,13 @@ const partitionWithIndex_: PartitionWithIndex1 = ( right } } - const partition_: Partition1 = ( fa: ReadonlyArray, predicate: Predicate ): Separated, ReadonlyArray> => { return partitionWithIndex_(fa, (_, a) => predicate(a)) } - -const partitionMap_: ( - fa: ReadonlyArray, - f: (a: A) => Either -) => Separated, ReadonlyArray> = (fa, f) => partitionMapWithIndex_(fa, (_, a) => f(a)) - +const partitionMap_: Filterable1['partitionMap'] = (fa, f) => partitionMapWithIndex_(fa, (_, a) => f(a)) const partitionMapWithIndex_ = ( fa: ReadonlyArray, f: (i: number, a: A) => Either @@ -1496,45 +1504,14 @@ const partitionMapWithIndex_ = ( right } } - -const alt_: (fa: ReadonlyArray, that: Lazy>) => ReadonlyArray = (fa, that) => - concat(fa, that()) - -const chain_: (fa: ReadonlyArray, f: (a: A) => ReadonlyArray) => ReadonlyArray = (fa, f) => { - let outLen = 0 - const l = fa.length - const temp = new Array(l) - for (let i = 0; i < l; i++) { - const e = fa[i] - const arr = f(e) - outLen += arr.length - temp[i] = arr - } - const out = Array(outLen) - let start = 0 - for (let i = 0; i < l; i++) { - const arr = temp[i] - const l = arr.length - for (let j = 0; j < l; j++) { - out[j + start] = arr[j] - } - start += l - } - return out -} - -const reduce_: (fa: ReadonlyArray, b: B, f: (b: B, a: A) => B) => B = (fa, b, f) => - reduceWithIndex_(fa, b, (_, b, a) => f(b, a)) - -const foldMap_: (M: Monoid) => (fa: ReadonlyArray, f: (a: A) => M) => M = (M) => { +const alt_: Alt1['alt'] = (fa, that) => concat(fa, that()) +const reduce_: Foldable1['reduce'] = (fa, b, f) => reduceWithIndex_(fa, b, (_, b, a) => f(b, a)) +const foldMap_: Foldable1['foldMap'] = (M) => { const foldMapWithIndexM = foldMapWithIndex_(M) return (fa, f) => foldMapWithIndexM(fa, (_, a) => f(a)) } - -const reduceRight_: (fa: ReadonlyArray, b: B, f: (a: A, b: B) => B) => B = (fa, b, f) => - reduceRightWithIndex_(fa, b, (_, a, b) => f(a, b)) - -const reduceWithIndex_: (fa: ReadonlyArray, b: B, f: (i: number, b: B, a: A) => B) => B = (fa, b, f) => { +const reduceRight_: Foldable1['reduceRight'] = (fa, b, f) => reduceRightWithIndex_(fa, b, (_, a, b) => f(a, b)) +const reduceWithIndex_: FoldableWithIndex1['reduceWithIndex'] = (fa, b, f) => { const l = fa.length let r = b for (let i = 0; i < l; i++) { @@ -1542,15 +1519,10 @@ const reduceWithIndex_: (fa: ReadonlyArray, b: B, f: (i: number, b: B, } return r } - -const foldMapWithIndex_: (M: Monoid) => (fa: ReadonlyArray, f: (i: number, a: A) => M) => M = (M) => ( - fa, - f -) => fa.reduce((b, a, i) => M.concat(b, f(i, a)), M.empty) - -const reduceRightWithIndex_: (fa: ReadonlyArray, b: B, f: (i: number, a: A, b: B) => B) => B = (fa, b, f) => +const foldMapWithIndex_: FoldableWithIndex1['foldMapWithIndex'] = (M) => (fa, f) => + fa.reduce((b, a, i) => M.concat(b, f(i, a)), M.empty) +const reduceRightWithIndex_: FoldableWithIndex1['reduceRightWithIndex'] = (fa, b, f) => fa.reduceRight((b, a, i) => f(i, a, b), b) - const filterMapWithIndex_ = (fa: ReadonlyArray, f: (i: number, a: A) => Option): ReadonlyArray => { // tslint:disable-next-line: readonly-array const result: Array = [] @@ -1562,24 +1534,19 @@ const filterMapWithIndex_ = (fa: ReadonlyArray, f: (i: number, a: A) => } return result } - const filterWithIndex_ = ( fa: ReadonlyArray, predicateWithIndex: (i: number, a: A) => boolean ): ReadonlyArray => { return fa.filter((a, i) => predicateWithIndex(i, a)) } - -const extend_: (wa: ReadonlyArray, f: (wa: ReadonlyArray) => B) => ReadonlyArray = (fa, f) => - fa.map((_, i, as) => f(as.slice(i))) - +const extend_: Extend1['extend'] = (fa, f) => fa.map((_, i, as) => f(as.slice(i))) const traverse_ = ( F: Applicative ): ((ta: ReadonlyArray, f: (a: A) => HKT) => HKT>) => { const traverseWithIndexF = traverseWithIndex_(F) return (ta, f) => traverseWithIndexF(ta, (_, a) => f(a)) } - const traverseWithIndex_ = (F: Applicative) => ( ta: ReadonlyArray, f: (i: number, a: A) => HKT @@ -1591,14 +1558,12 @@ const traverseWithIndex_ = (F: Applicative) => ( ) ) } - const wither_ = ( F: Applicative ): ((ta: ReadonlyArray, f: (a: A) => HKT>) => HKT>) => { const traverseF = traverse_(F) return (wa, f) => F.map(traverseF(wa, f), compact) } - const wilt_ = ( F: Applicative ): (( @@ -1609,6 +1574,10 @@ const wilt_ = ( return (wa, f) => F.map(traverseF(wa, f), separate) } +// ------------------------------------------------------------------------------------- +// pipeables +// ------------------------------------------------------------------------------------- + /** * Identifies an associative operation on a type constructor. It is similar to `Semigroup`, except that it applies to * types of kind `* -> *`. diff --git a/src/ReadonlyMap.ts b/src/ReadonlyMap.ts index 050dab9f7..1397b91a3 100644 --- a/src/ReadonlyMap.ts +++ b/src/ReadonlyMap.ts @@ -593,27 +593,22 @@ const filterWithIndex_ = (fa: ReadonlyMap, p: (k: K, a: A) => boolea } // ------------------------------------------------------------------------------------- -// pipeables +// non-pipeables // ------------------------------------------------------------------------------------- -const map_: (fa: ReadonlyMap, f: (a: A) => B) => ReadonlyMap = (fa, f) => - mapWithIndex_(fa, (_, a) => f(a)) - +const map_: Functor2['map'] = (fa, f) => mapWithIndex_(fa, (_, a) => f(a)) const filter_ = (fa: ReadonlyMap, p: Predicate): ReadonlyMap => filterWithIndex_(fa, (_, a) => p(a)) - -const filterMap_: (fa: ReadonlyMap, f: (a: A) => Option) => ReadonlyMap = (fa, f) => - filterMapWithIndex_(fa, (_, a) => f(a)) - +const filterMap_: Filterable2['filterMap'] = (fa, f) => filterMapWithIndex_(fa, (_, a) => f(a)) const partition_ = ( fa: ReadonlyMap, predicate: Predicate ): Separated, ReadonlyMap> => partitionWithIndex_(fa, (_, a) => predicate(a)) +const partitionMap_: Filterable2['partitionMap'] = (fa, f) => partitionMapWithIndex_(fa, (_, a) => f(a)) -const partitionMap_: ( - fa: ReadonlyMap, - f: (a: A) => Either -) => Separated, ReadonlyMap> = (fa, f) => partitionMapWithIndex_(fa, (_, a) => f(a)) +// ------------------------------------------------------------------------------------- +// pipeables +// ------------------------------------------------------------------------------------- /** * @category Compactable diff --git a/src/ReadonlyNonEmptyArray.ts b/src/ReadonlyNonEmptyArray.ts index d32844008..db62f5493 100644 --- a/src/ReadonlyNonEmptyArray.ts +++ b/src/ReadonlyNonEmptyArray.ts @@ -372,6 +372,29 @@ export const unzip: ( as: ReadonlyNonEmptyArray ) => readonly [ReadonlyNonEmptyArray, ReadonlyNonEmptyArray] = RA.unzip as any +// ------------------------------------------------------------------------------------- +// non-pipeables +// ------------------------------------------------------------------------------------- + +const map_: Functor1['map'] = RA.functorArray.map as any +const mapWithIndex_: FunctorWithIndex1['mapWithIndex'] = RA.functorWithIndexArray.mapWithIndex as any +const ap_: Apply1['ap'] = RA.applicativeArray.ap as any +const chain_: Monad1['chain'] = RA.monadArray.chain as any +const extend_: Extend1['extend'] = RA.extendArray.extend as any +const reduce_: Foldable1['reduce'] = RA.foldableArray.reduce as any +const foldMap_: Foldable1['foldMap'] = RA.foldableArray.foldMap as any +const reduceRight_: Foldable1['reduceRight'] = RA.foldableArray.reduceRight as any +const traverse_: Traversable1['traverse'] = RA.traversableArray.traverse as any +const alt_: Alt1['alt'] = RA.altArray.alt as any +const reduceWithIndex_: FoldableWithIndex1['reduceWithIndex'] = RA.foldableWithIndexArray + .reduceWithIndex as any +const foldMapWithIndex_: FoldableWithIndex1['foldMapWithIndex'] = RA.foldableWithIndexArray + .foldMapWithIndex as any +const reduceRightWithIndex_: FoldableWithIndex1['reduceRightWithIndex'] = RA.foldableWithIndexArray + .reduceRightWithIndex as any +const traverseWithIndex_: TraversableWithIndex1['traverseWithIndex'] = RA.traversableWithIndexArray + .traverseWithIndex as any + // ------------------------------------------------------------------------------------- // pipeables // ------------------------------------------------------------------------------------- @@ -544,25 +567,6 @@ export const extract: Comonad1['extract'] = head // instances // ------------------------------------------------------------------------------------- -const map_: Functor1['map'] = RA.functorArray.map as any -const mapWithIndex_: FunctorWithIndex1['mapWithIndex'] = RA.functorWithIndexArray.mapWithIndex as any -const ap_: Apply1['ap'] = RA.applicativeArray.ap as any -const chain_: Monad1['chain'] = RA.monadArray.chain as any -const extend_: Extend1['extend'] = RA.extendArray.extend as any -const reduce_: Foldable1['reduce'] = RA.foldableArray.reduce as any -const foldMap_: Foldable1['foldMap'] = RA.foldableArray.foldMap as any -const reduceRight_: Foldable1['reduceRight'] = RA.foldableArray.reduceRight as any -const traverse_: Traversable1['traverse'] = RA.traversableArray.traverse as any -const alt_: Alt1['alt'] = RA.altArray.alt as any -const reduceWithIndex_: FoldableWithIndex1['reduceWithIndex'] = RA.foldableWithIndexArray - .reduceWithIndex as any -const foldMapWithIndex_: FoldableWithIndex1['foldMapWithIndex'] = RA.foldableWithIndexArray - .foldMapWithIndex as any -const reduceRightWithIndex_: FoldableWithIndex1['reduceRightWithIndex'] = RA.foldableWithIndexArray - .reduceRightWithIndex as any -const traverseWithIndex_: TraversableWithIndex1['traverseWithIndex'] = RA.traversableWithIndexArray - .traverseWithIndex as any - /** * @category instances * @since 2.5.0 diff --git a/src/ReadonlyRecord.ts b/src/ReadonlyRecord.ts index a974f074a..20cd28555 100644 --- a/src/ReadonlyRecord.ts +++ b/src/ReadonlyRecord.ts @@ -751,66 +751,42 @@ export function elem( } // ------------------------------------------------------------------------------------- -// pipeables +// non-pipeables // ------------------------------------------------------------------------------------- -const map_: (fa: Readonly>, f: (a: A) => B) => Readonly> = (fa, f) => - mapWithIndex_(fa, (_, a) => f(a)) - -const reduce_: (fa: Readonly>, b: B, f: (b: B, a: A) => B) => B = (fa, b, f) => - reduceWithIndex_(fa, b, (_, b, a) => f(b, a)) - -const foldMap_: (M: Monoid) => (fa: Readonly>, f: (a: A) => M) => M = (M) => { +const map_: Functor1['map'] = (fa, f) => mapWithIndex_(fa, (_, a) => f(a)) +const mapWithIndex_ = (fa: ReadonlyRecord, f: (k: string, a: A) => B) => { + const out: Record = {} + const keys = Object.keys(fa) + for (const key of keys) { + out[key] = f(key, fa[key]) + } + return out +} +const reduce_: Foldable1['reduce'] = (fa, b, f) => reduceWithIndex_(fa, b, (_, b, a) => f(b, a)) +const foldMap_: Foldable1['foldMap'] = (M) => { const foldMapWithIndexM = foldMapWithIndex_(M) return (fa, f) => foldMapWithIndexM(fa, (_, a) => f(a)) } - -const reduceRight_: (fa: Readonly>, b: B, f: (a: A, b: B) => B) => B = (fa, b, f) => - reduceRightWithIndex_(fa, b, (_, a, b) => f(a, b)) - +const reduceRight_: Foldable1['reduceRight'] = (fa, b, f) => reduceRightWithIndex_(fa, b, (_, a, b) => f(a, b)) const traverse_ = ( F: Applicative ): ((ta: ReadonlyRecord, f: (a: A) => HKT) => HKT>) => { const traverseWithIndexF = traverseWithIndex_(F) return (ta, f) => traverseWithIndexF(ta, (_, a) => f(a)) } - const filter_ = (fa: ReadonlyRecord, predicate: Predicate): ReadonlyRecord => { return filterWithIndex_(fa, (_, a) => predicate(a)) } - -const filterMap_: (fa: Readonly>, f: (a: A) => Option) => Readonly> = ( - fa, - f -) => filterMapWithIndex_(fa, (_, a) => f(a)) - +const filterMap_: Filterable1['filterMap'] = (fa, f) => filterMapWithIndex_(fa, (_, a) => f(a)) const partition_ = ( fa: ReadonlyRecord, predicate: Predicate ): Separated, ReadonlyRecord> => { return partitionWithIndex_(fa, (_, a) => predicate(a)) } - -const partitionMap_: ( - fa: Readonly>, - f: (a: A) => Either -) => Separated>, Readonly>> = (fa, f) => - partitionMapWithIndex_(fa, (_, a) => f(a)) - -const mapWithIndex_ = (fa: ReadonlyRecord, f: (k: string, a: A) => B) => { - const out: Record = {} - const keys = Object.keys(fa) - for (const key of keys) { - out[key] = f(key, fa[key]) - } - return out -} - -const reduceWithIndex_: (fa: Readonly>, b: B, f: (i: string, b: B, a: A) => B) => B = ( - fa, - b, - f -) => { +const partitionMap_: Filterable1['partitionMap'] = (fa, f) => partitionMapWithIndex_(fa, (_, a) => f(a)) +const reduceWithIndex_: FoldableWithIndex1['reduceWithIndex'] = (fa, b, f) => { let out = b const ks = keys(fa) const len = ks.length @@ -820,10 +796,7 @@ const reduceWithIndex_: (fa: Readonly>, b: B, f: (i: str } return out } - -const foldMapWithIndex_: (M: Monoid) => (fa: Readonly>, f: (i: string, a: A) => M) => M = ( - M -) => (fa, f) => { +const foldMapWithIndex_: FoldableWithIndex1['foldMapWithIndex'] = (M) => (fa, f) => { let out = M.empty const ks = keys(fa) const len = ks.length @@ -833,12 +806,7 @@ const foldMapWithIndex_: (M: Monoid) => (fa: Readonly } return out } - -const reduceRightWithIndex_: (fa: Readonly>, b: B, f: (i: string, a: A, b: B) => B) => B = ( - fa, - b, - f -) => { +const reduceRightWithIndex_: FoldableWithIndex1['reduceRightWithIndex'] = (fa, b, f) => { let out = b const ks = keys(fa) const len = ks.length @@ -848,14 +816,10 @@ const reduceRightWithIndex_: (fa: Readonly>, b: B, f: (i } return out } - -const partitionMapWithIndex_: ( - fa: Readonly>, - f: (i: string, a: A) => Either -) => Separated>, Readonly>> = ( +const partitionMapWithIndex_ = ( fa: ReadonlyRecord, f: (key: string, a: A) => Either -) => { +): Separated>, Readonly>> => { const left: Record = {} const right: Record = {} const keys = Object.keys(fa) @@ -875,7 +839,6 @@ const partitionMapWithIndex_: ( right } } - const partitionWithIndex_ = (fa: ReadonlyRecord, predicateWithIndex: PredicateWithIndex) => { const left: Record = {} const right: Record = {} @@ -893,7 +856,6 @@ const partitionWithIndex_ = (fa: ReadonlyRecord, predicateWithInde right } } - const filterMapWithIndex_ = (fa: ReadonlyRecord, f: (key: string, a: A) => Option) => { const r: Record = {} const keys = Object.keys(fa) @@ -905,7 +867,6 @@ const filterMapWithIndex_ = (fa: ReadonlyRecord, f: (key: strin } return r } - const filterWithIndex_ = (fa: ReadonlyRecord, predicateWithIndex: PredicateWithIndex) => { const out: Record = {} let changed = false @@ -921,7 +882,6 @@ const filterWithIndex_ = (fa: ReadonlyRecord, predicateWithIndex: } return changed ? out : fa } - const traverseWithIndex_ = (F: Applicative) => ( ta: ReadonlyRecord, f: (k: string, a: A) => HKT @@ -942,14 +902,12 @@ const traverseWithIndex_ = (F: Applicative) => ( } return fr } - const wither_ = ( F: Applicative ): ((wa: ReadonlyRecord, f: (a: A) => HKT>) => HKT>) => { const traverseF = traverse_(F) return (wa, f) => F.map(traverseF(wa, f), compact) } - const wilt_ = ( F: Applicative ): (( @@ -960,6 +918,10 @@ const wilt_ = ( return (wa, f) => F.map(traverseF(wa, f), separate) } +// ------------------------------------------------------------------------------------- +// pipeables +// ------------------------------------------------------------------------------------- + /** * @category Filterable * @since 2.5.0 diff --git a/src/ReadonlyTuple.ts b/src/ReadonlyTuple.ts index f19d2a4bb..6c413b1fa 100644 --- a/src/ReadonlyTuple.ts +++ b/src/ReadonlyTuple.ts @@ -17,6 +17,7 @@ import { Monoid } from './Monoid' import { Semigroup } from './Semigroup' import { Semigroupoid2 } from './Semigroupoid' import { PipeableTraverse2, Traversable2 } from './Traversable' +import { Extend2 } from './Extend' // ------------------------------------------------------------------------------------- // model @@ -141,6 +142,25 @@ export function getChainRec(M: Monoid): ChainRec2C { } } +// ------------------------------------------------------------------------------------- +// non-pipeables +// ------------------------------------------------------------------------------------- + +const compose_: Semigroupoid2['compose'] = (ba, ae) => [fst(ba), snd(ae)] +const map_: Functor2['map'] = (ae, f) => [f(fst(ae)), snd(ae)] +const bimap_: Bifunctor2['bimap'] = (fea, f, g) => [g(fst(fea)), f(snd(fea))] +const mapLeft_: Bifunctor2['mapLeft'] = (fea, f) => [fst(fea), f(snd(fea))] +const extend_: Extend2['extend'] = (ae, f) => [f(ae), snd(ae)] +const reduce_: Foldable2['reduce'] = (ae, b, f) => f(b, fst(ae)) +const foldMap_: Foldable2['foldMap'] = (_) => (ae, f) => f(fst(ae)) +const reduceRight_: Foldable2['reduceRight'] = (ae, b, f) => f(fst(ae), b) +const traverse_ = (F: Applicative) => ( + as: readonly [A, S], + f: (a: A) => HKT +): HKT => { + return F.map(f(fst(as)), (b) => [b, snd(as)]) +} + // ------------------------------------------------------------------------------------- // pipeables // ------------------------------------------------------------------------------------- @@ -246,27 +266,6 @@ export const sequence: Traversable2['sequence'] = (F: Applicative) => // instances // ------------------------------------------------------------------------------------- -const compose_: (ab: readonly [B, A], la: readonly [A, E]) => readonly [B, E] = (ba, ae) => [fst(ba), snd(ae)] -const map_: (fa: readonly [A, E], f: (a: A) => B) => readonly [B, E] = (ae, f) => [f(fst(ae)), snd(ae)] -const bimap_: (fea: readonly [A, E], f: (e: E) => G, g: (a: A) => B) => readonly [B, G] = (fea, f, g) => [ - g(fst(fea)), - f(snd(fea)) -] -const mapLeft_: (fea: readonly [A, E], f: (e: E) => G) => readonly [A, G] = (fea, f) => [fst(fea), f(snd(fea))] -const extend_: (wa: readonly [A, E], f: (wa: readonly [A, E]) => B) => readonly [B, E] = (ae, f) => [ - f(ae), - snd(ae) -] -const reduce_: (fa: readonly [A, E], b: B, f: (b: B, a: A) => B) => B = (ae, b, f) => f(b, fst(ae)) -const foldMap_: (M: Monoid) => (fa: readonly [A, E], f: (a: A) => M) => M = (_) => (ae, f) => f(fst(ae)) -const reduceRight_: (fa: readonly [A, E], b: B, f: (a: A, b: B) => B) => B = (ae, b, f) => f(fst(ae), b) -const traverse_ = (F: Applicative) => ( - as: readonly [A, S], - f: (a: A) => HKT -): HKT => { - return F.map(f(fst(as)), (b) => [b, snd(as)]) -} - /** * @category instances * @since 2.5.0 diff --git a/src/Record.ts b/src/Record.ts index 360d361a8..b73340828 100644 --- a/src/Record.ts +++ b/src/Record.ts @@ -498,6 +498,42 @@ export const elem: ( (a: A, fa: Record): boolean } = RR.elem +// ------------------------------------------------------------------------------------- +// non-pipeables +// ------------------------------------------------------------------------------------- + +const map_: Functor1['map'] = RR.functorRecord.map +const mapWithIndex_: FunctorWithIndex1['mapWithIndex'] = RR.functorWithIndexRecord.mapWithIndex +const reduce_: Foldable1['reduce'] = RR.foldableRecord.reduce +const foldMap_: Foldable1['foldMap'] = RR.foldableRecord.foldMap +const reduceRight_: Foldable1['reduceRight'] = RR.foldableRecord.reduceRight +const reduceWithIndex_: FoldableWithIndex1['reduceWithIndex'] = RR.foldableWithIndexRecord.reduceWithIndex +const foldMapWithIndex_: FoldableWithIndex1['foldMapWithIndex'] = + RR.foldableWithIndexRecord.foldMapWithIndex +const reduceRightWithIndex_: FoldableWithIndex1['reduceRightWithIndex'] = + RR.foldableWithIndexRecord.reduceRightWithIndex +const filter_: Filterable1['filter'] = RR.filterableRecord.filter as any +const filterMap_: Filterable1['filterMap'] = RR.filterableRecord.filterMap +const partition_: Filterable1['partition'] = RR.filterableRecord.partition as any +const partitionMap_: Filterable1['partitionMap'] = RR.filterableRecord.partitionMap +const filterWithIndex_: FilterableWithIndex1['filterWithIndex'] = RR.filterableWithIndexRecord + .filterWithIndex as any +const filterMapWithIndex_: FilterableWithIndex1['filterMapWithIndex'] = + RR.filterableWithIndexRecord.filterMapWithIndex +const partitionWithIndex_: FilterableWithIndex1['partitionWithIndex'] = RR.filterableWithIndexRecord + .partitionWithIndex as any +const partitionMapWithIndex_: FilterableWithIndex1['partitionMapWithIndex'] = + RR.filterableWithIndexRecord.partitionMapWithIndex +const traverseWithIndex_: TraversableWithIndex1['traverseWithIndex'] = RR.traversableWithIndexRecord + .traverseWithIndex as any +const wither_: Witherable1['wither'] = RR.witherableRecord.wither as any +const wilt_: Witherable1['wilt'] = RR.witherableRecord.wilt as any +const traverse_: Traversable1['traverse'] = ( + F: Applicative +): ((ta: Record, f: (a: A) => HKT) => HKT>) => { + const traverseF = traverse(F) + return (ta, f) => traverseF(f)(ta) +} // ------------------------------------------------------------------------------------- // pipeables // ------------------------------------------------------------------------------------- @@ -571,39 +607,6 @@ export const separate: (fa: Record>) => Separated['map'] = RR.functorRecord.map -const mapWithIndex_: FunctorWithIndex1['mapWithIndex'] = RR.functorWithIndexRecord.mapWithIndex -const reduce_: Foldable1['reduce'] = RR.foldableRecord.reduce -const foldMap_: Foldable1['foldMap'] = RR.foldableRecord.foldMap -const reduceRight_: Foldable1['reduceRight'] = RR.foldableRecord.reduceRight -const reduceWithIndex_: FoldableWithIndex1['reduceWithIndex'] = RR.foldableWithIndexRecord.reduceWithIndex -const foldMapWithIndex_: FoldableWithIndex1['foldMapWithIndex'] = - RR.foldableWithIndexRecord.foldMapWithIndex -const reduceRightWithIndex_: FoldableWithIndex1['reduceRightWithIndex'] = - RR.foldableWithIndexRecord.reduceRightWithIndex -const filter_: Filterable1['filter'] = RR.filterableRecord.filter as any -const filterMap_: Filterable1['filterMap'] = RR.filterableRecord.filterMap -const partition_: Filterable1['partition'] = RR.filterableRecord.partition as any -const partitionMap_: Filterable1['partitionMap'] = RR.filterableRecord.partitionMap -const filterWithIndex_: FilterableWithIndex1['filterWithIndex'] = RR.filterableWithIndexRecord - .filterWithIndex as any -const filterMapWithIndex_: FilterableWithIndex1['filterMapWithIndex'] = - RR.filterableWithIndexRecord.filterMapWithIndex -const partitionWithIndex_: FilterableWithIndex1['partitionWithIndex'] = RR.filterableWithIndexRecord - .partitionWithIndex as any -const partitionMapWithIndex_: FilterableWithIndex1['partitionMapWithIndex'] = - RR.filterableWithIndexRecord.partitionMapWithIndex -const traverseWithIndex_: TraversableWithIndex1['traverseWithIndex'] = RR.traversableWithIndexRecord - .traverseWithIndex as any -const wither_: Witherable1['wither'] = RR.witherableRecord.wither as any -const wilt_: Witherable1['wilt'] = RR.witherableRecord.wilt as any -const traverse_: Traversable1['traverse'] = ( - F: Applicative -): ((ta: Record, f: (a: A) => HKT) => HKT>) => { - const traverseF = traverse(F) - return (ta, f) => traverseF(f)(ta) -} - /** * @category instances * @since 2.0.0 diff --git a/src/State.ts b/src/State.ts index 40f88b74d..ec4d4f69a 100644 --- a/src/State.ts +++ b/src/State.ts @@ -56,6 +56,17 @@ export const modify: (f: (s: S) => S) => State = (f) => (s) => [unde */ export const gets: (f: (s: S) => A) => State = (f) => (s) => [f(s), s] +// ------------------------------------------------------------------------------------- +// non-pipeables +// ------------------------------------------------------------------------------------- + +/* istanbul ignore next */ +const map_: Monad2['map'] = (fa, f) => pipe(fa, map(f)) +/* istanbul ignore next */ +const ap_: Monad2['ap'] = (fab, fa) => pipe(fab, ap(fa)) +/* istanbul ignore next */ +const chain_: Monad2['chain'] = (ma, f) => pipe(ma, chain(f)) + // ------------------------------------------------------------------------------------- // pipeables // ------------------------------------------------------------------------------------- @@ -154,13 +165,6 @@ export const flatten: (mma: State>) => State = // instances // ------------------------------------------------------------------------------------- -/* istanbul ignore next */ -const map_: Monad2['map'] = (fa, f) => pipe(fa, map(f)) -/* istanbul ignore next */ -const ap_: Monad2['ap'] = (fab, fa) => pipe(fab, ap(fa)) -/* istanbul ignore next */ -const chain_: Monad2['chain'] = (ma, f) => pipe(ma, chain(f)) - /** * @category instances * @since 2.0.0 diff --git a/src/StateReaderTaskEither.ts b/src/StateReaderTaskEither.ts index 7cb284484..225bc7f77 100644 --- a/src/StateReaderTaskEither.ts +++ b/src/StateReaderTaskEither.ts @@ -353,6 +353,41 @@ export const filterOrElse: { chain((a) => (predicate(a) ? right(a) : left(onFalse(a)))) ) +// ------------------------------------------------------------------------------------- +// non-pipeables +// ------------------------------------------------------------------------------------- + +/* istanbul ignore next */ +const map_: Monad4['map'] = (fa, f) => pipe(fa, map(f)) +/* istanbul ignore next */ +const ap_: Monad4['ap'] = (fab, fa) => pipe(fab, ap(fa)) +/* istanbul ignore next */ +const chain_: Monad4['chain'] = (ma, f) => pipe(ma, chain(f)) +/* istanbul ignore next */ +const alt_: ( + fa: StateReaderTaskEither, + that: Lazy> +) => StateReaderTaskEither = (fa, that) => (s) => + pipe( + fa(s), + RTE.alt(() => that()(s)) + ) + +const bimap_: ( + fea: StateReaderTaskEither, + f: (e: E) => G, + g: (a: A) => B +) => StateReaderTaskEither = (fea, f, g) => (s) => + pipe( + fea(s), + RTE.bimap(f, ([a, s]) => [g(a), s]) + ) + +const mapLeft_: ( + fea: StateReaderTaskEither, + f: (e: E) => G +) => StateReaderTaskEither = (fea, f) => (s) => pipe(fea(s), RTE.mapLeft(f)) + // ------------------------------------------------------------------------------------- // pipeables // ------------------------------------------------------------------------------------- @@ -443,6 +478,12 @@ export const apSecond = (fb: StateReaderTaskEither) => < ap(fb) ) +/** + * @category Applicative + * @since 2.7.0 + */ +export const of: Applicative4['of'] = right + /** * Less strict version of [`chain`](#chain). * @@ -531,38 +572,6 @@ export const throwError: MonadThrow4['throwError'] = left // instances // ------------------------------------------------------------------------------------- -/* istanbul ignore next */ -const map_: Monad4['map'] = (fa, f) => pipe(fa, map(f)) -/* istanbul ignore next */ -const ap_: Monad4['ap'] = (fab, fa) => pipe(fab, ap(fa)) -/* istanbul ignore next */ -const chain_: Monad4['chain'] = (ma, f) => pipe(ma, chain(f)) -const of = right -/* istanbul ignore next */ -const alt_: ( - fa: StateReaderTaskEither, - that: Lazy> -) => StateReaderTaskEither = (fa, that) => (s) => - pipe( - fa(s), - RTE.alt(() => that()(s)) - ) - -const bimap_: ( - fea: StateReaderTaskEither, - f: (e: E) => G, - g: (a: A) => B -) => StateReaderTaskEither = (fea, f, g) => (s) => - pipe( - fea(s), - RTE.bimap(f, ([a, s]) => [g(a), s]) - ) - -const mapLeft_: ( - fea: StateReaderTaskEither, - f: (e: E) => G -) => StateReaderTaskEither = (fea, f) => (s) => pipe(fea(s), RTE.mapLeft(f)) - /** * @category instances * @since 2.0.0 diff --git a/src/Store.ts b/src/Store.ts index 93f416fe5..9bb10b0dd 100644 --- a/src/Store.ts +++ b/src/Store.ts @@ -5,6 +5,7 @@ import { Comonad2 } from './Comonad' import { Endomorphism, identity } from './function' import { Functor, Functor1, Functor2, Functor2C, Functor3, Functor3C } from './Functor' import { HKT, Kind, Kind2, Kind3, URIS, URIS2, URIS3 } from './HKT' +import { Extend2 } from './Extend' // ------------------------------------------------------------------------------------- // model @@ -72,19 +73,22 @@ export function experiment(F: Functor): (f: (s: S) => HKT) => } // ------------------------------------------------------------------------------------- -// pipeables +// non-pipeables // ------------------------------------------------------------------------------------- -const map_: (fa: Store, f: (a: A) => B) => Store = (wa, f) => ({ +const map_: Functor2['map'] = (wa, f) => ({ peek: (s) => f(wa.peek(s)), pos: wa.pos }) - -const extend_: (wa: Store, f: (wa: Store) => B) => Store = (wa, f) => ({ +const extend_: Extend2['extend'] = (wa, f) => ({ peek: (s) => f({ peek: wa.peek, pos: s }), pos: wa.pos }) +// ------------------------------------------------------------------------------------- +// pipeables +// ------------------------------------------------------------------------------------- + /** * @category Extend * @since 2.0.0 diff --git a/src/Task.ts b/src/Task.ts index 915452cbb..9682345c7 100644 --- a/src/Task.ts +++ b/src/Task.ts @@ -98,14 +98,17 @@ export function chainIOK(f: (a: A) => IO): (ma: Task) => Task { } // ------------------------------------------------------------------------------------- -// pipeables +// non-pipeables // ------------------------------------------------------------------------------------- -const map_: (fa: Task, f: (a: A) => B) => Task = (ma, f) => () => ma().then(f) -const apPar_: (fab: Task<(a: A) => B>, fa: Task) => Task = (mab, ma) => () => - Promise.all([mab(), ma()]).then(([f, a]) => f(a)) -const apSeq_: Applicative1['ap'] = (fab, fa) => chain_(fab, (f) => map_(fa, f)) -const chain_: (fa: Task, f: (a: A) => Task) => Task = (ma, f) => () => ma().then((a) => f(a)()) +const map_: Monad1['map'] = (ma, f) => () => ma().then(f) +const apPar_: Monad1['ap'] = (mab, ma) => () => Promise.all([mab(), ma()]).then(([f, a]) => f(a)) +const apSeq_: Monad1['ap'] = (fab, fa) => chain_(fab, (f) => map_(fa, f)) +const chain_: Monad1['chain'] = (ma, f) => () => ma().then((a) => f(a)()) + +// ------------------------------------------------------------------------------------- +// pipeables +// ------------------------------------------------------------------------------------- /** * `map` can be used to turn functions `(a: A) => B` into functions `(fa: F) => F` whose argument and return types diff --git a/src/TaskEither.ts b/src/TaskEither.ts index 37ef6be02..ea102611f 100644 --- a/src/TaskEither.ts +++ b/src/TaskEither.ts @@ -285,6 +285,21 @@ export const chainIOEitherK: ( f: (a: A) => IOEither ) => (ma: TaskEither) => TaskEither = chainIOEitherKW +// ------------------------------------------------------------------------------------- +// non-pipeables +// ------------------------------------------------------------------------------------- + +const map_: Monad2['map'] = (fa, f) => pipe(fa, map(f)) +/* istanbul ignore next */ +const bimap_: Bifunctor2['bimap'] = (fa, f, g) => pipe(fa, bimap(f, g)) +/* istanbul ignore next */ +const mapLeft_: Bifunctor2['mapLeft'] = (fa, f) => pipe(fa, mapLeft(f)) +const apPar_: Monad2['ap'] = (fab, fa) => pipe(fab, ap(fa)) +const apSeq_: Applicative2['ap'] = (fab, fa) => chain_(fab, (f) => map_(fa, f)) +const chain_: Monad2['chain'] = (ma, f) => pipe(ma, chain(f)) +/* istanbul ignore next */ +const alt_: Alt2['alt'] = (fa, that) => pipe(fa, alt(that)) + // ------------------------------------------------------------------------------------- // pipeables // ------------------------------------------------------------------------------------- @@ -484,17 +499,6 @@ declare module './HKT' { } } -const map_: Monad2['map'] = (fa, f) => pipe(fa, map(f)) -/* istanbul ignore next */ -const bimap_: Bifunctor2['bimap'] = (fa, f, g) => pipe(fa, bimap(f, g)) -/* istanbul ignore next */ -const mapLeft_: Bifunctor2['mapLeft'] = (fa, f) => pipe(fa, mapLeft(f)) -const apPar_: Monad2['ap'] = (fab, fa) => pipe(fab, ap(fa)) -const apSeq_: Applicative2['ap'] = (fab, fa) => chain_(fab, (f) => map_(fa, f)) -const chain_: Monad2['chain'] = (ma, f) => pipe(ma, chain(f)) -/* istanbul ignore next */ -const alt_: Alt2['alt'] = (fa, that) => pipe(fa, alt(that)) - /** * Semigroup returning the left-most non-`Left` value. If both operands are `Right`s then the inner values are * concatenated using the provided `Semigroup` diff --git a/src/TaskThese.ts b/src/TaskThese.ts index 2cb22eeb3..15fe7a558 100644 --- a/src/TaskThese.ts +++ b/src/TaskThese.ts @@ -131,6 +131,16 @@ export const swap: (fa: TaskThese) => TaskThese = /*#__PURE__*/ T.map(TH.swap) +// ------------------------------------------------------------------------------------- +// non-pipeables +// ------------------------------------------------------------------------------------- + +const map_: Functor2['map'] = (fa, f) => pipe(fa, map(f)) +/* istanbul ignore next */ +const bimap_: Bifunctor2['bimap'] = (fa, f, g) => pipe(fa, bimap(f, g)) +/* istanbul ignore next */ +const mapLeft_: Bifunctor2['mapLeft'] = (fa, f) => pipe(fa, mapLeft(f)) + // ------------------------------------------------------------------------------------- // pipeables // ------------------------------------------------------------------------------------- @@ -202,12 +212,6 @@ declare module './HKT' { } } -const map_: Functor2['map'] = (fa, f) => pipe(fa, map(f)) -/* istanbul ignore next */ -const bimap_: Bifunctor2['bimap'] = (fa, f, g) => pipe(fa, bimap(f, g)) -/* istanbul ignore next */ -const mapLeft_: Bifunctor2['mapLeft'] = (fa, f) => pipe(fa, mapLeft(f)) - /** * @category instances * @since 2.4.0 diff --git a/src/These.ts b/src/These.ts index 672df6807..53e67d3f9 100644 --- a/src/These.ts +++ b/src/These.ts @@ -369,25 +369,28 @@ export function fromOptions(fe: Option, fa: Option): Option(fa: These, f: (a: A) => B) => These = (fa, f) => +const map_: Functor2['map'] = (fa, f) => isLeft(fa) ? fa : isRight(fa) ? right(f(fa.right)) : both(fa.left, f(fa.right)) -const bimap_: (fea: These, f: (e: E) => G, g: (a: A) => B) => These = (fea, f, g) => +const bimap_: Bifunctor2['bimap'] = (fea, f, g) => isLeft(fea) ? left(f(fea.left)) : isRight(fea) ? right(g(fea.right)) : both(f(fea.left), g(fea.right)) -const mapLeft_: (fea: These, f: (e: E) => G) => These = (fea, f) => +const mapLeft_: Bifunctor2['mapLeft'] = (fea, f) => isLeft(fea) ? left(f(fea.left)) : isBoth(fea) ? both(f(fea.left), fea.right) : fea -const reduce_: (fa: These, b: B, f: (b: B, a: A) => B) => B = (fa, b, f) => - isLeft(fa) ? b : isRight(fa) ? f(b, fa.right) : f(b, fa.right) -const foldMap_: (M: Monoid) => (fa: These, f: (a: A) => M) => M = (M) => (fa, f) => +const reduce_: Foldable2['reduce'] = (fa, b, f) => (isLeft(fa) ? b : isRight(fa) ? f(b, fa.right) : f(b, fa.right)) +const foldMap_: Foldable2['foldMap'] = (M) => (fa, f) => isLeft(fa) ? M.empty : isRight(fa) ? f(fa.right) : f(fa.right) -const reduceRight_: (fa: These, b: B, f: (a: A, b: B) => B) => B = (fa, b, f) => +const reduceRight_: Foldable2['reduceRight'] = (fa, b, f) => isLeft(fa) ? b : isRight(fa) ? f(fa.right, b) : f(fa.right, b) const traverse_ = (F: Applicative) => (ta: These, f: (a: A) => HKT): HKT> => { return isLeft(ta) ? F.of(ta) : isRight(ta) ? F.map(f(ta.right), right) : F.map(f(ta.right), (b) => both(ta.left, b)) } +// ------------------------------------------------------------------------------------- +// pipeables +// ------------------------------------------------------------------------------------- + /** * Map a pair of functions over the two type arguments of the bifunctor. * diff --git a/src/Traced.ts b/src/Traced.ts index 288b2cde3..6a56dc8c0 100644 --- a/src/Traced.ts +++ b/src/Traced.ts @@ -81,10 +81,14 @@ export function getComonad

(monoid: Monoid

): Comonad2C { } // ------------------------------------------------------------------------------------- -// pipeables +// non-pipeables // ------------------------------------------------------------------------------------- -const map_: (fa: Traced, f: (a: A) => B) => Traced = (wa, f) => (p) => f(wa(p)) +const map_: Functor2['map'] = (wa, f) => (p) => f(wa(p)) + +// ------------------------------------------------------------------------------------- +// pipeables +// ------------------------------------------------------------------------------------- /** * `map` can be used to turn functions `(a: A) => B` into functions `(fa: F) => F` whose argument and return types diff --git a/src/Tree.ts b/src/Tree.ts index 5e9554001..c2bc03969 100644 --- a/src/Tree.ts +++ b/src/Tree.ts @@ -19,6 +19,7 @@ import { Monad, Monad1, Monad2, Monad2C, Monad3, Monad3C } from './Monad' import { Monoid } from './Monoid' import { Show } from './Show' import { PipeableTraverse1, Traversable1 } from './Traversable' +import { Extend1 } from './Extend' // tslint:disable:readonly-array @@ -254,6 +255,63 @@ export function fold(f: (a: A, bs: Array) => B): (tree: Tree) => B { return go } +// ------------------------------------------------------------------------------------- +// non-pipeables +// ------------------------------------------------------------------------------------- + +const map_: Monad1['map'] = (fa, f) => ({ + value: f(fa.value), + forest: fa.forest.map((t) => map_(t, f)) +}) +const ap_: Monad1['ap'] = (fab, fa) => chain_(fab, (f) => map_(fa, f)) +const chain_ = (fa: Tree, f: (a: A) => Tree): Tree => { + const { value, forest } = f(fa.value) + const concat = A.getMonoid>().concat + return { + value, + forest: concat( + forest, + fa.forest.map((t) => chain_(t, f)) + ) + } +} +const reduce_ = (fa: Tree, b: B, f: (b: B, a: A) => B): B => { + let r: B = f(b, fa.value) + const len = fa.forest.length + for (let i = 0; i < len; i++) { + r = reduce_(fa.forest[i], r, f) + } + return r +} +const foldMap_: Foldable1['foldMap'] = (M) => (fa, f) => reduce_(fa, M.empty, (acc, a) => M.concat(acc, f(a))) +const reduceRight_ = (fa: Tree, b: B, f: (a: A, b: B) => B): B => { + let r: B = b + const len = fa.forest.length + for (let i = len - 1; i >= 0; i--) { + r = reduceRight_(fa.forest[i], r, f) + } + return f(fa.value, r) +} +const extend_: Extend1['extend'] = (wa, f) => ({ + value: f(wa), + forest: wa.forest.map((t) => extend_(t, f)) +}) +const traverse_ = (F: Applicative): ((ta: Tree, f: (a: A) => HKT) => HKT>) => { + const traverseF = A.traverse(F) + const r = (ta: Tree, f: (a: A) => HKT): HKT> => + F.ap( + F.map(f(ta.value), (value: B) => (forest: Forest) => ({ + value, + forest + })), + pipe( + ta.forest, + traverseF((t) => r(t, f)) + ) + ) + return r +} + // ------------------------------------------------------------------------------------- // pipeables // ------------------------------------------------------------------------------------- @@ -395,67 +453,6 @@ export const of: Applicative1['of'] = (a) => ({ // instances // ------------------------------------------------------------------------------------- -const map_: (fa: Tree, f: (a: A) => B) => Tree = (fa, f) => ({ - value: f(fa.value), - forest: fa.forest.map((t) => map_(t, f)) -}) - -const ap_: (fab: Tree<(a: A) => B>, fa: Tree) => Tree = (fab, fa) => chain_(fab, (f) => map_(fa, f)) - -const chain_ = (fa: Tree, f: (a: A) => Tree): Tree => { - const { value, forest } = f(fa.value) - const concat = A.getMonoid>().concat - return { - value, - forest: concat( - forest, - fa.forest.map((t) => chain_(t, f)) - ) - } -} - -const reduce_ = (fa: Tree, b: B, f: (b: B, a: A) => B): B => { - let r: B = f(b, fa.value) - const len = fa.forest.length - for (let i = 0; i < len; i++) { - r = reduce_(fa.forest[i], r, f) - } - return r -} - -const foldMap_: (M: Monoid) => (fa: Tree, f: (a: A) => M) => M = (M) => (fa, f) => - reduce_(fa, M.empty, (acc, a) => M.concat(acc, f(a))) - -const reduceRight_ = (fa: Tree, b: B, f: (a: A, b: B) => B): B => { - let r: B = b - const len = fa.forest.length - for (let i = len - 1; i >= 0; i--) { - r = reduceRight_(fa.forest[i], r, f) - } - return f(fa.value, r) -} - -const extend_: (wa: Tree, f: (wa: Tree) => B) => Tree = (wa, f) => ({ - value: f(wa), - forest: wa.forest.map((t) => extend_(t, f)) -}) - -const traverse_ = (F: Applicative): ((ta: Tree, f: (a: A) => HKT) => HKT>) => { - const traverseF = A.traverse(F) - const r = (ta: Tree, f: (a: A) => HKT): HKT> => - F.ap( - F.map(f(ta.value), (value: B) => (forest: Forest) => ({ - value, - forest - })), - pipe( - ta.forest, - traverseF((t) => r(t, f)) - ) - ) - return r -} - /** * @category instances * @since 2.0.0 diff --git a/src/Tuple.ts b/src/Tuple.ts index ea1247e9d..371ba6d79 100644 --- a/src/Tuple.ts +++ b/src/Tuple.ts @@ -72,6 +72,20 @@ export const getMonad: (M: Monoid) => Monad2C = RT.getMonad as any */ export const getChainRec: (M: Monoid) => ChainRec2C = RT.getChainRec as any +// ------------------------------------------------------------------------------------- +// non-pipeables +// ------------------------------------------------------------------------------------- + +const map_: Functor2['map'] = RT.functorTuple.map as any +const bimap_: Bifunctor2['bimap'] = RT.bifunctorTuple.bimap as any +const mapLeft_: Bifunctor2['mapLeft'] = RT.bifunctorTuple.mapLeft as any +const compose_: Semigroupoid2['compose'] = RT.semigroupoidTuple.compose as any +const extend_: Extend2['extend'] = RT.comonadTuple.extend as any +const reduce_: Foldable2['reduce'] = RT.foldableTuple.reduce +const foldMap_: Foldable2['foldMap'] = RT.foldableTuple.foldMap +const reduceRight_: Foldable2['reduceRight'] = RT.foldableTuple.reduceRight +const traverse_: Traversable2['traverse'] = RT.traversableTuple.traverse as any + // ------------------------------------------------------------------------------------- // pipeables // ------------------------------------------------------------------------------------- @@ -157,16 +171,6 @@ export const sequence: Traversable2['sequence'] = RT.sequence as any // instances // ------------------------------------------------------------------------------------- -const map_: Functor2['map'] = RT.functorTuple.map as any -const bimap_: Bifunctor2['bimap'] = RT.bifunctorTuple.bimap as any -const mapLeft_: Bifunctor2['mapLeft'] = RT.bifunctorTuple.mapLeft as any -const compose_: Semigroupoid2['compose'] = RT.semigroupoidTuple.compose as any -const extend_: Extend2['extend'] = RT.comonadTuple.extend as any -const reduce_: Foldable2['reduce'] = RT.foldableTuple.reduce -const foldMap_: Foldable2['foldMap'] = RT.foldableTuple.foldMap -const reduceRight_: Foldable2['reduceRight'] = RT.foldableTuple.reduceRight -const traverse_: Traversable2['traverse'] = RT.traversableTuple.traverse as any - /** * @category instances * @since 2.0.0 diff --git a/src/Writer.ts b/src/Writer.ts index 27fcb6afa..08f6d69c6 100644 --- a/src/Writer.ts +++ b/src/Writer.ts @@ -83,6 +83,13 @@ export const censor: (f: (w: W) => W) => (fa: Writer) => Writer['map'] = (fa, f) => pipe(fa, map(f)) + // ------------------------------------------------------------------------------------- // pipeables // ------------------------------------------------------------------------------------- @@ -121,9 +128,6 @@ declare module './HKT' { } } -/* istanbul ignore next */ -const map_: Functor2['map'] = (fa, f) => pipe(fa, map(f)) - /** * @category instances * @since 2.0.0 From 86aee8981542d589f7e299dfe6371ab963d29809 Mon Sep 17 00:00:00 2001 From: gcanti Date: Sat, 20 Jun 2020 15:26:35 +0200 Subject: [PATCH 086/106] These: add getApplicative and fix bug in getMonad --- CHANGELOG.md | 3 +++ docs/modules/These.ts.md | 13 +++++++++++- src/These.ts | 44 ++++++++++++++++++++++++++++++++++------ test/These.ts | 23 +++++++++++++-------- 4 files changed, 68 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3cbeca3b8..c00fbfdef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,9 @@ high state of flux, you're at risk of it changing without notice. # 2.7.0 +- **Bug Fix** + - `These` + - fix `ap` implementation in `getMonad` function (@gcanti) - **New Feature** - `Array` - add `functorArray` instance (@gcanti) diff --git a/docs/modules/These.ts.md b/docs/modules/These.ts.md index 5749fb48d..f1af9b3e1 100644 --- a/docs/modules/These.ts.md +++ b/docs/modules/These.ts.md @@ -65,6 +65,7 @@ Added in v2.0.0 - [bifunctorThese](#bifunctorthese) - [foldableThese](#foldablethese) - [functorThese](#functorthese) + - [getApplicative](#getapplicative) - [getEq](#geteq) - [getMonad](#getmonad) - [getSemigroup](#getsemigroup) @@ -479,6 +480,16 @@ export declare const functorThese: Functor2<'These'> Added in v2.7.0 +## getApplicative + +**Signature** + +```ts +export declare function getApplicative(SE: Semigroup): Applicative2C +``` + +Added in v2.7.0 + ## getEq **Signature** @@ -494,7 +505,7 @@ Added in v2.0.0 **Signature** ```ts -export declare function getMonad(S: Semigroup): Monad2C & MonadThrow2C +export declare function getMonad(SE: Semigroup): Monad2C & MonadThrow2C ``` Added in v2.0.0 diff --git a/src/These.ts b/src/These.ts index 53e67d3f9..603576197 100644 --- a/src/These.ts +++ b/src/These.ts @@ -19,7 +19,7 @@ * * @since 2.0.0 */ -import { Applicative } from './Applicative' +import { Applicative, Applicative2C } from './Applicative' import { Bifunctor2 } from './Bifunctor' import { Either, Left, Right } from './Either' import { Eq, fromEquals } from './Eq' @@ -32,7 +32,7 @@ import { Monoid } from './Monoid' import { isNone, none, Option, some } from './Option' import { Semigroup } from './Semigroup' import { Show } from './Show' -import { Traversable2, PipeableTraverse2 } from './Traversable' +import { PipeableTraverse2, Traversable2 } from './Traversable' // ------------------------------------------------------------------------------------- // model @@ -160,11 +160,42 @@ export function getSemigroup(SE: Semigroup, SA: Semigroup): Semigrou } } +/** + * @category instances + * @since 2.7.0 + */ +export function getApplicative(SE: Semigroup): Applicative2C { + return { + URI, + _E: undefined as any, + map: map_, + of: right, + ap: (fab, fa) => + isLeft(fab) + ? isLeft(fa) + ? left(SE.concat(fab.left, fa.left)) + : isRight(fa) + ? left(fab.left) + : left(SE.concat(fab.left, fa.left)) + : isRight(fab) + ? isLeft(fa) + ? left(fa.left) + : isRight(fa) + ? right(fab.right(fa.right)) + : both(fa.left, fab.right(fa.right)) + : isLeft(fa) + ? left(SE.concat(fab.left, fa.left)) + : isRight(fa) + ? both(fab.left, fab.right(fa.right)) + : both(SE.concat(fab.left, fa.left), fab.right(fa.right)) + } +} + /** * @category instances * @since 2.0.0 */ -export function getMonad(S: Semigroup): Monad2C & MonadThrow2C { +export function getMonad(SE: Semigroup): Monad2C & MonadThrow2C { const chain = (ma: These, f: (a: A) => These): These => { if (isLeft(ma)) { return ma @@ -174,18 +205,19 @@ export function getMonad(S: Semigroup): Monad2C & MonadThrow2C chain(mab, (f) => map_(ma, f)), + ap: applicative.ap, chain, throwError: left } diff --git a/test/These.ts b/test/These.ts index 412b08f38..7387efcdb 100644 --- a/test/These.ts +++ b/test/These.ts @@ -6,6 +6,7 @@ import * as O from '../src/Option' import { semigroupString } from '../src/Semigroup' import { showString } from '../src/Show' import * as _ from '../src/These' +import * as Apply from '../src/Apply' describe('These', () => { describe('pipeables', () => { @@ -93,6 +94,20 @@ describe('These', () => { }) }) + it('ap', () => { + const M = _.getMonad(semigroupString) + const sequenceT = Apply.sequenceT(M) + assert.deepStrictEqual(sequenceT(_.right(1), _.right(2)), _.right([1, 2])) + assert.deepStrictEqual(sequenceT(_.right(1), _.left('b')), _.left('b')) + assert.deepStrictEqual(sequenceT(_.right(1), _.both('b', 2)), _.both('b', [1, 2])) + assert.deepStrictEqual(sequenceT(_.left('a'), _.right(2)), _.left('a')) + assert.deepStrictEqual(sequenceT(_.left('a'), _.left('b')), _.left('ab')) + assert.deepStrictEqual(sequenceT(_.left('a'), _.both('b', 2)), _.left('ab')) + assert.deepStrictEqual(sequenceT(_.both('a', 1), _.right(2)), _.both('a', [1, 2])) + assert.deepStrictEqual(sequenceT(_.both('a', 1), _.left('b')), _.left('ab')) + assert.deepStrictEqual(sequenceT(_.both('a', 1), _.both('b', 2)), _.both('ab', [1, 2])) + }) + it('chain', () => { const M = _.getMonad(monoidString) const f = (n: number) => (n >= 2 ? (n <= 5 ? _.right(n * 2) : _.both('bar', n)) : _.left('bar')) @@ -133,14 +148,6 @@ describe('These', () => { assert.deepStrictEqual(concat(_.both('a', 3), _.both('b', 2)), _.both('ab', 5)) }) - it('getMonad', () => { - const double = (n: number) => n * 2 - const F = _.getMonad(semigroupString) - const fab = F.of(double) - const fa = F.of(1) - assert.deepStrictEqual(F.ap(fab, fa), F.of(2)) - }) - it('fold', () => { const double = (n: number) => n * 2 const len = (s: string) => s.length From 43b4f8b3d561089b444beae5f5a1a647bf7d259c Mon Sep 17 00:00:00 2001 From: gcanti Date: Wed, 24 Jun 2020 06:11:03 +0200 Subject: [PATCH 087/106] add TODO --- src/ReadonlyRecord.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/ReadonlyRecord.ts b/src/ReadonlyRecord.ts index 20cd28555..f010bc1e2 100644 --- a/src/ReadonlyRecord.ts +++ b/src/ReadonlyRecord.ts @@ -159,6 +159,7 @@ export function insertAt(k: string, a: A): (r: ReadonlyRecord) => const _hasOwnProperty = Object.prototype.hasOwnProperty +// TODO: rename to avoid #1249? /** * @since 2.5.0 */ From 4dcbb5a9b125ec9e06b017173dfd71f13e124feb Mon Sep 17 00:00:00 2001 From: gcanti Date: Mon, 29 Jun 2020 07:46:33 +0200 Subject: [PATCH 088/106] add `hole` (type hole simulation) --- CHANGELOG.md | 2 ++ docs/modules/function.ts.md | 13 +++++++++++++ src/function.ts | 7 +++++++ 3 files changed, 22 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c00fbfdef..8290b11da 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,8 @@ high state of flux, you're at risk of it changing without notice. - `These` - fix `ap` implementation in `getMonad` function (@gcanti) - **New Feature** + - `function` + - add `hole` (type hole simulation) (@gcanti) - `Array` - add `functorArray` instance (@gcanti) - add `functorWithIndexArray` instance (@gcanti) diff --git a/docs/modules/function.ts.md b/docs/modules/function.ts.md index 9bf12a2db..e642f89d7 100644 --- a/docs/modules/function.ts.md +++ b/docs/modules/function.ts.md @@ -28,6 +28,7 @@ Added in v2.0.0 - [decrement](#decrement) - [flip](#flip) - [flow](#flow) + - [hole](#hole) - [identity](#identity) - [increment](#increment) - [not](#not) @@ -300,6 +301,18 @@ assert.strictEqual(f('aaa'), 6) Added in v2.0.0 +## hole + +Type hole simulation + +**Signature** + +```ts +export declare const hole: () => T +``` + +Added in v2.7.0 + ## identity **Signature** diff --git a/src/function.ts b/src/function.ts index 8a27130ff..48bf33f57 100644 --- a/src/function.ts +++ b/src/function.ts @@ -413,3 +413,10 @@ export function pipe( } return } + +/** + * Type hole simulation + * + * @since 2.7.0 + */ +export const hole: () => T = absurd as any From 51236c97994419d4e0cb77ddf9bdcdd2a100435c Mon Sep 17 00:00:00 2001 From: Oliver Joseph Ash Date: Mon, 29 Jun 2020 14:55:48 +0100 Subject: [PATCH 089/106] Add array `chainWithIndex` (#1256) --- docs/modules/Array.ts.md | 11 +++++++++++ docs/modules/ReadonlyArray.ts.md | 11 +++++++++++ src/Array.ts | 7 +++++++ src/ReadonlyArray.ts | 16 ++++++++++++++-- test/Array.ts | 10 ++++++++++ test/ReadonlyArray.ts | 10 ++++++++++ 6 files changed, 63 insertions(+), 2 deletions(-) diff --git a/docs/modules/Array.ts.md b/docs/modules/Array.ts.md index bf6845c49..3c527b565 100644 --- a/docs/modules/Array.ts.md +++ b/docs/modules/Array.ts.md @@ -135,6 +135,7 @@ Added in v2.0.0 - [unsafeInsertAt](#unsafeinsertat) - [unsafeUpdateAt](#unsafeupdateat) - [utils](#utils) + - [chainWithIndex](#chainwithindex) - [chunksOf](#chunksof) - [comprehension](#comprehension) - [deleteAt](#deleteat) @@ -1763,6 +1764,16 @@ Added in v2.0.0 # utils +## chainWithIndex + +**Signature** + +```ts +export declare const chainWithIndex: (f: (index: number, a: A) => B[]) => (ma: A[]) => B[] +``` + +Added in v2.7.0 + ## chunksOf Splits an array into length-`n` pieces. The last piece will be shorter if `n` does not evenly divide the length of diff --git a/docs/modules/ReadonlyArray.ts.md b/docs/modules/ReadonlyArray.ts.md index 09ed2578d..ce884c31f 100644 --- a/docs/modules/ReadonlyArray.ts.md +++ b/docs/modules/ReadonlyArray.ts.md @@ -127,6 +127,7 @@ Added in v2.5.0 - [unsafeUpdateAt](#unsafeupdateat) - [utils](#utils) - [Spanned (interface)](#spanned-interface) + - [chainWithIndex](#chainwithindex) - [chunksOf](#chunksof) - [comprehension](#comprehension) - [deleteAt](#deleteat) @@ -1556,6 +1557,16 @@ export interface Spanned { Added in v2.5.0 +## chainWithIndex + +**Signature** + +```ts +export declare const chainWithIndex: (f: (i: number, a: A) => readonly B[]) => (ma: readonly A[]) => readonly B[] +``` + +Added in v2.7.0 + ## chunksOf Splits an array into length-`n` pieces. The last piece will be shorter if `n` does not evenly divide the length of diff --git a/src/Array.ts b/src/Array.ts index fb04f0ebf..7796caf6f 100644 --- a/src/Array.ts +++ b/src/Array.ts @@ -1054,6 +1054,13 @@ export const apSecond: (fb: Array) => (fa: Array) => Array = RA.a */ export const chain: (f: (a: A) => Array) => (ma: Array) => Array = RA.chain as any +/** + * @since 2.7.0 + */ +export const chainWithIndex: ( + f: (index: number, a: A) => Array +) => (ma: Array) => Array = RA.chainWithIndex as any + /** * Composes computations in sequence, using the return value of one computation to determine the next computation and * keeping only the result of the first. diff --git a/src/ReadonlyArray.ts b/src/ReadonlyArray.ts index db6545050..500227e73 100644 --- a/src/ReadonlyArray.ts +++ b/src/ReadonlyArray.ts @@ -1431,13 +1431,16 @@ export const zero: Alternative1['zero'] = () => empty const map_: Monad1['map'] = (fa, f) => fa.map((a) => f(a)) const mapWithIndex_: FunctorWithIndex1['mapWithIndex'] = (fa, f) => fa.map((a, i) => f(i, a)) const ap_: Monad1['ap'] = (fab, fa) => flatten(map_(fab, (f) => map_(fa, f))) -const chain_: Monad1['chain'] = (fa, f) => { +const chainWithIndex_: (fa: ReadonlyArray, f: (i: number, a: A) => ReadonlyArray) => ReadonlyArray = ( + fa, + f +) => { let outLen = 0 const l = fa.length const temp = new Array(l) for (let i = 0; i < l; i++) { const e = fa[i] - const arr = f(e) + const arr = f(i, e) outLen += arr.length temp[i] = arr } @@ -1453,6 +1456,8 @@ const chain_: Monad1['chain'] = (fa, f) => { } return out } +const chain_: (fa: ReadonlyArray, f: (a: A) => ReadonlyArray) => ReadonlyArray = (fa, f) => + chainWithIndex_(fa, (_index, a) => f(a)) const filterMap_: Filterable1['filterMap'] = (as, f) => filterMapWithIndex_(as, (_, a) => f(a)) const filter_: Filter1 = (as: ReadonlyArray, predicate: Predicate) => as.filter(predicate) const partitionWithIndex_: PartitionWithIndex1 = ( @@ -1631,6 +1636,13 @@ export const apSecond = (fb: ReadonlyArray) => (fa: ReadonlyArray): export const chain: (f: (a: A) => ReadonlyArray) => (ma: ReadonlyArray) => ReadonlyArray = (f) => (ma) => chain_(ma, f) +/** + * @since 2.7.0 + */ +export const chainWithIndex: ( + f: (i: number, a: A) => ReadonlyArray +) => (ma: ReadonlyArray) => ReadonlyArray = (f) => (ma) => chainWithIndex_(ma, f) + /** * Composes computations in sequence, using the return value of one computation to determine the next computation and * keeping only the result of the first. diff --git a/test/Array.ts b/test/Array.ts index bc8103dae..6fb932a80 100644 --- a/test/Array.ts +++ b/test/Array.ts @@ -131,6 +131,16 @@ describe('Array', () => { ) }) + it('chainWithIndex', () => { + assert.deepStrictEqual( + pipe( + [1, 2, 3], + _.chainWithIndex((i, n) => [n + i]) + ), + [1, 3, 5] + ) + }) + it('chainFirst', () => { assert.deepStrictEqual( pipe( diff --git a/test/ReadonlyArray.ts b/test/ReadonlyArray.ts index aa90752cb..4a56ebe49 100644 --- a/test/ReadonlyArray.ts +++ b/test/ReadonlyArray.ts @@ -127,6 +127,16 @@ describe('ReadonlyArray', () => { ) }) + it('chainWithIndex', () => { + assert.deepStrictEqual( + pipe( + [1, 2, 3], + _.chainWithIndex((i, n) => [n + i]) + ), + [1, 3, 5] + ) + }) + it('chainFirst', () => { assert.deepStrictEqual( pipe( From 12e4299f6569653dda11449231aa522fda622bdb Mon Sep 17 00:00:00 2001 From: gcanti Date: Mon, 29 Jun 2020 17:17:18 +0200 Subject: [PATCH 090/106] update changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8290b11da..986e32fbd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ high state of flux, you're at risk of it changing without notice. - `function` - add `hole` (type hole simulation) (@gcanti) - `Array` + - add `chainWithIndex`, #1256 (@OliverJAsh) - add `functorArray` instance (@gcanti) - add `functorWithIndexArray` instance (@gcanti) - add `applicativeArray` instance (@gcanti) @@ -141,6 +142,7 @@ high state of flux, you're at risk of it changing without notice. - add `bifunctorReaderTaskEither` instance (@gcanti) - add `altReaderTaskEither` instance (@gcanti) - `ReadonlyArray` + - add `chainWithIndex`, #1256 (@OliverJAsh) - add `functorArray` instance (@gcanti) - add `functorWithIndexArray` instance (@gcanti) - add `applicativeArray` instance (@gcanti) From ff3ad97627e8be0fa4e6dfd82d3c08aa31a319b1 Mon Sep 17 00:00:00 2001 From: gcanti Date: Mon, 29 Jun 2020 15:07:38 +0200 Subject: [PATCH 091/106] improve performance of sequenceT and sequenceS, fix #1255 --- CHANGELOG.md | 2 ++ perf/Apply/sequenceS.ts | 45 +++++++++++++++++++++++++++++++ perf/Apply/sequenceT.ts | 45 +++++++++++++++++++++++++++++++ src/Apply.ts | 60 ++++++++++++++++++++++++++++++++--------- test/Apply.ts | 32 +++++++++++++++++++--- 5 files changed, 168 insertions(+), 16 deletions(-) create mode 100644 perf/Apply/sequenceS.ts create mode 100644 perf/Apply/sequenceT.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index 986e32fbd..a7d889ff6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,8 @@ high state of flux, you're at risk of it changing without notice. - **Bug Fix** - `These` - fix `ap` implementation in `getMonad` function (@gcanti) +- **Polish** + - improve performance of sequenceT and sequenceS, fix #1255 (@gcanti) - **New Feature** - `function` - add `hole` (type hole simulation) (@gcanti) diff --git a/perf/Apply/sequenceS.ts b/perf/Apply/sequenceS.ts new file mode 100644 index 000000000..ee04bba5b --- /dev/null +++ b/perf/Apply/sequenceS.ts @@ -0,0 +1,45 @@ +import * as Benchmark from 'benchmark' +import * as A from '../../src/Apply' +import * as E from '../../src/Either' + +/* +sequenceS (1) x 13,783,868 ops/sec ±1.90% (82 runs sampled) +sequenceS (2) x 8,007,962 ops/sec ±1.55% (83 runs sampled) +sequenceS (3) x 4,969,669 ops/sec ±1.50% (86 runs sampled) +sequenceS (4) x 3,796,491 ops/sec ±0.98% (87 runs sampled) +sequenceS (5) x 2,973,628 ops/sec ±0.50% (89 runs sampled) +sequenceS (6) x 1,126,226 ops/sec ±3.36% (84 runs sampled) +*/ + +const suite = new Benchmark.Suite() + +const sequenceS = A.sequenceS(E.applicativeEither) + +suite + .add('sequenceS (1)', function () { + sequenceS({ a: E.right(1) }) + }) + .add('sequenceS (2)', function () { + sequenceS({ a: E.right(1), b: E.right(2) }) + }) + .add('sequenceS (3)', function () { + sequenceS({ a: E.right(1), b: E.right(2), c: E.right(3) }) + }) + .add('sequenceS (4)', function () { + sequenceS({ a: E.right(1), b: E.right(2), c: E.right(3), d: E.right(4) }) + }) + .add('sequenceS (5)', function () { + sequenceS({ a: E.right(1), b: E.right(2), c: E.right(3), d: E.right(4), e: E.right(5) }) + }) + .add('sequenceS (6)', function () { + sequenceS({ a: E.right(1), b: E.right(2), c: E.right(3), d: E.right(4), e: E.right(5), f: E.right(6) }) + }) + .on('cycle', function (event: any) { + // tslint:disable-next-line: no-console + console.log(String(event.target)) + }) + .on('complete', function (this: any) { + // tslint:disable-next-line: no-console + console.log('Fastest is ' + this.filter('fastest').map('name')) + }) + .run({ async: true }) diff --git a/perf/Apply/sequenceT.ts b/perf/Apply/sequenceT.ts new file mode 100644 index 000000000..47dcdb1de --- /dev/null +++ b/perf/Apply/sequenceT.ts @@ -0,0 +1,45 @@ +import * as Benchmark from 'benchmark' +import * as A from '../../src/Apply' +import * as E from '../../src/Either' + +/* +sequenceT (1) x 15,737,986 ops/sec ±0.71% (88 runs sampled) +sequenceT (2) x 8,389,840 ops/sec ±0.65% (86 runs sampled) +sequenceT (3) x 5,759,450 ops/sec ±0.54% (90 runs sampled) +sequenceT (4) x 4,307,637 ops/sec ±1.44% (85 runs sampled) +sequenceT (5) x 3,464,223 ops/sec ±1.75% (85 runs sampled) +sequenceT (6) x 1,899,460 ops/sec ±2.75% (84 runs sampled) +*/ + +const suite = new Benchmark.Suite() + +const sequenceT = A.sequenceT(E.applicativeEither) + +suite + .add('sequenceT (1)', function () { + sequenceT(E.right(1)) + }) + .add('sequenceT (2)', function () { + sequenceT(E.right(1), E.right(2)) + }) + .add('sequenceT (3)', function () { + sequenceT(E.right(1), E.right(2), E.right(3)) + }) + .add('sequenceT (4)', function () { + sequenceT(E.right(1), E.right(2), E.right(3), E.right(4)) + }) + .add('sequenceT (5)', function () { + sequenceT(E.right(1), E.right(2), E.right(3), E.right(4), E.right(5)) + }) + .add('sequenceT (6)', function () { + sequenceT(E.right(1), E.right(2), E.right(3), E.right(4), E.right(5), E.right(6)) + }) + .on('cycle', function (event: any) { + // tslint:disable-next-line: no-console + console.log(String(event.target)) + }) + .on('complete', function (this: any) { + // tslint:disable-next-line: no-console + console.log('Fastest is ' + this.filter('fastest').map('name')) + }) + .run({ async: true }) diff --git a/src/Apply.ts b/src/Apply.ts index de109bf9b..56465aa80 100644 --- a/src/Apply.ts +++ b/src/Apply.ts @@ -97,12 +97,22 @@ export interface Apply4 extends Functor4 { function curried(f: Function, n: number, acc: ReadonlyArray) { return function (x: unknown) { - const combined = acc.concat([x]) + const combined = Array(acc.length + 1) + for (let i = 0; i < acc.length; i++) { + combined[i] = acc[i] + } + combined[acc.length] = x return n === 0 ? f.apply(null, combined) : curried(f, n - 1, combined) } } -const tupleConstructors: Record unknown> = {} +const tupleConstructors: Record any> = { + 1: (a) => [a], + 2: (a) => (b: any) => [a, b], + 3: (a) => (b: any) => (c: any) => [a, b, c], + 4: (a) => (b: any) => (c: any) => (d: any) => [a, b, c, d], + 5: (a) => (b: any) => (c: any) => (d: any) => (e: any) => [a, b, c, d, e] +} function getTupleConstructor(len: number): (a: unknown) => any { if (!tupleConstructors.hasOwnProperty(len)) { @@ -178,17 +188,41 @@ type EnforceNonEmptyRecord = keyof R extends never ? never : R function getRecordConstructor(keys: ReadonlyArray) { const len = keys.length - return curried( - (...args: ReadonlyArray) => { - const r: Record = {} - for (let i = 0; i < len; i++) { - r[keys[i]] = args[i] - } - return r - }, - len - 1, - [] - ) + switch (len) { + case 1: + return (a: any) => ({ [keys[0]]: a }) + case 2: + return (a: any) => (b: any) => ({ [keys[0]]: a, [keys[1]]: b }) + case 3: + return (a: any) => (b: any) => (c: any) => ({ [keys[0]]: a, [keys[1]]: b, [keys[2]]: c }) + case 4: + return (a: any) => (b: any) => (c: any) => (d: any) => ({ + [keys[0]]: a, + [keys[1]]: b, + [keys[2]]: c, + [keys[3]]: d + }) + case 5: + return (a: any) => (b: any) => (c: any) => (d: any) => (e: any) => ({ + [keys[0]]: a, + [keys[1]]: b, + [keys[2]]: c, + [keys[3]]: d, + [keys[4]]: e + }) + default: + return curried( + (...args: ReadonlyArray) => { + const r: Record = {} + for (let i = 0; i < len; i++) { + r[keys[i]] = args[i] + } + return r + }, + len - 1, + [] + ) + } } /* tslint:disable:readonly-array */ diff --git a/test/Apply.ts b/test/Apply.ts index 65093c3c5..0a3da903f 100644 --- a/test/Apply.ts +++ b/test/Apply.ts @@ -9,8 +9,18 @@ describe('Apply', () => { it('sequenceT', () => { const sequenceTOption = sequenceT(O.applicativeOption) assert.deepStrictEqual(sequenceTOption(O.some(1)), O.some([1])) - assert.deepStrictEqual(sequenceTOption(O.some(1), O.some('2')), O.some([1, '2'])) - assert.deepStrictEqual(sequenceTOption(O.some(1), O.some('2'), O.none), O.none) + assert.deepStrictEqual(sequenceTOption(O.some(1), O.some('a')), O.some([1, 'a'])) + assert.deepStrictEqual(sequenceTOption(O.some(1), O.some('a'), O.some(true)), O.some([1, 'a', true])) + assert.deepStrictEqual(sequenceTOption(O.some(1), O.some('a'), O.some(true), O.some(2)), O.some([1, 'a', true, 2])) + assert.deepStrictEqual( + sequenceTOption(O.some(1), O.some('a'), O.some(true), O.some(2), O.some('b')), + O.some([1, 'a', true, 2, 'b']) + ) + assert.deepStrictEqual( + sequenceTOption(O.some(1), O.some('a'), O.some(true), O.some(2), O.some('b'), O.some(false)), + O.some([1, 'a', true, 2, 'b', false]) + ) + assert.deepStrictEqual(sequenceTOption(O.some(1), O.some('a'), O.none), O.none) // #914 const a1: ReadonlyArray = [1, 2, 3] @@ -44,7 +54,23 @@ describe('Apply', () => { it('sequenceS', () => { const adoOption = sequenceS(O.applicativeOption) assert.deepStrictEqual(adoOption({ a: O.some(1) }), O.some({ a: 1 })) - assert.deepStrictEqual(adoOption({ a: O.some(1), b: O.some(2) }), O.some({ a: 1, b: 2 })) + assert.deepStrictEqual(adoOption({ a: O.some(1), b: O.some('a') }), O.some({ a: 1, b: 'a' })) + assert.deepStrictEqual( + adoOption({ a: O.some(1), b: O.some('a'), c: O.some(true) }), + O.some({ a: 1, b: 'a', c: true }) + ) + assert.deepStrictEqual( + adoOption({ a: O.some(1), b: O.some('a'), c: O.some(true), d: O.some(2) }), + O.some({ a: 1, b: 'a', c: true, d: 2 }) + ) + assert.deepStrictEqual( + adoOption({ a: O.some(1), b: O.some('a'), c: O.some(true), d: O.some(2), e: O.some('b') }), + O.some({ a: 1, b: 'a', c: true, d: 2, e: 'b' }) + ) + assert.deepStrictEqual( + adoOption({ a: O.some(1), b: O.some('a'), c: O.some(true), d: O.some(2), e: O.some('b'), f: O.some(false) }), + O.some({ a: 1, b: 'a', c: true, d: 2, e: 'b', f: false }) + ) assert.deepStrictEqual(adoOption({ a: O.some(1), b: O.none }), O.none) const adoEither = sequenceS(E.applicativeEither) From 5ac98c07685229d13de83e4a680d2009554b8667 Mon Sep 17 00:00:00 2001 From: DenisFrezzato Date: Wed, 1 Jul 2020 09:23:37 +0200 Subject: [PATCH 092/106] Fix Record documentation --- docs/modules/Record.ts.md | 2 +- src/Record.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/modules/Record.ts.md b/docs/modules/Record.ts.md index 38b93e79e..6482c4ec9 100644 --- a/docs/modules/Record.ts.md +++ b/docs/modules/Record.ts.md @@ -563,7 +563,7 @@ Added in v2.0.0 ## getMonoid -Returns a `Semigroup` instance for records given a `Semigroup` instance for their values +Returns a `Monoid` instance for records given a `Semigroup` instance for their values **Signature** diff --git a/src/Record.ts b/src/Record.ts index b73340828..84ee0bae8 100644 --- a/src/Record.ts +++ b/src/Record.ts @@ -162,7 +162,7 @@ export function getEq(E: Eq): Eq> { } /** - * Returns a `Semigroup` instance for records given a `Semigroup` instance for their values + * Returns a `Monoid` instance for records given a `Semigroup` instance for their values * * @example * import { semigroupSum } from 'fp-ts/lib/Semigroup' From d990c5d287fef7257ca21758af703e7548f9122a Mon Sep 17 00:00:00 2001 From: DenisFrezzato Date: Wed, 1 Jul 2020 09:49:17 +0200 Subject: [PATCH 093/106] Fix ReadonlyRecord documentation --- docs/modules/ReadonlyRecord.ts.md | 2 +- src/ReadonlyRecord.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/modules/ReadonlyRecord.ts.md b/docs/modules/ReadonlyRecord.ts.md index ff3c5a539..91031a32f 100644 --- a/docs/modules/ReadonlyRecord.ts.md +++ b/docs/modules/ReadonlyRecord.ts.md @@ -458,7 +458,7 @@ Added in v2.5.0 ## getMonoid -Returns a `Semigroup` instance for records given a `Semigroup` instance for their values +Returns a `Monoid` instance for records given a `Semigroup` instance for their values **Signature** diff --git a/src/ReadonlyRecord.ts b/src/ReadonlyRecord.ts index f010bc1e2..a54b22fbf 100644 --- a/src/ReadonlyRecord.ts +++ b/src/ReadonlyRecord.ts @@ -285,7 +285,7 @@ export function getEq(E: Eq): Eq> { } /** - * Returns a `Semigroup` instance for records given a `Semigroup` instance for their values + * Returns a `Monoid` instance for records given a `Semigroup` instance for their values * * @example * import { semigroupSum } from 'fp-ts/lib/Semigroup' From 781f6c6b349969284625f6dcb11b297bf32ab441 Mon Sep 17 00:00:00 2001 From: gcanti Date: Wed, 1 Jul 2020 14:40:26 +0200 Subject: [PATCH 094/106] Record / ReadonlyRecord: handle this in `hasOwnProperty`, fix #1249 --- src/ReadonlyRecord.ts | 7 ++++--- test/ReadonlyRecord.ts | 5 +++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/ReadonlyRecord.ts b/src/ReadonlyRecord.ts index a54b22fbf..d00d2835b 100644 --- a/src/ReadonlyRecord.ts +++ b/src/ReadonlyRecord.ts @@ -159,12 +159,13 @@ export function insertAt(k: string, a: A): (r: ReadonlyRecord) => const _hasOwnProperty = Object.prototype.hasOwnProperty -// TODO: rename to avoid #1249? +// TODO: rename in v3 to avoid #1249 /** * @since 2.5.0 */ -export function hasOwnProperty(k: string, r: ReadonlyRecord): k is K { - return _hasOwnProperty.call(r, k) +export function hasOwnProperty(k: string, r: ReadonlyRecord): k is K +export function hasOwnProperty(this: any, k: string, r?: ReadonlyRecord): k is K { + return _hasOwnProperty.call(r === undefined ? this : r, k) } /** diff --git a/test/ReadonlyRecord.ts b/test/ReadonlyRecord.ts index fffe94ba5..17822b0d1 100644 --- a/test/ReadonlyRecord.ts +++ b/test/ReadonlyRecord.ts @@ -407,6 +407,11 @@ describe('ReadonlyRecord', () => { const x: _.ReadonlyRecord = { a: 1 } assert.deepStrictEqual(_.hasOwnProperty('a', x), true) assert.deepStrictEqual(_.hasOwnProperty('b', x), false) + // TODO: remove in v3 + // #1249 + const hasOwnProperty: any = _.hasOwnProperty + assert.deepStrictEqual(hasOwnProperty.call(x, 'a'), true) + assert.deepStrictEqual(hasOwnProperty.call(x, 'b'), false) }) it('updateAt', () => { From 336a4ea8ed5389e57e72329acd7cc37393300829 Mon Sep 17 00:00:00 2001 From: gcanti Date: Sat, 4 Jul 2020 15:37:37 +0200 Subject: [PATCH 095/106] rename all new instances following a upper-case naming convention --- CHANGELOG.md | 374 ++++++++++++----------- docs/modules/Array.ts.md | 210 ++++++------- docs/modules/Const.ts.md | 38 +-- docs/modules/Either.ts.md | 140 ++++----- docs/modules/Eq.ts.md | 18 +- docs/modules/IO.ts.md | 58 ++-- docs/modules/IOEither.ts.md | 102 +++---- docs/modules/Identity.ts.md | 76 ++--- docs/modules/Map.ts.md | 34 +-- docs/modules/NonEmptyArray.ts.md | 120 ++++---- docs/modules/Option.ts.md | 148 ++++----- docs/modules/Ord.ts.md | 40 +-- docs/modules/Reader.ts.md | 58 ++-- docs/modules/ReaderEither.ts.md | 80 ++--- docs/modules/ReaderTask.ts.md | 34 +-- docs/modules/ReaderTaskEither.ts.md | 46 +-- docs/modules/ReadonlyArray.ts.md | 186 +++++------ docs/modules/ReadonlyMap.ts.md | 34 +-- docs/modules/ReadonlyNonEmptyArray.ts.md | 120 ++++---- docs/modules/ReadonlyRecord.ts.md | 124 ++++---- docs/modules/ReadonlyTuple.ts.md | 80 ++--- docs/modules/Record.ts.md | 92 +++--- docs/modules/State.ts.md | 34 +-- docs/modules/StateReaderTaskEither.ts.md | 40 +-- docs/modules/Store.ts.md | 32 +- docs/modules/Task.ts.md | 34 +-- docs/modules/TaskEither.ts.md | 46 +-- docs/modules/These.ts.md | 54 ++-- docs/modules/Traced.ts.md | 18 +- docs/modules/Tree.ts.md | 66 ++-- docs/modules/Tuple.ts.md | 72 ++--- docs/modules/Writer.ts.md | 18 +- src/Array.ts | 83 +++-- src/Const.ts | 7 +- src/Either.ts | 32 +- src/EitherT.ts | 2 +- src/Eq.ts | 4 +- src/IO.ts | 10 +- src/IOEither.ts | 20 +- src/Identity.ts | 26 +- src/Map.ts | 18 +- src/NonEmptyArray.ts | 53 ++-- src/Option.ts | 42 +-- src/OptionT.ts | 4 +- src/Ord.ts | 6 +- src/Reader.ts | 15 +- src/ReaderEither.ts | 16 +- src/ReaderTask.ts | 8 +- src/ReaderTaskEither.ts | 14 +- src/ReadonlyArray.ts | 50 +-- src/ReadonlyMap.ts | 6 +- src/ReadonlyNonEmptyArray.ts | 47 ++- src/ReadonlyRecord.ts | 30 +- src/ReadonlyTuple.ts | 12 +- src/Record.ts | 72 ++--- src/State.ts | 8 +- src/StateReaderTaskEither.ts | 8 +- src/Store.ts | 12 +- src/Task.ts | 8 +- src/TaskEither.ts | 16 +- src/TaskThese.ts | 2 +- src/These.ts | 8 +- src/Traced.ts | 4 +- src/Tree.ts | 30 +- src/Tuple.ts | 30 +- src/Writer.ts | 4 +- test/Applicative.ts | 2 +- test/Apply.ts | 12 +- test/Array.ts | 16 +- test/Choice.ts | 14 +- test/Compactable.ts | 2 +- test/Either.ts | 10 +- test/EitherT.ts | 2 +- test/Filterable.ts | 2 +- test/Foldable.ts | 12 +- test/FoldableWithIndex.ts | 2 +- test/Functor.ts | 2 +- test/FunctorWithIndex.ts | 2 +- test/IO.ts | 2 +- test/Identity.ts | 6 +- test/Map.ts | 18 +- test/NonEmptyArray.ts | 10 +- test/Option.ts | 12 +- test/OptionT.ts | 2 +- test/ReaderTask.ts | 4 +- test/ReaderTaskEither.ts | 6 +- test/ReadonlyArray.ts | 14 +- test/ReadonlyMap.ts | 20 +- test/ReadonlyNonEmptyArray.ts | 10 +- test/ReadonlyRecord.ts | 28 +- test/ReadonlyTuple.ts | 4 +- test/Record.ts | 30 +- test/StateReaderTaskEither.ts | 4 +- test/Strong.ts | 8 +- test/Task.ts | 4 +- test/TaskEither.ts | 6 +- test/TaskThese.ts | 4 +- test/These.ts | 6 +- test/Traversable.ts | 12 +- test/Tree.ts | 6 +- test/pipeable.ts | 26 +- 101 files changed, 1826 insertions(+), 1827 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a7d889ff6..1d1809170 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,234 +26,236 @@ high state of flux, you're at risk of it changing without notice. - add `hole` (type hole simulation) (@gcanti) - `Array` - add `chainWithIndex`, #1256 (@OliverJAsh) - - add `functorArray` instance (@gcanti) - - add `functorWithIndexArray` instance (@gcanti) - - add `applicativeArray` instance (@gcanti) - - add `monadArray` instance (@gcanti) - - add `unfoldableArray` instance (@gcanti) - - add `altArray` instance (@gcanti) - - add `alternativeArray` instance (@gcanti) - - add `extendArray` instance (@gcanti) - - add `compactableArray` instance (@gcanti) - - add `filterableArray` instance (@gcanti) - - add `filterableWithIndexArray` instance (@gcanti) - - add `foldableArray` instance (@gcanti) - - add `foldableWithIndexArray` instance (@gcanti) - - add `traversableArray` instance (@gcanti) - - add `traversableWithIndexArray` instance (@gcanti) - - add `witherableArray` instance (@gcanti) + - add `Functor` instance (@gcanti) + - add `FunctorWithIndex` instance (@gcanti) + - add `Applicative` instance (@gcanti) + - add `Monad` instance (@gcanti) + - add `Unfoldable` instance (@gcanti) + - add `Alt` instance (@gcanti) + - add `Alternative` instance (@gcanti) + - add `Extend` instance (@gcanti) + - add `Compactable` instance (@gcanti) + - add `Filterable` instance (@gcanti) + - add `FilterableWithIndex` instance (@gcanti) + - add `Foldable` instance (@gcanti) + - add `FoldableWithIndex` instance (@gcanti) + - add `Traversable` instance (@gcanti) + - add `TraversableWithIndex` instance (@gcanti) + - add `Witherable` instance (@gcanti) - `Const` - - add `functorConst` instance (@gcanti) - - add `contravariantConst` instance (@gcanti) - - add `bifunctorConst` instance (@gcanti) + - add `Functor` instance (@gcanti) + - add `Contravariant` instance (@gcanti) + - add `Bifunctor` instance (@gcanti) - `Either` - add `getApplicativeValidation` constrained instance (@gcanti) - add `getAltValidation` constrained instance (@gcanti) - - add `functorEither` instance (@gcanti) - - add `applicativeEither` instance (@gcanti) - - add `monadEither` instance (@gcanti) - - add `foldableEither` instance (@gcanti) - - add `traversableEither` instance (@gcanti) - - add `bifunctorEither` instance (@gcanti) - - add `altEither` instance (@gcanti) - - add `extendEither` instance (@gcanti) - - add `chainRecEither` instance (@gcanti) - - add `monadThrowEither` instance (@gcanti) + - add `Functor` instance (@gcanti) + - add `Applicative` instance (@gcanti) + - add `Monad` instance (@gcanti) + - add `Foldable` instance (@gcanti) + - add `Traversable` instance (@gcanti) + - add `Bifunctor` instance (@gcanti) + - add `Alt` instance (@gcanti) + - add `Extend` instance (@gcanti) + - add `ChainRec` instance (@gcanti) + - add `MonadThrow` instance (@gcanti) - `Eq` - - add `contravariantEq` instance (@gcanti) + - add `Contravariant` instance (@gcanti) - `Identity` - - add `functorIdentity` instance (@gcanti) - - add `applicativeIdentity` instance (@gcanti) - - add `monadIdentity` instance (@gcanti) - - add `foldableIdentity` instance (@gcanti) - - add `traversableIdentity` instance (@gcanti) - - add `altIdentity` instance (@gcanti) - - add `comonadIdentity` instance (@gcanti) - - add `chainRecIdentity` instance (@gcanti) + - add `Functor` instance (@gcanti) + - add `Applicative` instance (@gcanti) + - add `Monad` instance (@gcanti) + - add `Foldable` instance (@gcanti) + - add `Traversable` instance (@gcanti) + - add `Alt` instance (@gcanti) + - add `Comonad` instance (@gcanti) + - add `ChainRec` instance (@gcanti) - `IO` - - add `functorIO` instance (@gcanti) - - add `applicativeIO` instance (@gcanti) - - add `monadIO` instance (@gcanti) - - add `monadIOIO` instance (@gcanti) - - add `chainRecIO` instance (@gcanti) + - add `Functor` instance (@gcanti) + - add `Applicative` instance (@gcanti) + - add `Monad` instance (@gcanti) + - add `MonadIO` instance (@gcanti) + - add `ChainRec` instance (@gcanti) - `IOEither` - add `getApplicativeIOValidation` constrained instance (@gcanti) - add `getAltIOValidation` constrained instance (@gcanti) - - add `functorIOEither` instance (@gcanti) - - add `applicativeIOEither` instance (@gcanti) - - add `monadIOEither` instance (@gcanti) - - add `bifunctorIOEither` instance (@gcanti) - - add `altIOEither` instance (@gcanti) - - add `monadIOIOEither` instance (@gcanti) - - add `monadThrowIOEither` instance (@gcanti) + - add `Functor` instance (@gcanti) + - add `Applicative` instance (@gcanti) + - add `Monad` instance (@gcanti) + - add `Bifunctor` instance (@gcanti) + - add `Alt` instance (@gcanti) + - add `MonadIO` instance (@gcanti) + - add `MonadThrow` instance (@gcanti) - `Map` - - add `functorMap` instance (@gcanti) - - add `compactableMap` instance (@gcanti) - - add `filterableMap` instance (@gcanti) + - add `Functor` instance (@gcanti) + - add `Compactable` instance (@gcanti) + - add `Filterable` instance (@gcanti) - `NonEmptyArray` - - add `functorNonEmptyArray` instance (@gcanti) - - add `functorWithIndexNonEmptyArray` instance (@gcanti) - - add `applicativeNonEmptyArray` instance (@gcanti) - - add `monadNonEmptyArray` instance (@gcanti) - - add `foldableNonEmptyArray` instance (@gcanti) - - add `foldableWithIndexNonEmptyArray` instance (@gcanti) - - add `traversableNonEmptyArray` instance (@gcanti) - - add `traversableWithIndexNonEmptyArray` instance (@gcanti) - - add `altNonEmptyArray` instance (@gcanti) - - add `comonadNonEmptyArray` instance (@gcanti) + - add `Functor` instance (@gcanti) + - add `FunctorWithIndex` instance (@gcanti) + - add `Applicative` instance (@gcanti) + - add `Monad` instance (@gcanti) + - add `Foldable` instance (@gcanti) + - add `FoldableWithIndex` instance (@gcanti) + - add `Traversable` instance (@gcanti) + - add `TraversableWithIndex` instance (@gcanti) + - add `Alt` instance (@gcanti) + - add `Comonad` instance (@gcanti) - `Option` - - add `functorOption` instance (@gcanti) - - add `applicativeOption` instance (@gcanti) - - add `monadOption` instance (@gcanti) - - add `foldableOption` instance (@gcanti) - - add `altOption` instance (@gcanti) - - add `alternativeOption` instance (@gcanti) - - add `extendOption` instance (@gcanti) - - add `compactableOption` instance (@gcanti) - - add `filterableOption` instance (@gcanti) - - add `traversableOption` instance (@gcanti) - - add `witherableOption` instance (@gcanti) - - add `monadThrowOption` instance (@gcanti) + - add `Functor` instance (@gcanti) + - add `Applicativ` instance (@gcanti) + - add `Monad` instance (@gcanti) + - add `Foldable` instance (@gcanti) + - add `Alt` instance (@gcanti) + - add `Alternative` instance (@gcanti) + - add `Extend` instance (@gcanti) + - add `Compactable` instance (@gcanti) + - add `Filterable` instance (@gcanti) + - add `Traversable` instance (@gcanti) + - add `Witherable` instance (@gcanti) + - add `MonadThrow` instance (@gcanti) - `Ord` - - add `contravariantOrd` instance (@gcanti) + - add `ContravariantOrd` instance (@gcanti) - `Reader` - - add `functorReader` instance (@gcanti) - - add `applicativeReader` instance (@gcanti) - - add `monadReader` instance (@gcanti) - - add `profunctorReader` instance (@gcanti) - - add `categoryReader` instance (@gcanti) + - add `Functor` instance (@gcanti) + - add `Applicative` instance (@gcanti) + - add `Monad` instance (@gcanti) + - add `Profunctor` instance (@gcanti) + - add `Category` instance (@gcanti) + - add `String` instance (@gcanti) + - add `Choice` instance (@gcanti) - `ReaderEither` - add `getApplicativeReaderValidation` constrained instance (@gcanti) - add `getAltReaderValidation` constrained instance (@gcanti) - - add `functorReaderEither` instance (@gcanti) - - add `applicativeReaderEither` instance (@gcanti) - - add `monadReaderEither` instance (@gcanti) - - add `bifunctorReaderEither` instance (@gcanti) - - add `altReaderEither` instance (@gcanti) - - add `monadThrowReaderEither` instance (@gcanti) + - add `Functor` instance (@gcanti) + - add `Applicative` instance (@gcanti) + - add `Monad` instance (@gcanti) + - add `Bifunctor` instance (@gcanti) + - add `Alt` instance (@gcanti) + - add `MonadThrow` instance (@gcanti) - `ReaderTask` - - add `functorReaderTask` instance (@gcanti) - - add `applicativeReaderTaskPar` instance (@gcanti) - - add `applicativeReaderTaskSeq` instance (@gcanti) + - add `Functor` instance (@gcanti) + - add `ApplicativePar` instance (@gcanti) + - add `ApplicativeSeq` instance (@gcanti) - `ReaderTaskEither` - add `getApplicativeReaderTaskValidation` constrained instance (@gcanti) - add `getAltReaderTaskValidation` constrained instance (@gcanti) - - add `functorReaderTaskEither` instance (@gcanti) - - add `applicativeReaderTaskEitherPar` instance (@gcanti) - - add `applicativeReaderTaskEitherSeq` instance (@gcanti) - - add `bifunctorReaderTaskEither` instance (@gcanti) - - add `altReaderTaskEither` instance (@gcanti) + - add `Functor` instance (@gcanti) + - add `ApplicativePar` instance (@gcanti) + - add `ApplicativeSeq` instance (@gcanti) + - add `Bifunctor` instance (@gcanti) + - add `Alt` instance (@gcanti) - `ReadonlyArray` - add `chainWithIndex`, #1256 (@OliverJAsh) - - add `functorArray` instance (@gcanti) - - add `functorWithIndexArray` instance (@gcanti) - - add `applicativeArray` instance (@gcanti) - - add `monadArray` instance (@gcanti) - - add `unfoldableArray` instance (@gcanti) - - add `altArray` instance (@gcanti) - - add `alternativeArray` instance (@gcanti) - - add `extendArray` instance (@gcanti) - - add `compactableArray` instance (@gcanti) - - add `filterableArray` instance (@gcanti) - - add `filterableWithIndexArray` instance (@gcanti) - - add `foldableArray` instance (@gcanti) - - add `foldableWithIndexArray` instance (@gcanti) - - add `traversableArray` instance (@gcanti) - - add `traversableWithIndexArray` instance (@gcanti) - - add `witherableArray` instance (@gcanti) + - add `Functor` instance (@gcanti) + - add `FunctorWithIndex` instance (@gcanti) + - add `Applicative` instance (@gcanti) + - add `Monad` instance (@gcanti) + - add `Unfoldable` instance (@gcanti) + - add `Alt` instance (@gcanti) + - add `Alternative` instance (@gcanti) + - add `Extend` instance (@gcanti) + - add `Compactable` instance (@gcanti) + - add `Filterable` instance (@gcanti) + - add `FilterableWithIndex` instance (@gcanti) + - add `Foldable` instance (@gcanti) + - add `FoldableWithIndex` instance (@gcanti) + - add `Traversable` instance (@gcanti) + - add `TraversableWithIndex` instance (@gcanti) + - add `Witherable` instance (@gcanti) - `ReadonlyMap` - - add `functorMap` instance (@gcanti) - - add `compactableMap` instance (@gcanti) - - add `filterableMap` instance (@gcanti) + - add `Functor` instance (@gcanti) + - add `Compactable` instance (@gcanti) + - add `Filterable` instance (@gcanti) - `ReadonlyNonEmptyArray` - - add `functorNonEmptyArray` instance (@gcanti) - - add `functorWithIndexNonEmptyArray` instance (@gcanti) - - add `applicativeNonEmptyArray` instance (@gcanti) - - add `monadNonEmptyArray` instance (@gcanti) - - add `foldableNonEmptyArray` instance (@gcanti) - - add `foldableWithIndexNonEmptyArray` instance (@gcanti) - - add `traversableNonEmptyArray` instance (@gcanti) - - add `traversableWithIndexNonEmptyArray` instance (@gcanti) - - add `altNonEmptyArray` instance (@gcanti) - - add `comonadNonEmptyArray` instance (@gcanti) + - add `Functor` instance (@gcanti) + - add `FunctorWithIndex` instance (@gcanti) + - add `Applicative` instance (@gcanti) + - add `Monad` instance (@gcanti) + - add `Foldable` instance (@gcanti) + - add `FoldableWithIndex` instance (@gcanti) + - add `Traversable` instance (@gcanti) + - add `TraversableWithIndex` instance (@gcanti) + - add `Alt` instance (@gcanti) + - add `Comonad` instance (@gcanti) - `ReadonlyRecord` - - add `functorRecord` instance (@gcanti) - - add `functorWithIndexRecord` instance (@gcanti) - - add `foldableRecord` instance (@gcanti) - - add `compactableRecord` instance (@gcanti) - - add `filterableRecord` instance (@gcanti) - - add `filterableWithIndexRecord` instance (@gcanti) - - add `traversableRecord` instance (@gcanti) - - add `traversableWithIndexRecord` instance (@gcanti) - - add `witherableRecord` instance (@gcanti) + - add `Functor` instance (@gcanti) + - add `FunctorWithIndex` instance (@gcanti) + - add `Foldable` instance (@gcanti) + - add `Compactable` instance (@gcanti) + - add `Filterable` instance (@gcanti) + - add `FilterableWithIndex` instance (@gcanti) + - add `Traversable` instance (@gcanti) + - add `TraversableWithIndex` instance (@gcanti) + - add `Witherable` instance (@gcanti) - `ReadonlyTuple` - - add `functorTuple` instance (@gcanti) - - add `bifunctorTuple` instance (@gcanti) - - add `semigroupoidTuple` instance (@gcanti) - - add `comonadTuple` instance (@gcanti) - - add `foldableTuple` instance (@gcanti) - - add `traversableTuple` instance (@gcanti) + - add `Functor` instance (@gcanti) + - add `Bifunctor` instance (@gcanti) + - add `Semigroupoid` instance (@gcanti) + - add `Comonad` instance (@gcanti) + - add `Foldable` instance (@gcanti) + - add `Traversable` instance (@gcanti) - `Record` - - add `functorRecord` instance (@gcanti) - - add `functorWithIndexRecord` instance (@gcanti) - - add `foldableRecord` instance (@gcanti) - - add `compactableRecord` instance (@gcanti) - - add `filterableRecord` instance (@gcanti) - - add `filterableWithIndexRecord` instance (@gcanti) - - add `traversableRecord` instance (@gcanti) - - add `traversableWithIndexRecord` instance (@gcanti) - - add `witherableRecord` instance (@gcanti) + - add `Functor` instance (@gcanti) + - add `FunctorWithIndex` instance (@gcanti) + - add `Foldable` instance (@gcanti) + - add `Compactable` instance (@gcanti) + - add `Filterable` instance (@gcanti) + - add `FilterableWithIndex` instance (@gcanti) + - add `Traversable` instance (@gcanti) + - add `TraversableWithIndex` instance (@gcanti) + - add `Witherable` instance (@gcanti) - `State` - - add `functorState` instance (@gcanti) - - add `applicativeState` instance (@gcanti) - - add `monadState` instance (@gcanti) + - add `Functor` instance (@gcanti) + - add `Applicative` instance (@gcanti) + - add `Monad` instance (@gcanti) - `Store` - - add `functorStore` instance (@gcanti) - - add `comonadStore` instance (@gcanti) + - add `Functor` instance (@gcanti) + - add `Comonad` instance (@gcanti) - `StateReaderTaskEither` - - add `functorStateReaderTaskEither` instance (@gcanti) - - add `applicativeStateReaderTaskEither` instance (@gcanti) - - add `bifunctorStateReaderTaskEither` instance (@gcanti) - - add `altStateReaderTaskEither` instance (@gcanti) + - add `Functor` instance (@gcanti) + - add `Applicative` instance (@gcanti) + - add `Bifunctor` instance (@gcanti) + - add `Alt` instance (@gcanti) - `Task` - - add `functorTask` instance (@gcanti) - - add `applicativeTaskPar` instance (@gcanti) - - add `applicativeTaskSeq` instance (@gcanti) + - add `Functor` instance (@gcanti) + - add `ApplicativePar` instance (@gcanti) + - add `ApplicativeSeq` instance (@gcanti) - `TaskEither` - add `getApplicativeTaskValidation` constrained instance (@gcanti) - add `getAltTaskValidation` constrained instance (@gcanti) - - add `functorTaskEither` instance (@gcanti) - - add `applicativeTaskEitherPar` instance (@gcanti) - - add `applicativeTaskEitherSeq` instance (@gcanti) - - add `bifunctorTaskEither` instance (@gcanti) - - add `altTaskEither` instance (@gcanti) + - add `Functor` instance (@gcanti) + - add `ApplicativePar` instance (@gcanti) + - add `ApplicativeSeq` instance (@gcanti) + - add `Bifunctor` instance (@gcanti) + - add `Alt` instance (@gcanti) - `TaskThese` - - add `functorTaskThese` instance (@gcanti) - - add `bifunctorTaskThese` instance (@gcanti) + - add `Functor` instance (@gcanti) + - add `Bifunctor` instance (@gcanti) - `These` - add `getApplicative` constrained instance (@gcanti) - - add `functorThese` instance (@gcanti) - - add `bifunctorThese` instance (@gcanti) - - add `foldableThese` instance (@gcanti) - - add `traversableThese` instance (@gcanti) + - add `Functor` instance (@gcanti) + - add `Bifunctor` instance (@gcanti) + - add `Foldable` instance (@gcanti) + - add `Traversable` instance (@gcanti) - `Traced` - - rename `traced` to `functorTraced` for consistency (@gcanti) + - rename `traced` to `Functor` for consistency (@gcanti) - `Tree` - - add `functorTree` instance (@gcanti) - - add `applicativeTree` instance (@gcanti) - - add `monadTree` instance (@gcanti) - - add `foldableTree` instance (@gcanti) - - add `traversableTree` instance (@gcanti) - - add `comonadTree` instance (@gcanti) - - `Traced` - - rename `writer` to `functorWriter` for consistency (@gcanti) + - add `Functor` instance (@gcanti) + - add `Applicative` instance (@gcanti) + - add `Monad` instance (@gcanti) + - add `Foldable` instance (@gcanti) + - add `Traversable` instance (@gcanti) + - add `Comonad` instance (@gcanti) + - `Writer` + - add `Functor` instance (@gcanti) - `Tuple` - - add `functorTuple` instance (@gcanti) - - add `bifunctorTuple` instance (@gcanti) - - add `semigroupoidTuple` instance (@gcanti) - - add `comonadTuple` instance (@gcanti) - - add `foldableTuple` instance (@gcanti) - - add `traversableTuple` instance (@gcanti) + - add `Functor` instance (@gcanti) + - add `Bifunctor` instance (@gcanti) + - add `Semigroupoid` instance (@gcanti) + - add `Comonad` instance (@gcanti) + - add `Foldable` instance (@gcanti) + - add `Traversable` instance (@gcanti) # 2.6.7 diff --git a/docs/modules/Array.ts.md b/docs/modules/Array.ts.md index 3c527b565..ca0ae615e 100644 --- a/docs/modules/Array.ts.md +++ b/docs/modules/Array.ts.md @@ -107,29 +107,29 @@ Added in v2.0.0 - [guards](#guards) - [isNonEmpty](#isnonempty) - [instances](#instances) + - [Alt](#alt-1) + - [Alternative](#alternative-1) + - [Applicative](#applicative) + - [Compactable](#compactable-1) + - [Extend](#extend-1) + - [Filterable](#filterable-1) + - [FilterableWithIndex](#filterablewithindex-1) + - [Foldable](#foldable-1) + - [FoldableWithIndex](#foldablewithindex-1) + - [Functor](#functor-1) + - [FunctorWithIndex](#functorwithindex-1) + - [Monad](#monad-1) + - [Traversable](#traversable-1) + - [TraversableWithIndex](#traversablewithindex-1) - [URI](#uri) - [URI (type alias)](#uri-type-alias) - - [altArray](#altarray) - - [alternativeArray](#alternativearray) - - [applicativeArray](#applicativearray) + - [Unfoldable](#unfoldable-1) + - [Witherable](#witherable) - [array](#array) - - [compactableArray](#compactablearray) - - [extendArray](#extendarray) - - [filterableArray](#filterablearray) - - [filterableWithIndexArray](#filterablewithindexarray) - - [foldableArray](#foldablearray) - - [foldableWithIndexArray](#foldablewithindexarray) - - [functorArray](#functorarray) - - [functorWithIndexArray](#functorwithindexarray) - [getEq](#geteq) - [getMonoid](#getmonoid) - [getOrd](#getord) - [getShow](#getshow) - - [monadArray](#monadarray) - - [traversableArray](#traversablearray) - - [traversableWithIndexArray](#traversablewithindexarray) - - [unfoldableArray](#unfoldablearray) - - [witherableArray](#witherablearray) - [unsafe](#unsafe) - [unsafeDeleteAt](#unsafedeleteat) - [unsafeInsertAt](#unsafeinsertat) @@ -1449,154 +1449,204 @@ Added in v2.0.0 # instances -## URI +## Alt **Signature** ```ts -export declare const URI: 'Array' +export declare const Alt: Alt1<'Array'> ``` -Added in v2.0.0 +Added in v2.7.0 -## URI (type alias) +## Alternative **Signature** ```ts -export type URI = typeof URI +export declare const Alternative: Alternative1<'Array'> ``` -Added in v2.0.0 +Added in v2.7.0 -## altArray +## Applicative **Signature** ```ts -export declare const altArray: Alt1<'Array'> +export declare const Applicative: Applicative1<'Array'> ``` Added in v2.7.0 -## alternativeArray +## Compactable **Signature** ```ts -export declare const alternativeArray: Alternative1<'Array'> +export declare const Compactable: Compactable1<'Array'> ``` Added in v2.7.0 -## applicativeArray +## Extend **Signature** ```ts -export declare const applicativeArray: Applicative1<'Array'> +export declare const Extend: Extend1<'Array'> ``` Added in v2.7.0 -## array +## Filterable **Signature** ```ts -export declare const array: FunctorWithIndex1<'Array', number> & - Monad1<'Array'> & - Unfoldable1<'Array'> & - Alternative1<'Array'> & - Extend1<'Array'> & - FilterableWithIndex1<'Array', number> & - FoldableWithIndex1<'Array', number> & - TraversableWithIndex1<'Array', number> & - Witherable1<'Array'> +export declare const Filterable: Filterable1<'Array'> ``` -Added in v2.0.0 +Added in v2.7.0 -## compactableArray +## FilterableWithIndex **Signature** ```ts -export declare const compactableArray: Compactable1<'Array'> +export declare const FilterableWithIndex: FilterableWithIndex1<'Array', number> ``` Added in v2.7.0 -## extendArray +## Foldable **Signature** ```ts -export declare const extendArray: Extend1<'Array'> +export declare const Foldable: Foldable1<'Array'> ``` Added in v2.7.0 -## filterableArray +## FoldableWithIndex **Signature** ```ts -export declare const filterableArray: Filterable1<'Array'> +export declare const FoldableWithIndex: FoldableWithIndex1<'Array', number> ``` Added in v2.7.0 -## filterableWithIndexArray +## Functor **Signature** ```ts -export declare const filterableWithIndexArray: FilterableWithIndex1<'Array', number> +export declare const Functor: Functor1<'Array'> ``` Added in v2.7.0 -## foldableArray +## FunctorWithIndex **Signature** ```ts -export declare const foldableArray: Foldable1<'Array'> +export declare const FunctorWithIndex: FunctorWithIndex1<'Array', number> ``` Added in v2.7.0 -## foldableWithIndexArray +## Monad **Signature** ```ts -export declare const foldableWithIndexArray: FoldableWithIndex1<'Array', number> +export declare const Monad: Monad1<'Array'> ``` Added in v2.7.0 -## functorArray +## Traversable **Signature** ```ts -export declare const functorArray: Functor1<'Array'> +export declare const Traversable: Traversable1<'Array'> ``` Added in v2.7.0 -## functorWithIndexArray +## TraversableWithIndex **Signature** ```ts -export declare const functorWithIndexArray: FunctorWithIndex1<'Array', number> +export declare const TraversableWithIndex: TraversableWithIndex1<'Array', number> ``` Added in v2.7.0 +## URI + +**Signature** + +```ts +export declare const URI: 'Array' +``` + +Added in v2.0.0 + +## URI (type alias) + +**Signature** + +```ts +export type URI = typeof URI +``` + +Added in v2.0.0 + +## Unfoldable + +**Signature** + +```ts +export declare const Unfoldable: Unfoldable1<'Array'> +``` + +Added in v2.7.0 + +## Witherable + +**Signature** + +```ts +export declare const Witherable: Witherable1<'Array'> +``` + +Added in v2.7.0 + +## array + +**Signature** + +```ts +export declare const array: FunctorWithIndex1<'Array', number> & + Monad1<'Array'> & + Unfoldable1<'Array'> & + Alternative1<'Array'> & + Extend1<'Array'> & + FilterableWithIndex1<'Array', number> & + FoldableWithIndex1<'Array', number> & + TraversableWithIndex1<'Array', number> & + Witherable1<'Array'> +``` + +Added in v2.0.0 + ## getEq Derives an `Eq` over the `Array` of a given element type from the `Eq` of that type. The derived `Eq` defines two @@ -1680,56 +1730,6 @@ export declare const getShow: (S: Show) => Show Added in v2.0.0 -## monadArray - -**Signature** - -```ts -export declare const monadArray: Monad1<'Array'> -``` - -Added in v2.7.0 - -## traversableArray - -**Signature** - -```ts -export declare const traversableArray: Traversable1<'Array'> -``` - -Added in v2.7.0 - -## traversableWithIndexArray - -**Signature** - -```ts -export declare const traversableWithIndexArray: TraversableWithIndex1<'Array', number> -``` - -Added in v2.7.0 - -## unfoldableArray - -**Signature** - -```ts -export declare const unfoldableArray: Unfoldable1<'Array'> -``` - -Added in v2.7.0 - -## witherableArray - -**Signature** - -```ts -export declare const witherableArray: Witherable1<'Array'> -``` - -Added in v2.7.0 - # unsafe ## unsafeDeleteAt diff --git a/docs/modules/Const.ts.md b/docs/modules/Const.ts.md index 90d9e798c..561632021 100644 --- a/docs/modules/Const.ts.md +++ b/docs/modules/Const.ts.md @@ -28,12 +28,12 @@ Added in v2.0.0 - [constructors](#constructors) - [make](#make) - [instances](#instances) + - [Bifunctor](#bifunctor-1) + - [Contravariant](#contravariant-1) + - [Functor](#functor-1) - [URI](#uri) - [URI (type alias)](#uri-type-alias) - - [bifunctorConst](#bifunctorconst) - [const\_](#const_) - - [contravariantConst](#contravariantconst) - - [functorConst](#functorconst) - [getApplicative](#getapplicative) - [getApply](#getapply) - [getBooleanAlgebra](#getbooleanalgebra) @@ -118,65 +118,65 @@ Added in v2.0.0 # instances -## URI +## Bifunctor **Signature** ```ts -export declare const URI: 'Const' +export declare const Bifunctor: Bifunctor2<'Const'> ``` -Added in v2.0.0 +Added in v2.7.0 -## URI (type alias) +## Contravariant **Signature** ```ts -export type URI = typeof URI +export declare const Contravariant: Contravariant2<'Const'> ``` -Added in v2.0.0 +Added in v2.7.0 -## bifunctorConst +## Functor **Signature** ```ts -export declare const bifunctorConst: Bifunctor2<'Const'> +export declare const Functor: Functor2<'Const'> ``` Added in v2.7.0 -## const\_ +## URI **Signature** ```ts -export declare const const_: Functor2<'Const'> & Contravariant2<'Const'> & Bifunctor2<'Const'> +export declare const URI: 'Const' ``` Added in v2.0.0 -## contravariantConst +## URI (type alias) **Signature** ```ts -export declare const contravariantConst: Contravariant2<'Const'> +export type URI = typeof URI ``` -Added in v2.7.0 +Added in v2.0.0 -## functorConst +## const\_ **Signature** ```ts -export declare const functorConst: Functor2<'Const'> +export declare const const_: Functor2<'Const'> & Contravariant2<'Const'> & Bifunctor2<'Const'> ``` -Added in v2.7.0 +Added in v2.0.0 ## getApplicative diff --git a/docs/modules/Either.ts.md b/docs/modules/Either.ts.md index 95d837100..78975b8ee 100644 --- a/docs/modules/Either.ts.md +++ b/docs/modules/Either.ts.md @@ -75,16 +75,19 @@ Added in v2.0.0 - [isLeft](#isleft) - [isRight](#isright) - [instances](#instances) + - [Alt](#alt-1) + - [Applicative](#applicative-1) + - [Bifunctor](#bifunctor-1) + - [ChainRec](#chainrec) + - [Extend](#extend-1) + - [Foldable](#foldable-1) + - [Functor](#functor-1) + - [Monad](#monad-1) + - [MonadThrow](#monadthrow-1) + - [Traversable](#traversable-1) - [URI](#uri) - [URI (type alias)](#uri-type-alias) - - [altEither](#alteither) - - [applicativeEither](#applicativeeither) - - [bifunctorEither](#bifunctoreither) - - [chainRecEither](#chainreceither) - [either](#either) - - [extendEither](#extendeither) - - [foldableEither](#foldableeither) - - [functorEither](#functoreither) - [getAltValidation](#getaltvalidation) - [getApplicativeValidation](#getapplicativevalidation) - [getApplyMonoid](#getapplymonoid) @@ -96,9 +99,6 @@ Added in v2.0.0 - [getValidationMonoid](#getvalidationmonoid) - [getValidationSemigroup](#getvalidationsemigroup) - [getWitherable](#getwitherable) - - [monadEither](#monadeither) - - [monadThrowEither](#monadthroweither) - - [traversableEither](#traversableeither) - [model](#model) - [Either (type alias)](#either-type-alias) - [Left (interface)](#left-interface) @@ -636,113 +636,143 @@ Added in v2.0.0 # instances -## URI +## Alt **Signature** ```ts -export declare const URI: 'Either' +export declare const Alt: Alt2<'Either'> ``` -Added in v2.0.0 +Added in v2.7.0 -## URI (type alias) +## Applicative **Signature** ```ts -export type URI = typeof URI +export declare const Applicative: Applicative2<'Either'> ``` -Added in v2.0.0 +Added in v2.7.0 -## altEither +## Bifunctor **Signature** ```ts -export declare const altEither: Alt2<'Either'> +export declare const Bifunctor: Bifunctor2<'Either'> ``` Added in v2.7.0 -## applicativeEither +## ChainRec **Signature** ```ts -export declare const applicativeEither: Applicative2<'Either'> +export declare const ChainRec: ChainRec2<'Either'> ``` Added in v2.7.0 -## bifunctorEither +## Extend **Signature** ```ts -export declare const bifunctorEither: Bifunctor2<'Either'> +export declare const Extend: Extend2<'Either'> ``` Added in v2.7.0 -## chainRecEither +## Foldable **Signature** ```ts -export declare const chainRecEither: ChainRec2<'Either'> +export declare const Foldable: Foldable2<'Either'> ``` Added in v2.7.0 -## either +## Functor **Signature** ```ts -export declare const either: Monad2<'Either'> & - Foldable2<'Either'> & - Traversable2<'Either'> & - Bifunctor2<'Either'> & - Alt2<'Either'> & - Extend2<'Either'> & - ChainRec2<'Either'> & - MonadThrow2<'Either'> +export declare const Functor: Functor2<'Either'> ``` -Added in v2.0.0 +Added in v2.7.0 -## extendEither +## Monad **Signature** ```ts -export declare const extendEither: Extend2<'Either'> +export declare const Monad: Monad2<'Either'> ``` Added in v2.7.0 -## foldableEither +## MonadThrow **Signature** ```ts -export declare const foldableEither: Foldable2<'Either'> +export declare const MonadThrow: MonadThrow2<'Either'> ``` Added in v2.7.0 -## functorEither +## Traversable **Signature** ```ts -export declare const functorEither: Functor2<'Either'> +export declare const Traversable: Traversable2<'Either'> ``` Added in v2.7.0 +## URI + +**Signature** + +```ts +export declare const URI: 'Either' +``` + +Added in v2.0.0 + +## URI (type alias) + +**Signature** + +```ts +export type URI = typeof URI +``` + +Added in v2.0.0 + +## either + +**Signature** + +```ts +export declare const either: Monad2<'Either'> & + Foldable2<'Either'> & + Traversable2<'Either'> & + Bifunctor2<'Either'> & + Alt2<'Either'> & + Extend2<'Either'> & + ChainRec2<'Either'> & + MonadThrow2<'Either'> +``` + +Added in v2.0.0 + ## getAltValidation **Signature** @@ -896,36 +926,6 @@ export declare function getWitherable(M: Monoid): Witherable2C Added in v2.0.0 -## monadEither - -**Signature** - -```ts -export declare const monadEither: Monad2<'Either'> -``` - -Added in v2.7.0 - -## monadThrowEither - -**Signature** - -```ts -export declare const monadThrowEither: MonadThrow2<'Either'> -``` - -Added in v2.7.0 - -## traversableEither - -**Signature** - -```ts -export declare const traversableEither: Traversable2<'Either'> -``` - -Added in v2.7.0 - # model ## Either (type alias) diff --git a/docs/modules/Eq.ts.md b/docs/modules/Eq.ts.md index 26e7d8ebc..62605279d 100644 --- a/docs/modules/Eq.ts.md +++ b/docs/modules/Eq.ts.md @@ -25,9 +25,9 @@ Added in v2.0.0 - [constructors](#constructors) - [fromEquals](#fromequals) - [instances](#instances) + - [Contravariant](#contravariant-1) - [URI](#uri) - [URI (type alias)](#uri-type-alias) - - [contravariantEq](#contravarianteq) - [eq](#eq) - [eqBoolean](#eqboolean) - [eqDate](#eqdate) @@ -70,35 +70,35 @@ Added in v2.0.0 # instances -## URI +## Contravariant **Signature** ```ts -export declare const URI: 'Eq' +export declare const Contravariant: Contravariant1<'Eq'> ``` -Added in v2.0.0 +Added in v2.7.0 -## URI (type alias) +## URI **Signature** ```ts -export type URI = typeof URI +export declare const URI: 'Eq' ``` Added in v2.0.0 -## contravariantEq +## URI (type alias) **Signature** ```ts -export declare const contravariantEq: Contravariant1<'Eq'> +export type URI = typeof URI ``` -Added in v2.7.0 +Added in v2.0.0 ## eq diff --git a/docs/modules/IO.ts.md b/docs/modules/IO.ts.md index 5c9b538cc..20a662181 100644 --- a/docs/modules/IO.ts.md +++ b/docs/modules/IO.ts.md @@ -37,16 +37,16 @@ Added in v2.0.0 - [MonadIO](#monadio) - [fromIO](#fromio) - [instances](#instances) + - [Applicative](#applicative-1) + - [ChainRec](#chainrec) + - [Functor](#functor-1) + - [Monad](#monad-1) + - [MonadIO](#monadio-1) - [URI](#uri) - [URI (type alias)](#uri-type-alias) - - [applicativeIO](#applicativeio) - - [chainRecIO](#chainrecio) - - [functorIO](#functorio) - [getMonoid](#getmonoid) - [getSemigroup](#getsemigroup) - [io](#io) - - [monadIO](#monadio) - - [monadIOIO](#monadioio) - [model](#model) - [IO (interface)](#io-interface) @@ -166,105 +166,105 @@ Added in v2.7.0 # instances -## URI +## Applicative **Signature** ```ts -export declare const URI: 'IO' +export declare const Applicative: Applicative1<'IO'> ``` -Added in v2.0.0 +Added in v2.7.0 -## URI (type alias) +## ChainRec **Signature** ```ts -export type URI = typeof URI +export declare const ChainRec: ChainRec1<'IO'> ``` -Added in v2.0.0 +Added in v2.7.0 -## applicativeIO +## Functor **Signature** ```ts -export declare const applicativeIO: Applicative1<'IO'> +export declare const Functor: Functor1<'IO'> ``` Added in v2.7.0 -## chainRecIO +## Monad **Signature** ```ts -export declare const chainRecIO: ChainRec1<'IO'> +export declare const Monad: Monad1<'IO'> ``` Added in v2.7.0 -## functorIO +## MonadIO **Signature** ```ts -export declare const functorIO: Functor1<'IO'> +export declare const MonadIO: MonadIO1<'IO'> ``` Added in v2.7.0 -## getMonoid +## URI **Signature** ```ts -export declare function getMonoid(M: Monoid): Monoid> +export declare const URI: 'IO' ``` Added in v2.0.0 -## getSemigroup +## URI (type alias) **Signature** ```ts -export declare function getSemigroup(S: Semigroup): Semigroup> +export type URI = typeof URI ``` Added in v2.0.0 -## io +## getMonoid **Signature** ```ts -export declare const io: Monad1<'IO'> & MonadIO1<'IO'> & ChainRec1<'IO'> +export declare function getMonoid(M: Monoid): Monoid> ``` Added in v2.0.0 -## monadIO +## getSemigroup **Signature** ```ts -export declare const monadIO: Monad1<'IO'> +export declare function getSemigroup(S: Semigroup): Semigroup> ``` -Added in v2.7.0 +Added in v2.0.0 -## monadIOIO +## io **Signature** ```ts -export declare const monadIOIO: MonadIO1<'IO'> +export declare const io: Monad1<'IO'> & MonadIO1<'IO'> & ChainRec1<'IO'> ``` -Added in v2.7.0 +Added in v2.0.0 # model diff --git a/docs/modules/IOEither.ts.md b/docs/modules/IOEither.ts.md index 8b1759515..dfba3b126 100644 --- a/docs/modules/IOEither.ts.md +++ b/docs/modules/IOEither.ts.md @@ -56,12 +56,15 @@ Added in v2.0.0 - [getOrElse](#getorelse) - [getOrElseW](#getorelsew) - [instances](#instances) + - [Alt](#alt-1) + - [Applicative](#applicative) + - [Bifunctor](#bifunctor-1) + - [Functor](#functor-1) + - [Monad](#monad-1) + - [MonadIO](#monadio-1) + - [MonadThrow](#monadthrow-1) - [URI](#uri) - [URI (type alias)](#uri-type-alias) - - [altIOEither](#altioeither) - - [applicativeIOEither](#applicativeioeither) - - [bifunctorIOEither](#bifunctorioeither) - - [functorIOEither](#functorioeither) - [getAltIOValidation](#getaltiovalidation) - [getApplicativeIOValidation](#getapplicativeiovalidation) - [getApplyMonoid](#getapplymonoid) @@ -70,9 +73,6 @@ Added in v2.0.0 - [getIOValidation](#getiovalidation) - [getSemigroup](#getsemigroup) - [ioEither](#ioeither) - - [monadIOEither](#monadioeither) - - [monadIOIOEither](#monadioioeither) - - [monadThrowIOEither](#monadthrowioeither) - [model](#model) - [IOEither (interface)](#ioeither-interface) - [utils](#utils) @@ -444,66 +444,96 @@ Added in v2.6.0 # instances -## URI +## Alt **Signature** ```ts -export declare const URI: 'IOEither' +export declare const Alt: Alt2<'IOEither'> ``` -Added in v2.0.0 +Added in v2.7.0 -## URI (type alias) +## Applicative **Signature** ```ts -export type URI = typeof URI +export declare const Applicative: Applicative2<'IOEither'> ``` -Added in v2.0.0 +Added in v2.7.0 + +## Bifunctor + +**Signature** + +```ts +export declare const Bifunctor: Bifunctor2<'IOEither'> +``` + +Added in v2.7.0 -## altIOEither +## Functor **Signature** ```ts -export declare const altIOEither: Alt2<'IOEither'> +export declare const Functor: Functor2<'IOEither'> ``` Added in v2.7.0 -## applicativeIOEither +## Monad **Signature** ```ts -export declare const applicativeIOEither: Applicative2<'IOEither'> +export declare const Monad: Monad2<'IOEither'> ``` Added in v2.7.0 -## bifunctorIOEither +## MonadIO **Signature** ```ts -export declare const bifunctorIOEither: Bifunctor2<'IOEither'> +export declare const MonadIO: MonadIO2<'IOEither'> ``` Added in v2.7.0 -## functorIOEither +## MonadThrow **Signature** ```ts -export declare const functorIOEither: Functor2<'IOEither'> +export declare const MonadThrow: MonadThrow2<'IOEither'> ``` Added in v2.7.0 +## URI + +**Signature** + +```ts +export declare const URI: 'IOEither' +``` + +Added in v2.0.0 + +## URI (type alias) + +**Signature** + +```ts +export type URI = typeof URI +``` + +Added in v2.0.0 + ## getAltIOValidation **Signature** @@ -596,36 +626,6 @@ export declare const ioEither: Monad2<'IOEither'> & Added in v2.0.0 -## monadIOEither - -**Signature** - -```ts -export declare const monadIOEither: Monad2<'IOEither'> -``` - -Added in v2.7.0 - -## monadIOIOEither - -**Signature** - -```ts -export declare const monadIOIOEither: MonadIO2<'IOEither'> -``` - -Added in v2.7.0 - -## monadThrowIOEither - -**Signature** - -```ts -export declare const monadThrowIOEither: MonadThrow2<'IOEither'> -``` - -Added in v2.7.0 - # model ## IOEither (interface) diff --git a/docs/modules/Identity.ts.md b/docs/modules/Identity.ts.md index 71584fc4e..1eb794500 100644 --- a/docs/modules/Identity.ts.md +++ b/docs/modules/Identity.ts.md @@ -36,19 +36,19 @@ Added in v2.0.0 - [chainFirst](#chainfirst) - [flatten](#flatten) - [instances](#instances) + - [Alt](#alt-1) + - [Applicative](#applicative-1) + - [ChainRec](#chainrec) + - [Comonad](#comonad) + - [Foldable](#foldable-1) + - [Functor](#functor-1) + - [Monad](#monad-1) + - [Traversable](#traversable) - [URI](#uri) - [URI (type alias)](#uri-type-alias) - - [altIdentity](#altidentity) - - [applicativeIdentity](#applicativeidentity) - - [chainRecIdentity](#chainrecidentity) - - [comonadIdentity](#comonadidentity) - - [foldableIdentity](#foldableidentity) - - [functorIdentity](#functoridentity) - [getEq](#geteq) - [getShow](#getshow) - - [monadIdentity](#monadidentity) - - [traversableIdentity](#traversableidentity) - - [~~identity~~](#identity) + - [identity](#identity) - [model](#model) - [Identity (type alias)](#identity-type-alias) - [utils](#utils) @@ -242,127 +242,127 @@ Added in v2.0.0 # instances -## URI +## Alt **Signature** ```ts -export declare const URI: 'Identity' +export declare const Alt: Alt1<'Identity'> ``` -Added in v2.0.0 +Added in v2.7.0 -## URI (type alias) +## Applicative **Signature** ```ts -export type URI = typeof URI +export declare const Applicative: Applicative1<'Identity'> ``` -Added in v2.0.0 +Added in v2.7.0 -## altIdentity +## ChainRec **Signature** ```ts -export declare const altIdentity: Alt1<'Identity'> +export declare const ChainRec: ChainRec1<'Identity'> ``` Added in v2.7.0 -## applicativeIdentity +## Comonad **Signature** ```ts -export declare const applicativeIdentity: Applicative1<'Identity'> +export declare const Comonad: Comonad1<'Identity'> ``` Added in v2.7.0 -## chainRecIdentity +## Foldable **Signature** ```ts -export declare const chainRecIdentity: ChainRec1<'Identity'> +export declare const Foldable: Foldable1<'Identity'> ``` Added in v2.7.0 -## comonadIdentity +## Functor **Signature** ```ts -export declare const comonadIdentity: Comonad1<'Identity'> +export declare const Functor: Functor1<'Identity'> ``` Added in v2.7.0 -## foldableIdentity +## Monad **Signature** ```ts -export declare const foldableIdentity: Foldable1<'Identity'> +export declare const Monad: Monad1<'Identity'> ``` Added in v2.7.0 -## functorIdentity +## Traversable **Signature** ```ts -export declare const functorIdentity: Functor1<'Identity'> +export declare const Traversable: Traversable1<'Identity'> ``` Added in v2.7.0 -## getEq +## URI **Signature** ```ts -export declare const getEq: (E: Eq) => Eq +export declare const URI: 'Identity' ``` Added in v2.0.0 -## getShow +## URI (type alias) **Signature** ```ts -export declare const getShow: (S: Show) => Show +export type URI = typeof URI ``` Added in v2.0.0 -## monadIdentity +## getEq **Signature** ```ts -export declare const monadIdentity: Monad1<'Identity'> +export declare const getEq: (E: Eq) => Eq ``` -Added in v2.7.0 +Added in v2.0.0 -## traversableIdentity +## getShow **Signature** ```ts -export declare const traversableIdentity: Traversable1<'Identity'> +export declare const getShow: (S: Show) => Show ``` -Added in v2.7.0 +Added in v2.0.0 -## ~~identity~~ +## identity **Signature** diff --git a/docs/modules/Map.ts.md b/docs/modules/Map.ts.md index 591883138..e56b6507f 100644 --- a/docs/modules/Map.ts.md +++ b/docs/modules/Map.ts.md @@ -28,11 +28,11 @@ Added in v2.0.0 - [constructors](#constructors) - [fromFoldable](#fromfoldable) - [instances](#instances) + - [Compactable](#compactable-1) + - [Filterable](#filterable-1) + - [Functor](#functor-1) - [URI](#uri) - [URI (type alias)](#uri-type-alias) - - [compactableMap](#compactablemap) - - [filterableMap](#filterablemap) - - [functorMap](#functormap) - [getEq](#geteq) - [getFilterableWithIndex](#getfilterablewithindex) - [getMonoid](#getmonoid) @@ -205,55 +205,55 @@ Added in v2.0.0 # instances -## URI +## Compactable **Signature** ```ts -export declare const URI: 'Map' +export declare const Compactable: Compactable2<'Map'> ``` -Added in v2.0.0 +Added in v2.7.0 -## URI (type alias) +## Filterable **Signature** ```ts -export type URI = typeof URI +export declare const Filterable: Filterable2<'Map'> ``` -Added in v2.0.0 +Added in v2.7.0 -## compactableMap +## Functor **Signature** ```ts -export declare const compactableMap: Compactable2<'Map'> +export declare const Functor: Functor2<'Map'> ``` Added in v2.7.0 -## filterableMap +## URI **Signature** ```ts -export declare const filterableMap: Filterable2<'Map'> +export declare const URI: 'Map' ``` -Added in v2.7.0 +Added in v2.0.0 -## functorMap +## URI (type alias) **Signature** ```ts -export declare const functorMap: Functor2<'Map'> +export type URI = typeof URI ``` -Added in v2.7.0 +Added in v2.0.0 ## getEq diff --git a/docs/modules/NonEmptyArray.ts.md b/docs/modules/NonEmptyArray.ts.md index 939f017b1..713a872f3 100644 --- a/docs/modules/NonEmptyArray.ts.md +++ b/docs/modules/NonEmptyArray.ts.md @@ -57,22 +57,22 @@ Added in v2.0.0 - [groupBy](#groupby) - [snoc](#snoc) - [instances](#instances) + - [Alt](#alt-1) + - [Applicative](#applicative-1) + - [Comonad](#comonad) + - [Foldable](#foldable-1) + - [FoldableWithIndex](#foldablewithindex-1) + - [Functor](#functor-1) + - [FunctorWithIndex](#functorwithindex-1) + - [Monad](#monad-1) + - [Traversable](#traversable) + - [TraversableWithIndex](#traversablewithindex) - [URI](#uri) - [URI (type alias)](#uri-type-alias) - - [altNonEmptyArray](#altnonemptyarray) - - [applicativeNonEmptyArray](#applicativenonemptyarray) - - [comonadNonEmptyArray](#comonadnonemptyarray) - - [foldableNonEmptyArray](#foldablenonemptyarray) - - [foldableWithIndexNonEmptyArray](#foldablewithindexnonemptyarray) - - [functorNonEmptyArray](#functornonemptyarray) - - [functorWithIndexNonEmptyArray](#functorwithindexnonemptyarray) - [getEq](#geteq) - [getSemigroup](#getsemigroup) - [getShow](#getshow) - - [monadNonEmptyArray](#monadnonemptyarray) - [nonEmptyArray](#nonemptyarray) - - [traversableNonEmptyArray](#traversablenonemptyarray) - - [traversableWithIndexNonEmptyArray](#traversablewithindexnonemptyarray) - [model](#model) - [NonEmptyArray (interface)](#nonemptyarray-interface) - [utils](#utils) @@ -522,96 +522,126 @@ Added in v2.0.0 # instances -## URI +## Alt **Signature** ```ts -export declare const URI: 'NonEmptyArray' +export declare const Alt: Alt1<'NonEmptyArray'> ``` -Added in v2.0.0 +Added in v2.7.0 -## URI (type alias) +## Applicative **Signature** ```ts -export type URI = typeof URI +export declare const Applicative: Applicative1<'NonEmptyArray'> ``` -Added in v2.0.0 +Added in v2.7.0 + +## Comonad + +**Signature** + +```ts +export declare const Comonad: Comonad1<'NonEmptyArray'> +``` + +Added in v2.7.0 -## altNonEmptyArray +## Foldable **Signature** ```ts -export declare const altNonEmptyArray: Alt1<'NonEmptyArray'> +export declare const Foldable: Foldable1<'NonEmptyArray'> ``` Added in v2.7.0 -## applicativeNonEmptyArray +## FoldableWithIndex **Signature** ```ts -export declare const applicativeNonEmptyArray: Applicative1<'NonEmptyArray'> +export declare const FoldableWithIndex: FoldableWithIndex1<'NonEmptyArray', number> ``` Added in v2.7.0 -## comonadNonEmptyArray +## Functor **Signature** ```ts -export declare const comonadNonEmptyArray: Comonad1<'NonEmptyArray'> +export declare const Functor: Functor1<'NonEmptyArray'> ``` Added in v2.7.0 -## foldableNonEmptyArray +## FunctorWithIndex **Signature** ```ts -export declare const foldableNonEmptyArray: Foldable1<'NonEmptyArray'> +export declare const FunctorWithIndex: FunctorWithIndex1<'NonEmptyArray', number> ``` Added in v2.7.0 -## foldableWithIndexNonEmptyArray +## Monad **Signature** ```ts -export declare const foldableWithIndexNonEmptyArray: FoldableWithIndex1<'NonEmptyArray', number> +export declare const Monad: Monad1<'NonEmptyArray'> ``` Added in v2.7.0 -## functorNonEmptyArray +## Traversable **Signature** ```ts -export declare const functorNonEmptyArray: Functor1<'NonEmptyArray'> +export declare const Traversable: Traversable1<'NonEmptyArray'> ``` Added in v2.7.0 -## functorWithIndexNonEmptyArray +## TraversableWithIndex **Signature** ```ts -export declare const functorWithIndexNonEmptyArray: FunctorWithIndex1<'NonEmptyArray', number> +export declare const TraversableWithIndex: TraversableWithIndex1<'NonEmptyArray', number> ``` Added in v2.7.0 +## URI + +**Signature** + +```ts +export declare const URI: 'NonEmptyArray' +``` + +Added in v2.0.0 + +## URI (type alias) + +**Signature** + +```ts +export type URI = typeof URI +``` + +Added in v2.0.0 + ## getEq **Signature** @@ -655,16 +685,6 @@ export declare const getShow: (S: Show) => Show> Added in v2.0.0 -## monadNonEmptyArray - -**Signature** - -```ts -export declare const monadNonEmptyArray: Monad1<'NonEmptyArray'> -``` - -Added in v2.7.0 - ## nonEmptyArray **Signature** @@ -680,26 +700,6 @@ export declare const nonEmptyArray: Monad1<'NonEmptyArray'> & Added in v2.0.0 -## traversableNonEmptyArray - -**Signature** - -```ts -export declare const traversableNonEmptyArray: Traversable1<'NonEmptyArray'> -``` - -Added in v2.7.0 - -## traversableWithIndexNonEmptyArray - -**Signature** - -```ts -export declare const traversableWithIndexNonEmptyArray: TraversableWithIndex1<'NonEmptyArray', number> -``` - -Added in v2.7.0 - # model ## NonEmptyArray (interface) diff --git a/docs/modules/Option.ts.md b/docs/modules/Option.ts.md index 273653cf1..902d8ed21 100644 --- a/docs/modules/Option.ts.md +++ b/docs/modules/Option.ts.md @@ -83,16 +83,20 @@ Added in v2.0.0 - [isNone](#isnone) - [isSome](#issome) - [instances](#instances) + - [Alt](#alt-1) + - [Alternative](#alternative-1) + - [Applicative](#applicative-1) + - [Compactable](#compactable-1) + - [Extend](#extend-1) + - [Filterable](#filterable-1) + - [Foldable](#foldable-1) + - [Functor](#functor-1) + - [Monad](#monad-1) + - [MonadThrow](#monadthrow-1) + - [Traversable](#traversable-1) - [URI](#uri) - [URI (type alias)](#uri-type-alias) - - [altOption](#altoption) - - [alternativeOption](#alternativeoption) - - [applicativeOption](#applicativeoption) - - [compactableOption](#compactableoption) - - [extendOption](#extendoption) - - [filterableOption](#filterableoption) - - [foldableOption](#foldableoption) - - [functorOption](#functoroption) + - [Witherable](#witherable) - [getApplyMonoid](#getapplymonoid) - [getApplySemigroup](#getapplysemigroup) - [getEq](#geteq) @@ -101,11 +105,7 @@ Added in v2.0.0 - [getMonoid](#getmonoid) - [getOrd](#getord) - [getShow](#getshow) - - [monadOption](#monadoption) - - [monadThrowOption](#monadthrowoption) - [option](#option) - - [traversableOption](#traversableoption) - - [witherableOption](#witherableoption) - [model](#model) - [None (interface)](#none-interface) - [Option (type alias)](#option-type-alias) @@ -817,102 +817,142 @@ Added in v2.0.0 # instances -## URI +## Alt **Signature** ```ts -export declare const URI: 'Option' +export declare const Alt: Alt1<'Option'> ``` -Added in v2.0.0 +Added in v2.7.0 -## URI (type alias) +## Alternative **Signature** ```ts -export type URI = typeof URI +export declare const Alternative: Alternative1<'Option'> ``` -Added in v2.0.0 +Added in v2.7.0 + +## Applicative + +**Signature** + +```ts +export declare const Applicative: Applicative1<'Option'> +``` + +Added in v2.7.0 + +## Compactable + +**Signature** -## altOption +```ts +export declare const Compactable: Compactable1<'Option'> +``` + +Added in v2.7.0 + +## Extend **Signature** ```ts -export declare const altOption: Alt1<'Option'> +export declare const Extend: Extend1<'Option'> ``` Added in v2.7.0 -## alternativeOption +## Filterable **Signature** ```ts -export declare const alternativeOption: Alternative1<'Option'> +export declare const Filterable: Filterable1<'Option'> ``` Added in v2.7.0 -## applicativeOption +## Foldable **Signature** ```ts -export declare const applicativeOption: Applicative1<'Option'> +export declare const Foldable: Foldable1<'Option'> ``` Added in v2.7.0 -## compactableOption +## Functor **Signature** ```ts -export declare const compactableOption: Compactable1<'Option'> +export declare const Functor: Functor1<'Option'> ``` Added in v2.7.0 -## extendOption +## Monad **Signature** ```ts -export declare const extendOption: Extend1<'Option'> +export declare const Monad: Monad1<'Option'> ``` Added in v2.7.0 -## filterableOption +## MonadThrow **Signature** ```ts -export declare const filterableOption: Filterable1<'Option'> +export declare const MonadThrow: MonadThrow1<'Option'> ``` Added in v2.7.0 -## foldableOption +## Traversable **Signature** ```ts -export declare const foldableOption: Foldable1<'Option'> +export declare const Traversable: Traversable1<'Option'> ``` Added in v2.7.0 -## functorOption +## URI + +**Signature** + +```ts +export declare const URI: 'Option' +``` + +Added in v2.0.0 + +## URI (type alias) + +**Signature** + +```ts +export type URI = typeof URI +``` + +Added in v2.0.0 + +## Witherable **Signature** ```ts -export declare const functorOption: Functor1<'Option'> +export declare const Witherable: Witherable1<'Option'> ``` Added in v2.7.0 @@ -1118,26 +1158,6 @@ export declare function getShow(S: Show): Show> Added in v2.0.0 -## monadOption - -**Signature** - -```ts -export declare const monadOption: Monad1<'Option'> -``` - -Added in v2.7.0 - -## monadThrowOption - -**Signature** - -```ts -export declare const monadThrowOption: MonadThrow1<'Option'> -``` - -Added in v2.7.0 - ## option **Signature** @@ -1153,26 +1173,6 @@ export declare const option: Monad1<'Option'> & Added in v2.0.0 -## traversableOption - -**Signature** - -```ts -export declare const traversableOption: Traversable1<'Option'> -``` - -Added in v2.7.0 - -## witherableOption - -**Signature** - -```ts -export declare const witherableOption: Witherable1<'Option'> -``` - -Added in v2.7.0 - # model ## None (interface) diff --git a/docs/modules/Ord.ts.md b/docs/modules/Ord.ts.md index 80f6b13f0..61e8fee9c 100644 --- a/docs/modules/Ord.ts.md +++ b/docs/modules/Ord.ts.md @@ -27,17 +27,17 @@ Added in v2.0.0 - [constructors](#constructors) - [fromCompare](#fromcompare) - [instances](#instances) + - [Contravariant](#contravariant-1) - [URI](#uri) - [URI (type alias)](#uri-type-alias) - - [contravariantOrd](#contravariantord) - [getMonoid](#getmonoid) - [getTupleOrd](#gettupleord) + - [ord](#ord) - [ordBoolean](#ordboolean) - [ordDate](#orddate) - [ordNumber](#ordnumber) - [ordString](#ordstring) - [~~getSemigroup~~](#getsemigroup) - - [~~ord~~](#ord) - [type classes](#type-classes) - [Ord (interface)](#ord-interface) - [utils](#utils) @@ -90,35 +90,35 @@ Added in v2.0.0 # instances -## URI +## Contravariant **Signature** ```ts -export declare const URI: 'Ord' +export declare const Contravariant: Contravariant1<'Ord'> ``` -Added in v2.0.0 +Added in v2.7.0 -## URI (type alias) +## URI **Signature** ```ts -export type URI = typeof URI +export declare const URI: 'Ord' ``` Added in v2.0.0 -## contravariantOrd +## URI (type alias) **Signature** ```ts -export declare const contravariantOrd: Contravariant1<'Ord'> +export type URI = typeof URI ``` -Added in v2.7.0 +Added in v2.0.0 ## getMonoid @@ -218,6 +218,16 @@ assert.strictEqual(O.compare(['a', 1, true], ['a', 1, false]), 1) Added in v2.0.0 +## ord + +**Signature** + +```ts +export declare const ord: Contravariant1<'Ord'> +``` + +Added in v2.0.0 + ## ordBoolean **Signature** @@ -270,16 +280,6 @@ export declare function getSemigroup(): Semigroup> Added in v2.0.0 -## ~~ord~~ - -**Signature** - -```ts -export declare const ord: Contravariant1<'Ord'> -``` - -Added in v2.0.0 - # type classes ## Ord (interface) diff --git a/docs/modules/Reader.ts.md b/docs/modules/Reader.ts.md index c792bde71..62f74a921 100644 --- a/docs/modules/Reader.ts.md +++ b/docs/modules/Reader.ts.md @@ -37,16 +37,16 @@ Added in v2.0.0 - [ask](#ask) - [asks](#asks) - [instances](#instances) + - [Applicative](#applicative-1) + - [Category](#category-1) + - [Functor](#functor-1) + - [Monad](#monad-1) + - [Profunctor](#profunctor-1) - [URI](#uri) - [URI (type alias)](#uri-type-alias) - - [applicativeReader](#applicativereader) - - [categoryReader](#categoryreader) - - [functorReader](#functorreader) - [getMonoid](#getmonoid) - [getSemigroup](#getsemigroup) - - [monadReader](#monadreader) - - [profunctorReader](#profunctorreader) - - [~~reader~~](#reader) + - [reader](#reader) - [model](#model) - [Reader (interface)](#reader-interface) @@ -245,97 +245,97 @@ Added in v2.0.0 # instances -## URI +## Applicative **Signature** ```ts -export declare const URI: 'Reader' +export declare const Applicative: Applicative2<'Reader'> ``` -Added in v2.0.0 +Added in v2.7.0 -## URI (type alias) +## Category **Signature** ```ts -export type URI = typeof URI +export declare const Category: Category2<'Reader'> ``` -Added in v2.0.0 +Added in v2.7.0 -## applicativeReader +## Functor **Signature** ```ts -export declare const applicativeReader: Applicative2<'Reader'> +export declare const Functor: Functor2<'Reader'> ``` Added in v2.7.0 -## categoryReader +## Monad **Signature** ```ts -export declare const categoryReader: Category2<'Reader'> +export declare const Monad: Monad2<'Reader'> ``` Added in v2.7.0 -## functorReader +## Profunctor **Signature** ```ts -export declare const functorReader: Functor2<'Reader'> +export declare const Profunctor: Profunctor2<'Reader'> ``` Added in v2.7.0 -## getMonoid +## URI **Signature** ```ts -export declare function getMonoid(M: Monoid): Monoid> +export declare const URI: 'Reader' ``` Added in v2.0.0 -## getSemigroup +## URI (type alias) **Signature** ```ts -export declare function getSemigroup(S: Semigroup): Semigroup> +export type URI = typeof URI ``` Added in v2.0.0 -## monadReader +## getMonoid **Signature** ```ts -export declare const monadReader: Monad2<'Reader'> +export declare function getMonoid(M: Monoid): Monoid> ``` -Added in v2.7.0 +Added in v2.0.0 -## profunctorReader +## getSemigroup **Signature** ```ts -export declare const profunctorReader: Profunctor2<'Reader'> +export declare function getSemigroup(S: Semigroup): Semigroup> ``` -Added in v2.7.0 +Added in v2.0.0 -## ~~reader~~ +## reader **Signature** diff --git a/docs/modules/ReaderEither.ts.md b/docs/modules/ReaderEither.ts.md index 11b1b7906..423b43a3d 100644 --- a/docs/modules/ReaderEither.ts.md +++ b/docs/modules/ReaderEither.ts.md @@ -53,20 +53,20 @@ Added in v2.0.0 - [getOrElse](#getorelse) - [getOrElseW](#getorelsew) - [instances](#instances) + - [Alt](#alt-1) + - [Applicative](#applicative) + - [Bifunctor](#bifunctor-1) + - [Functor](#functor-1) + - [Monad](#monad-1) + - [MonadThrow](#monadthrow-1) - [URI](#uri) - [URI (type alias)](#uri-type-alias) - - [altReaderEither](#altreadereither) - - [applicativeReaderEither](#applicativereadereither) - - [bifunctorReaderEither](#bifunctorreadereither) - - [functorReaderEither](#functorreadereither) - [getAltReaderValidation](#getaltreadervalidation) - [getApplicativeReaderValidation](#getapplicativereadervalidation) - [getApplyMonoid](#getapplymonoid) - [getApplySemigroup](#getapplysemigroup) - [getReaderValidation](#getreadervalidation) - [getSemigroup](#getsemigroup) - - [monadReaderEither](#monadreadereither) - - [monadThrowReaderEither](#monadthrowreadereither) - [readerEither](#readereither) - [model](#model) - [ReaderEither (interface)](#readereither-interface) @@ -467,66 +467,86 @@ Added in v2.6.0 # instances -## URI +## Alt **Signature** ```ts -export declare const URI: 'ReaderEither' +export declare const Alt: Alt3<'ReaderEither'> ``` -Added in v2.0.0 +Added in v2.7.0 -## URI (type alias) +## Applicative **Signature** ```ts -export type URI = typeof URI +export declare const Applicative: Applicative3<'ReaderEither'> ``` -Added in v2.0.0 +Added in v2.7.0 -## altReaderEither +## Bifunctor **Signature** ```ts -export declare const altReaderEither: Alt3<'ReaderEither'> +export declare const Bifunctor: Bifunctor3<'ReaderEither'> ``` Added in v2.7.0 -## applicativeReaderEither +## Functor **Signature** ```ts -export declare const applicativeReaderEither: Applicative3<'ReaderEither'> +export declare const Functor: Functor3<'ReaderEither'> ``` Added in v2.7.0 -## bifunctorReaderEither +## Monad **Signature** ```ts -export declare const bifunctorReaderEither: Bifunctor3<'ReaderEither'> +export declare const Monad: Monad3<'ReaderEither'> ``` Added in v2.7.0 -## functorReaderEither +## MonadThrow **Signature** ```ts -export declare const functorReaderEither: Functor3<'ReaderEither'> +export declare const MonadThrow: MonadThrow3<'ReaderEither'> ``` Added in v2.7.0 +## URI + +**Signature** + +```ts +export declare const URI: 'ReaderEither' +``` + +Added in v2.0.0 + +## URI (type alias) + +**Signature** + +```ts +export type URI = typeof URI +``` + +Added in v2.0.0 + ## getAltReaderValidation **Signature** @@ -595,26 +615,6 @@ export declare function getSemigroup(S: Semigroup): Semigroup -``` - -Added in v2.7.0 - -## monadThrowReaderEither - -**Signature** - -```ts -export declare const monadThrowReaderEither: MonadThrow3<'ReaderEither'> -``` - -Added in v2.7.0 - ## readerEither **Signature** diff --git a/docs/modules/ReaderTask.ts.md b/docs/modules/ReaderTask.ts.md index ed7ca0483..8067c7ad8 100644 --- a/docs/modules/ReaderTask.ts.md +++ b/docs/modules/ReaderTask.ts.md @@ -38,11 +38,11 @@ Added in v2.3.0 - [fromReader](#fromreader) - [fromTask](#fromtask) - [instances](#instances) + - [ApplicativePar](#applicativepar) + - [ApplicativeSeq](#applicativeseq) + - [Functor](#functor-1) - [URI](#uri) - [URI (type alias)](#uri-type-alias) - - [applicativeReaderTaskPar](#applicativereadertaskpar) - - [applicativeReaderTaskSeq](#applicativereadertaskseq) - - [functorReaderTask](#functorreadertask) - [getMonoid](#getmonoid) - [getSemigroup](#getsemigroup) - [readerTask](#readertask) @@ -277,55 +277,55 @@ Added in v2.3.0 # instances -## URI +## ApplicativePar **Signature** ```ts -export declare const URI: 'ReaderTask' +export declare const ApplicativePar: Applicative2<'ReaderTask'> ``` -Added in v2.3.0 +Added in v2.7.0 -## URI (type alias) +## ApplicativeSeq **Signature** ```ts -export type URI = typeof URI +export declare const ApplicativeSeq: Applicative2<'ReaderTask'> ``` -Added in v2.3.0 +Added in v2.7.0 -## applicativeReaderTaskPar +## Functor **Signature** ```ts -export declare const applicativeReaderTaskPar: Applicative2<'ReaderTask'> +export declare const Functor: Functor2<'ReaderTask'> ``` Added in v2.7.0 -## applicativeReaderTaskSeq +## URI **Signature** ```ts -export declare const applicativeReaderTaskSeq: Applicative2<'ReaderTask'> +export declare const URI: 'ReaderTask' ``` -Added in v2.7.0 +Added in v2.3.0 -## functorReaderTask +## URI (type alias) **Signature** ```ts -export declare const functorReaderTask: Functor2<'ReaderTask'> +export type URI = typeof URI ``` -Added in v2.7.0 +Added in v2.3.0 ## getMonoid diff --git a/docs/modules/ReaderTaskEither.ts.md b/docs/modules/ReaderTaskEither.ts.md index a6a16294a..9130b88a5 100644 --- a/docs/modules/ReaderTaskEither.ts.md +++ b/docs/modules/ReaderTaskEither.ts.md @@ -74,13 +74,13 @@ Added in v2.0.0 - [getOrElse](#getorelse) - [getOrElseW](#getorelsew) - [instances](#instances) + - [Alt](#alt-1) + - [ApplicativePar](#applicativepar) + - [ApplicativeSeq](#applicativeseq) + - [Bifunctor](#bifunctor-1) + - [Functor](#functor-1) - [URI](#uri) - [URI (type alias)](#uri-type-alias) - - [altReaderTaskEither](#altreadertaskeither) - - [applicativeReaderTaskEitherPar](#applicativereadertaskeitherpar) - - [applicativeReaderTaskEitherSeq](#applicativereadertaskeitherseq) - - [bifunctorReaderTaskEither](#bifunctorreadertaskeither) - - [functorReaderTaskEither](#functorreadertaskeither) - [getAltReaderTaskValidation](#getaltreadertaskvalidation) - [getApplicativeReaderTaskValidation](#getapplicativereadertaskvalidation) - [getApplyMonoid](#getapplymonoid) @@ -700,75 +700,75 @@ Added in v2.6.0 # instances -## URI +## Alt **Signature** ```ts -export declare const URI: 'ReaderTaskEither' +export declare const Alt: Alt3<'ReaderTaskEither'> ``` -Added in v2.0.0 +Added in v2.7.0 -## URI (type alias) +## ApplicativePar **Signature** ```ts -export type URI = typeof URI +export declare const ApplicativePar: Applicative3<'ReaderTaskEither'> ``` -Added in v2.0.0 +Added in v2.7.0 -## altReaderTaskEither +## ApplicativeSeq **Signature** ```ts -export declare const altReaderTaskEither: Alt3<'ReaderTaskEither'> +export declare const ApplicativeSeq: Applicative3<'ReaderTaskEither'> ``` Added in v2.7.0 -## applicativeReaderTaskEitherPar +## Bifunctor **Signature** ```ts -export declare const applicativeReaderTaskEitherPar: Applicative3<'ReaderTaskEither'> +export declare const Bifunctor: Bifunctor3<'ReaderTaskEither'> ``` Added in v2.7.0 -## applicativeReaderTaskEitherSeq +## Functor **Signature** ```ts -export declare const applicativeReaderTaskEitherSeq: Applicative3<'ReaderTaskEither'> +export declare const Functor: Functor3<'ReaderTaskEither'> ``` Added in v2.7.0 -## bifunctorReaderTaskEither +## URI **Signature** ```ts -export declare const bifunctorReaderTaskEither: Bifunctor3<'ReaderTaskEither'> +export declare const URI: 'ReaderTaskEither' ``` -Added in v2.7.0 +Added in v2.0.0 -## functorReaderTaskEither +## URI (type alias) **Signature** ```ts -export declare const functorReaderTaskEither: Functor3<'ReaderTaskEither'> +export type URI = typeof URI ``` -Added in v2.7.0 +Added in v2.0.0 ## getAltReaderTaskValidation diff --git a/docs/modules/ReadonlyArray.ts.md b/docs/modules/ReadonlyArray.ts.md index ce884c31f..8ef7f126c 100644 --- a/docs/modules/ReadonlyArray.ts.md +++ b/docs/modules/ReadonlyArray.ts.md @@ -98,29 +98,29 @@ Added in v2.5.0 - [guards](#guards) - [isNonEmpty](#isnonempty) - [instances](#instances) + - [Alt](#alt-1) + - [Alternative](#alternative-1) + - [Applicative](#applicative-1) + - [Compactable](#compactable-1) + - [Extend](#extend-1) + - [Filterable](#filterable-1) + - [FilterableWithIndex](#filterablewithindex-1) + - [Foldable](#foldable-1) + - [FoldableWithIndex](#foldablewithindex-1) + - [Functor](#functor-1) + - [Monad](#monad-1) + - [Traversable](#traversable-1) + - [TraversableWithIndex](#traversablewithindex-1) - [URI](#uri) - [URI (type alias)](#uri-type-alias) - - [altArray](#altarray) - - [alternativeArray](#alternativearray) - - [applicativeArray](#applicativearray) - - [compactableArray](#compactablearray) - - [extendArray](#extendarray) - - [filterableArray](#filterablearray) - - [filterableWithIndexArray](#filterablewithindexarray) - - [foldableArray](#foldablearray) - - [foldableWithIndexArray](#foldablewithindexarray) + - [Unfoldable](#unfoldable-1) + - [Witherable](#witherable) - [functorArray](#functorarray) - - [functorWithIndexArray](#functorwithindexarray) - [getEq](#geteq) - [getMonoid](#getmonoid) - [getOrd](#getord) - [getShow](#getshow) - - [monadArray](#monadarray) - [readonlyArray](#readonlyarray) - - [traversableArray](#traversablearray) - - [traversableWithIndexArray](#traversablewithindexarray) - - [unfoldableArray](#unfoldablearray) - - [witherableArray](#witherablearray) - [unsafe](#unsafe) - [unsafeDeleteAt](#unsafedeleteat) - [unsafeInsertAt](#unsafeinsertat) @@ -1229,132 +1229,182 @@ Added in v2.5.0 # instances -## URI +## Alt **Signature** ```ts -export declare const URI: 'ReadonlyArray' +export declare const Alt: Alt1<'ReadonlyArray'> ``` -Added in v2.5.0 +Added in v2.7.0 -## URI (type alias) +## Alternative **Signature** ```ts -export type URI = typeof URI +export declare const Alternative: Alternative1<'ReadonlyArray'> ``` -Added in v2.5.0 +Added in v2.7.0 -## altArray +## Applicative **Signature** ```ts -export declare const altArray: Alt1<'ReadonlyArray'> +export declare const Applicative: Applicative1<'ReadonlyArray'> ``` Added in v2.7.0 -## alternativeArray +## Compactable **Signature** ```ts -export declare const alternativeArray: Alternative1<'ReadonlyArray'> +export declare const Compactable: Compactable1<'ReadonlyArray'> ``` Added in v2.7.0 -## applicativeArray +## Extend **Signature** ```ts -export declare const applicativeArray: Applicative1<'ReadonlyArray'> +export declare const Extend: Extend1<'ReadonlyArray'> ``` Added in v2.7.0 -## compactableArray +## Filterable **Signature** ```ts -export declare const compactableArray: Compactable1<'ReadonlyArray'> +export declare const Filterable: Filterable1<'ReadonlyArray'> ``` Added in v2.7.0 -## extendArray +## FilterableWithIndex **Signature** ```ts -export declare const extendArray: Extend1<'ReadonlyArray'> +export declare const FilterableWithIndex: FilterableWithIndex1<'ReadonlyArray', number> ``` Added in v2.7.0 -## filterableArray +## Foldable **Signature** ```ts -export declare const filterableArray: Filterable1<'ReadonlyArray'> +export declare const Foldable: Foldable1<'ReadonlyArray'> ``` Added in v2.7.0 -## filterableWithIndexArray +## FoldableWithIndex **Signature** ```ts -export declare const filterableWithIndexArray: FilterableWithIndex1<'ReadonlyArray', number> +export declare const FoldableWithIndex: FoldableWithIndex1<'ReadonlyArray', number> ``` Added in v2.7.0 -## foldableArray +## Functor **Signature** ```ts -export declare const foldableArray: Foldable1<'ReadonlyArray'> +export declare const Functor: FunctorWithIndex1<'ReadonlyArray', number> ``` Added in v2.7.0 -## foldableWithIndexArray +## Monad **Signature** ```ts -export declare const foldableWithIndexArray: FoldableWithIndex1<'ReadonlyArray', number> +export declare const Monad: Monad1<'ReadonlyArray'> ``` Added in v2.7.0 -## functorArray +## Traversable **Signature** ```ts -export declare const functorArray: Functor1<'ReadonlyArray'> +export declare const Traversable: Traversable1<'ReadonlyArray'> +``` + +Added in v2.7.0 + +## TraversableWithIndex + +**Signature** + +```ts +export declare const TraversableWithIndex: TraversableWithIndex1<'ReadonlyArray', number> +``` + +Added in v2.7.0 + +## URI + +**Signature** + +```ts +export declare const URI: 'ReadonlyArray' +``` + +Added in v2.5.0 + +## URI (type alias) + +**Signature** + +```ts +export type URI = typeof URI +``` + +Added in v2.5.0 + +## Unfoldable + +**Signature** + +```ts +export declare const Unfoldable: Unfoldable1<'ReadonlyArray'> +``` + +Added in v2.7.0 + +## Witherable + +**Signature** + +```ts +export declare const Witherable: Witherable1<'ReadonlyArray'> ``` Added in v2.7.0 -## functorWithIndexArray +## functorArray **Signature** ```ts -export declare const functorWithIndexArray: FunctorWithIndex1<'ReadonlyArray', number> +export declare const functorArray: Functor1<'ReadonlyArray'> ``` Added in v2.7.0 @@ -1442,16 +1492,6 @@ export declare function getShow(S: Show): Show> Added in v2.5.0 -## monadArray - -**Signature** - -```ts -export declare const monadArray: Monad1<'ReadonlyArray'> -``` - -Added in v2.7.0 - ## readonlyArray **Signature** @@ -1470,46 +1510,6 @@ export declare const readonlyArray: FunctorWithIndex1<'ReadonlyArray', number> & Added in v2.5.0 -## traversableArray - -**Signature** - -```ts -export declare const traversableArray: Traversable1<'ReadonlyArray'> -``` - -Added in v2.7.0 - -## traversableWithIndexArray - -**Signature** - -```ts -export declare const traversableWithIndexArray: TraversableWithIndex1<'ReadonlyArray', number> -``` - -Added in v2.7.0 - -## unfoldableArray - -**Signature** - -```ts -export declare const unfoldableArray: Unfoldable1<'ReadonlyArray'> -``` - -Added in v2.7.0 - -## witherableArray - -**Signature** - -```ts -export declare const witherableArray: Witherable1<'ReadonlyArray'> -``` - -Added in v2.7.0 - # unsafe ## unsafeDeleteAt diff --git a/docs/modules/ReadonlyMap.ts.md b/docs/modules/ReadonlyMap.ts.md index e56988bd5..c92295016 100644 --- a/docs/modules/ReadonlyMap.ts.md +++ b/docs/modules/ReadonlyMap.ts.md @@ -34,11 +34,11 @@ Added in v2.5.0 - [toReadonlyArray](#toreadonlyarray) - [toUnfoldable](#tounfoldable) - [instances](#instances) + - [Compactable](#compactable-1) + - [Filterable](#filterable-1) + - [Functor](#functor-1) - [URI](#uri) - [URI (type alias)](#uri-type-alias) - - [compactableMap](#compactablemap) - - [filterableMap](#filterablemap) - - [functorMap](#functormap) - [getEq](#geteq) - [getFilterableWithIndex](#getfilterablewithindex) - [getMonoid](#getmonoid) @@ -281,55 +281,55 @@ Added in v2.5.0 # instances -## URI +## Compactable **Signature** ```ts -export declare const URI: 'ReadonlyMap' +export declare const Compactable: Compactable2<'ReadonlyMap'> ``` -Added in v2.5.0 +Added in v2.7.0 -## URI (type alias) +## Filterable **Signature** ```ts -export type URI = typeof URI +export declare const Filterable: Filterable2<'ReadonlyMap'> ``` -Added in v2.5.0 +Added in v2.7.0 -## compactableMap +## Functor **Signature** ```ts -export declare const compactableMap: Compactable2<'ReadonlyMap'> +export declare const Functor: Functor2<'ReadonlyMap'> ``` Added in v2.7.0 -## filterableMap +## URI **Signature** ```ts -export declare const filterableMap: Filterable2<'ReadonlyMap'> +export declare const URI: 'ReadonlyMap' ``` -Added in v2.7.0 +Added in v2.5.0 -## functorMap +## URI (type alias) **Signature** ```ts -export declare const functorMap: Functor2<'ReadonlyMap'> +export type URI = typeof URI ``` -Added in v2.7.0 +Added in v2.5.0 ## getEq diff --git a/docs/modules/ReadonlyNonEmptyArray.ts.md b/docs/modules/ReadonlyNonEmptyArray.ts.md index 42df8dedc..35d8a5fda 100644 --- a/docs/modules/ReadonlyNonEmptyArray.ts.md +++ b/docs/modules/ReadonlyNonEmptyArray.ts.md @@ -56,22 +56,22 @@ Added in v2.5.0 - [groupBy](#groupby) - [snoc](#snoc) - [instances](#instances) + - [Alt](#alt-1) + - [Applicative](#applicative-1) + - [Comonad](#comonad) + - [Foldable](#foldable-1) + - [FoldableWithIndex](#foldablewithindex-1) + - [Functor](#functor-1) + - [FunctorWithIndex](#functorwithindex-1) + - [Monad](#monad-1) + - [Traversable](#traversable) + - [TraversableWithIndex](#traversablewithindex) - [URI](#uri) - [URI (type alias)](#uri-type-alias) - - [altNonEmptyArray](#altnonemptyarray) - - [applicativeNonEmptyArray](#applicativenonemptyarray) - - [comonadNonEmptyArray](#comonadnonemptyarray) - - [foldableNonEmptyArray](#foldablenonemptyarray) - - [foldableWithIndexNonEmptyArray](#foldablewithindexnonemptyarray) - - [functorNonEmptyArray](#functornonemptyarray) - - [functorWithIndexNonEmptyArray](#functorwithindexnonemptyarray) - [getEq](#geteq) - [getSemigroup](#getsemigroup) - [getShow](#getshow) - - [monadNonEmptyArray](#monadnonemptyarray) - [readonlyNonEmptyArray](#readonlynonemptyarray) - - [traversableNonEmptyArray](#traversablenonemptyarray) - - [traversableWithIndexNonEmptyArray](#traversablewithindexnonemptyarray) - [model](#model) - [ReadonlyNonEmptyArray (type alias)](#readonlynonemptyarray-type-alias) - [utils](#utils) @@ -531,96 +531,126 @@ Added in v2.5.0 # instances -## URI +## Alt **Signature** ```ts -export declare const URI: 'ReadonlyNonEmptyArray' +export declare const Alt: Alt1<'ReadonlyNonEmptyArray'> ``` -Added in v2.5.0 +Added in v2.7.0 -## URI (type alias) +## Applicative **Signature** ```ts -export type URI = typeof URI +export declare const Applicative: Applicative1<'ReadonlyNonEmptyArray'> ``` -Added in v2.5.0 +Added in v2.7.0 + +## Comonad + +**Signature** + +```ts +export declare const Comonad: Comonad1<'ReadonlyNonEmptyArray'> +``` + +Added in v2.7.0 -## altNonEmptyArray +## Foldable **Signature** ```ts -export declare const altNonEmptyArray: Alt1<'ReadonlyNonEmptyArray'> +export declare const Foldable: Foldable1<'ReadonlyNonEmptyArray'> ``` Added in v2.7.0 -## applicativeNonEmptyArray +## FoldableWithIndex **Signature** ```ts -export declare const applicativeNonEmptyArray: Applicative1<'ReadonlyNonEmptyArray'> +export declare const FoldableWithIndex: FoldableWithIndex1<'ReadonlyNonEmptyArray', number> ``` Added in v2.7.0 -## comonadNonEmptyArray +## Functor **Signature** ```ts -export declare const comonadNonEmptyArray: Comonad1<'ReadonlyNonEmptyArray'> +export declare const Functor: Functor1<'ReadonlyNonEmptyArray'> ``` Added in v2.7.0 -## foldableNonEmptyArray +## FunctorWithIndex **Signature** ```ts -export declare const foldableNonEmptyArray: Foldable1<'ReadonlyNonEmptyArray'> +export declare const FunctorWithIndex: FunctorWithIndex1<'ReadonlyNonEmptyArray', number> ``` Added in v2.7.0 -## foldableWithIndexNonEmptyArray +## Monad **Signature** ```ts -export declare const foldableWithIndexNonEmptyArray: FoldableWithIndex1<'ReadonlyNonEmptyArray', number> +export declare const Monad: Monad1<'ReadonlyNonEmptyArray'> ``` Added in v2.7.0 -## functorNonEmptyArray +## Traversable **Signature** ```ts -export declare const functorNonEmptyArray: Functor1<'ReadonlyNonEmptyArray'> +export declare const Traversable: Traversable1<'ReadonlyNonEmptyArray'> ``` Added in v2.7.0 -## functorWithIndexNonEmptyArray +## TraversableWithIndex **Signature** ```ts -export declare const functorWithIndexNonEmptyArray: FunctorWithIndex1<'ReadonlyNonEmptyArray', number> +export declare const TraversableWithIndex: TraversableWithIndex1<'ReadonlyNonEmptyArray', number> ``` Added in v2.7.0 +## URI + +**Signature** + +```ts +export declare const URI: 'ReadonlyNonEmptyArray' +``` + +Added in v2.5.0 + +## URI (type alias) + +**Signature** + +```ts +export type URI = typeof URI +``` + +Added in v2.5.0 + ## getEq **Signature** @@ -664,16 +694,6 @@ export declare const getShow: (S: Show) => Show> Added in v2.5.0 -## monadNonEmptyArray - -**Signature** - -```ts -export declare const monadNonEmptyArray: Monad1<'ReadonlyNonEmptyArray'> -``` - -Added in v2.7.0 - ## readonlyNonEmptyArray **Signature** @@ -689,26 +709,6 @@ export declare const readonlyNonEmptyArray: Monad1<'ReadonlyNonEmptyArray'> & Added in v2.5.0 -## traversableNonEmptyArray - -**Signature** - -```ts -export declare const traversableNonEmptyArray: Traversable1<'ReadonlyNonEmptyArray'> -``` - -Added in v2.7.0 - -## traversableWithIndexNonEmptyArray - -**Signature** - -```ts -export declare const traversableWithIndexNonEmptyArray: TraversableWithIndex1<'ReadonlyNonEmptyArray', number> -``` - -Added in v2.7.0 - # model ## ReadonlyNonEmptyArray (type alias) diff --git a/docs/modules/ReadonlyRecord.ts.md b/docs/modules/ReadonlyRecord.ts.md index 91031a32f..d02db74d4 100644 --- a/docs/modules/ReadonlyRecord.ts.md +++ b/docs/modules/ReadonlyRecord.ts.md @@ -41,22 +41,22 @@ Added in v2.5.0 - [toRecord](#torecord) - [toUnfoldable](#tounfoldable) - [instances](#instances) + - [Compactable](#compactable-1) + - [Filterable](#filterable-1) + - [FilterableWithIndex](#filterablewithindex) + - [Foldable](#foldable-1) + - [FoldableWithIndex](#foldablewithindex) + - [Functor](#functor) + - [FunctorWithIndex](#functorwithindex) + - [Traversable](#traversable) + - [TraversableWithIndex](#traversablewithindex) - [URI](#uri) - [URI (type alias)](#uri-type-alias) - - [compactableRecord](#compactablerecord) - - [filterableRecord](#filterablerecord) - - [filterableWithIndexRecord](#filterablewithindexrecord) - - [foldableRecord](#foldablerecord) - - [foldableWithIndexRecord](#foldablewithindexrecord) - - [functorRecord](#functorrecord) - - [functorWithIndexRecord](#functorwithindexrecord) + - [Witherable](#witherable) - [getEq](#geteq) - [getMonoid](#getmonoid) - [getShow](#getshow) - [readonlyRecord](#readonlyrecord) - - [traversableRecord](#traversablerecord) - - [traversableWithIndexRecord](#traversablewithindexrecord) - - [witherableRecord](#witherablerecord) - [model](#model) - [ReadonlyRecord (type alias)](#readonlyrecord-type-alias) - [utils](#utils) @@ -356,92 +356,122 @@ Added in v2.5.0 # instances -## URI +## Compactable **Signature** ```ts -export declare const URI: 'ReadonlyRecord' +export declare const Compactable: Compactable1<'ReadonlyRecord'> ``` -Added in v2.5.0 +Added in v2.7.0 -## URI (type alias) +## Filterable **Signature** ```ts -export type URI = typeof URI +export declare const Filterable: Filterable1<'ReadonlyRecord'> ``` -Added in v2.5.0 +Added in v2.7.0 + +## FilterableWithIndex + +**Signature** + +```ts +export declare const FilterableWithIndex: FilterableWithIndex1<'ReadonlyRecord', string> +``` + +Added in v2.7.0 -## compactableRecord +## Foldable **Signature** ```ts -export declare const compactableRecord: Compactable1<'ReadonlyRecord'> +export declare const Foldable: Foldable1<'ReadonlyRecord'> ``` Added in v2.7.0 -## filterableRecord +## FoldableWithIndex **Signature** ```ts -export declare const filterableRecord: Filterable1<'ReadonlyRecord'> +export declare const FoldableWithIndex: FoldableWithIndex1<'ReadonlyRecord', string> ``` Added in v2.7.0 -## filterableWithIndexRecord +## Functor **Signature** ```ts -export declare const filterableWithIndexRecord: FilterableWithIndex1<'ReadonlyRecord', string> +export declare const Functor: Functor1<'ReadonlyRecord'> ``` Added in v2.7.0 -## foldableRecord +## FunctorWithIndex **Signature** ```ts -export declare const foldableRecord: Foldable1<'ReadonlyRecord'> +export declare const FunctorWithIndex: FunctorWithIndex1<'ReadonlyRecord', string> ``` Added in v2.7.0 -## foldableWithIndexRecord +## Traversable **Signature** ```ts -export declare const foldableWithIndexRecord: FoldableWithIndex1<'ReadonlyRecord', string> +export declare const Traversable: Traversable1<'ReadonlyRecord'> ``` Added in v2.7.0 -## functorRecord +## TraversableWithIndex **Signature** ```ts -export declare const functorRecord: Functor1<'ReadonlyRecord'> +export declare const TraversableWithIndex: TraversableWithIndex1<'ReadonlyRecord', string> ``` Added in v2.7.0 -## functorWithIndexRecord +## URI + +**Signature** + +```ts +export declare const URI: 'ReadonlyRecord' +``` + +Added in v2.5.0 + +## URI (type alias) + +**Signature** + +```ts +export type URI = typeof URI +``` + +Added in v2.5.0 + +## Witherable **Signature** ```ts -export declare const functorWithIndexRecord: FunctorWithIndex1<'ReadonlyRecord', string> +export declare const Witherable: Witherable1<'ReadonlyRecord'> ``` Added in v2.7.0 @@ -502,36 +532,6 @@ export declare const readonlyRecord: FunctorWithIndex1<'ReadonlyRecord', string> Added in v2.5.0 -## traversableRecord - -**Signature** - -```ts -export declare const traversableRecord: Traversable1<'ReadonlyRecord'> -``` - -Added in v2.7.0 - -## traversableWithIndexRecord - -**Signature** - -```ts -export declare const traversableWithIndexRecord: TraversableWithIndex1<'ReadonlyRecord', string> -``` - -Added in v2.7.0 - -## witherableRecord - -**Signature** - -```ts -export declare const witherableRecord: Witherable1<'ReadonlyRecord'> -``` - -Added in v2.7.0 - # model ## ReadonlyRecord (type alias) @@ -656,7 +656,7 @@ export declare function fromFoldable( ): (fka: Kind) => ReadonlyRecord export declare function fromFoldable( M: Magma, - F: Foldable + F: FoldableHKT ): (fka: HKT) => ReadonlyRecord ``` @@ -686,7 +686,7 @@ export declare function fromFoldableMap( ): (fa: Kind, f: (a: A) => readonly [K, B]) => ReadonlyRecord export declare function fromFoldableMap( M: Magma, - F: Foldable + F: FoldableHKT ): (fa: HKT, f: (a: A) => readonly [K, B]) => ReadonlyRecord ``` diff --git a/docs/modules/ReadonlyTuple.ts.md b/docs/modules/ReadonlyTuple.ts.md index f5ddf6a5d..65c09e6d8 100644 --- a/docs/modules/ReadonlyTuple.ts.md +++ b/docs/modules/ReadonlyTuple.ts.md @@ -34,20 +34,20 @@ Added in v2.5.0 - [fst](#fst) - [snd](#snd) - [instances](#instances) + - [Bifunctor](#bifunctor-1) + - [Comonad](#comonad) + - [Foldable](#foldable-1) + - [Functor](#functor-1) + - [Semigroupoid](#semigroupoid-1) + - [Traversable](#traversable) - [URI](#uri) - [URI (type alias)](#uri-type-alias) - - [bifunctorTuple](#bifunctortuple) - - [comonadTuple](#comonadtuple) - - [foldableTuple](#foldabletuple) - - [functorTuple](#functortuple) - [getApplicative](#getapplicative) - [getApply](#getapply) - [getChain](#getchain) - [getChainRec](#getchainrec) - [getMonad](#getmonad) - [readonlyTuple](#readonlytuple) - - [semigroupoidTuple](#semigroupoidtuple) - - [traversableTuple](#traversabletuple) - [utils](#utils) - [sequence](#sequence) - [traverse](#traverse) @@ -209,66 +209,86 @@ Added in v2.5.0 # instances -## URI +## Bifunctor **Signature** ```ts -export declare const URI: 'ReadonlyTuple' +export declare const Bifunctor: Bifunctor2<'ReadonlyTuple'> ``` -Added in v2.5.0 +Added in v2.7.0 -## URI (type alias) +## Comonad **Signature** ```ts -export type URI = typeof URI +export declare const Comonad: Comonad2<'ReadonlyTuple'> ``` -Added in v2.5.0 +Added in v2.7.0 -## bifunctorTuple +## Foldable **Signature** ```ts -export declare const bifunctorTuple: Bifunctor2<'ReadonlyTuple'> +export declare const Foldable: Foldable2<'ReadonlyTuple'> ``` Added in v2.7.0 -## comonadTuple +## Functor **Signature** ```ts -export declare const comonadTuple: Comonad2<'ReadonlyTuple'> +export declare const Functor: Functor2<'ReadonlyTuple'> ``` Added in v2.7.0 -## foldableTuple +## Semigroupoid **Signature** ```ts -export declare const foldableTuple: Foldable2<'ReadonlyTuple'> +export declare const Semigroupoid: Semigroupoid2<'ReadonlyTuple'> ``` Added in v2.7.0 -## functorTuple +## Traversable **Signature** ```ts -export declare const functorTuple: Functor2<'ReadonlyTuple'> +export declare const Traversable: Traversable2<'ReadonlyTuple'> ``` Added in v2.7.0 +## URI + +**Signature** + +```ts +export declare const URI: 'ReadonlyTuple' +``` + +Added in v2.5.0 + +## URI (type alias) + +**Signature** + +```ts +export type URI = typeof URI +``` + +Added in v2.5.0 + ## getApplicative **Signature** @@ -333,26 +353,6 @@ export declare const readonlyTuple: Semigroupoid2<'ReadonlyTuple'> & Added in v2.5.0 -## semigroupoidTuple - -**Signature** - -```ts -export declare const semigroupoidTuple: Semigroupoid2<'ReadonlyTuple'> -``` - -Added in v2.7.0 - -## traversableTuple - -**Signature** - -```ts -export declare const traversableTuple: Traversable2<'ReadonlyTuple'> -``` - -Added in v2.7.0 - # utils ## sequence diff --git a/docs/modules/Record.ts.md b/docs/modules/Record.ts.md index 6482c4ec9..fde041a1d 100644 --- a/docs/modules/Record.ts.md +++ b/docs/modules/Record.ts.md @@ -28,19 +28,19 @@ Added in v2.0.0 - [wilt](#wilt) - [wither](#wither) - [instances](#instances) + - [Compactable](#compactable-1) + - [Filterable](#filterable-1) + - [FilterableWithIndex](#filterablewithindex) + - [Foldable](#foldable-1) + - [FoldableWithIndex](#foldablewithindex) + - [Functor](#functor) + - [FunctorWithIndex](#functorwithindex) + - [Traversable](#traversable) + - [TraversableWithIndex](#traversablewithindex) - [URI](#uri) - [URI (type alias)](#uri-type-alias) - - [compactableRecord](#compactablerecord) - - [filterableRecord](#filterablerecord) - - [filterableWithIndexRecord](#filterablewithindexrecord) - - [foldableRecord](#foldablerecord) - - [foldableWithIndexRecord](#foldablewithindexrecord) - - [functorRecord](#functorrecord) - - [functorWithIndexRecord](#functorwithindexrecord) + - [Witherable](#witherable) - [record](#record) - - [traversableRecord](#traversablerecord) - - [traversableWithIndexRecord](#traversablewithindexrecord) - - [witherableRecord](#witherablerecord) - [utils](#utils) - [collect](#collect) - [deleteAt](#deleteat) @@ -213,139 +213,139 @@ Added in v2.6.5 # instances -## URI +## Compactable **Signature** ```ts -export declare const URI: 'Record' +export declare const Compactable: Compactable1<'Record'> ``` -Added in v2.0.0 +Added in v2.7.0 -## URI (type alias) +## Filterable **Signature** ```ts -export type URI = typeof URI +export declare const Filterable: Filterable1<'Record'> ``` -Added in v2.0.0 +Added in v2.7.0 -## compactableRecord +## FilterableWithIndex **Signature** ```ts -export declare const compactableRecord: Compactable1<'Record'> +export declare const FilterableWithIndex: FilterableWithIndex1<'Record', string> ``` Added in v2.7.0 -## filterableRecord +## Foldable **Signature** ```ts -export declare const filterableRecord: Filterable1<'Record'> +export declare const Foldable: Foldable1<'Record'> ``` Added in v2.7.0 -## filterableWithIndexRecord +## FoldableWithIndex **Signature** ```ts -export declare const filterableWithIndexRecord: FilterableWithIndex1<'Record', string> +export declare const FoldableWithIndex: FoldableWithIndex1<'Record', string> ``` Added in v2.7.0 -## foldableRecord +## Functor **Signature** ```ts -export declare const foldableRecord: Foldable1<'Record'> +export declare const Functor: Functor1<'Record'> ``` Added in v2.7.0 -## foldableWithIndexRecord +## FunctorWithIndex **Signature** ```ts -export declare const foldableWithIndexRecord: FoldableWithIndex1<'Record', string> +export declare const FunctorWithIndex: FunctorWithIndex1<'Record', string> ``` Added in v2.7.0 -## functorRecord +## Traversable **Signature** ```ts -export declare const functorRecord: Functor1<'Record'> +export declare const Traversable: Traversable1<'Record'> ``` Added in v2.7.0 -## functorWithIndexRecord +## TraversableWithIndex **Signature** ```ts -export declare const functorWithIndexRecord: FunctorWithIndex1<'Record', string> +export declare const TraversableWithIndex: TraversableWithIndex1<'Record', string> ``` Added in v2.7.0 -## record +## URI **Signature** ```ts -export declare const record: FunctorWithIndex1<'Record', string> & - FoldableWithIndex1<'Record', string> & - FilterableWithIndex1<'Record', string> & - TraversableWithIndex1<'Record', string> & - Witherable1<'Record'> +export declare const URI: 'Record' ``` Added in v2.0.0 -## traversableRecord +## URI (type alias) **Signature** ```ts -export declare const traversableRecord: Traversable1<'Record'> +export type URI = typeof URI ``` -Added in v2.7.0 +Added in v2.0.0 -## traversableWithIndexRecord +## Witherable **Signature** ```ts -export declare const traversableWithIndexRecord: TraversableWithIndex1<'Record', string> +export declare const Witherable: Witherable1<'Record'> ``` Added in v2.7.0 -## witherableRecord +## record **Signature** ```ts -export declare const witherableRecord: Witherable1<'Record'> +export declare const record: FunctorWithIndex1<'Record', string> & + FoldableWithIndex1<'Record', string> & + FilterableWithIndex1<'Record', string> & + TraversableWithIndex1<'Record', string> & + Witherable1<'Record'> ``` -Added in v2.7.0 +Added in v2.0.0 # utils @@ -480,7 +480,7 @@ export declare function fromFoldable( ): (fka: Kind) => Record export declare function fromFoldable( M: Magma, - F: Foldable + F: FoldableHKT ): (fka: HKT) => Record ``` @@ -510,7 +510,7 @@ export declare function fromFoldableMap( ): (fa: Kind, f: (a: A) => [K, B]) => Record export declare function fromFoldableMap( M: Magma, - F: Foldable + F: FoldableHKT ): (fa: HKT, f: (a: A) => [K, B]) => Record ``` diff --git a/docs/modules/State.ts.md b/docs/modules/State.ts.md index 5aedb3474..c70f3683d 100644 --- a/docs/modules/State.ts.md +++ b/docs/modules/State.ts.md @@ -30,11 +30,11 @@ Added in v2.0.0 - [modify](#modify) - [put](#put) - [instances](#instances) + - [Applicative](#applicative-1) + - [Functor](#functor-1) + - [Monad](#monad-1) - [URI](#uri) - [URI (type alias)](#uri-type-alias) - - [applicativeState](#applicativestate) - - [functorState](#functorstate) - - [monadState](#monadstate) - [state](#state) - [model](#model) - [State (interface)](#state-interface) @@ -198,55 +198,55 @@ Added in v2.0.0 # instances -## URI +## Applicative **Signature** ```ts -export declare const URI: 'State' +export declare const Applicative: Applicative2<'State'> ``` -Added in v2.0.0 +Added in v2.7.0 -## URI (type alias) +## Functor **Signature** ```ts -export type URI = typeof URI +export declare const Functor: Functor2<'State'> ``` -Added in v2.0.0 +Added in v2.7.0 -## applicativeState +## Monad **Signature** ```ts -export declare const applicativeState: Applicative2<'State'> +export declare const Monad: Monad2<'State'> ``` Added in v2.7.0 -## functorState +## URI **Signature** ```ts -export declare const functorState: Functor2<'State'> +export declare const URI: 'State' ``` -Added in v2.7.0 +Added in v2.0.0 -## monadState +## URI (type alias) **Signature** ```ts -export declare const monadState: Monad2<'State'> +export type URI = typeof URI ``` -Added in v2.7.0 +Added in v2.0.0 ## state diff --git a/docs/modules/StateReaderTaskEither.ts.md b/docs/modules/StateReaderTaskEither.ts.md index 3410747be..919a7fb9e 100644 --- a/docs/modules/StateReaderTaskEither.ts.md +++ b/docs/modules/StateReaderTaskEither.ts.md @@ -73,12 +73,12 @@ Added in v2.0.0 - [rightState](#rightstate) - [rightTask](#righttask) - [instances](#instances) + - [Alt](#alt-1) + - [Applicative](#applicative-1) + - [Bifunctor](#bifunctor-1) + - [Functor](#functor-1) - [URI](#uri) - [URI (type alias)](#uri-type-alias) - - [altReaderStateTaskEither](#altreaderstatetaskeither) - - [applicativeStateReaderTaskEither](#applicativestatereadertaskeither) - - [bifunctorStateReaderTaskEither](#bifunctorstatereadertaskeither) - - [functorStateReaderTaskEither](#functorstatereadertaskeither) - [stateReaderTaskEither](#statereadertaskeither) - [stateReaderTaskEitherSeq](#statereadertaskeitherseq) - [model](#model) @@ -701,65 +701,65 @@ Added in v2.0.0 # instances -## URI +## Alt **Signature** ```ts -export declare const URI: 'StateReaderTaskEither' +export declare const Alt: Alt4<'StateReaderTaskEither'> ``` -Added in v2.0.0 +Added in v2.7.0 -## URI (type alias) +## Applicative **Signature** ```ts -export type URI = typeof URI +export declare const Applicative: Applicative4<'StateReaderTaskEither'> ``` -Added in v2.0.0 +Added in v2.7.0 -## altReaderStateTaskEither +## Bifunctor **Signature** ```ts -export declare const altReaderStateTaskEither: Alt4<'StateReaderTaskEither'> +export declare const Bifunctor: Bifunctor4<'StateReaderTaskEither'> ``` Added in v2.7.0 -## applicativeStateReaderTaskEither +## Functor **Signature** ```ts -export declare const applicativeStateReaderTaskEither: Applicative4<'StateReaderTaskEither'> +export declare const Functor: Functor4<'StateReaderTaskEither'> ``` Added in v2.7.0 -## bifunctorStateReaderTaskEither +## URI **Signature** ```ts -export declare const bifunctorStateReaderTaskEither: Bifunctor4<'StateReaderTaskEither'> +export declare const URI: 'StateReaderTaskEither' ``` -Added in v2.7.0 +Added in v2.0.0 -## functorStateReaderTaskEither +## URI (type alias) **Signature** ```ts -export declare const functorStateReaderTaskEither: Functor4<'StateReaderTaskEither'> +export type URI = typeof URI ``` -Added in v2.7.0 +Added in v2.0.0 ## stateReaderTaskEither diff --git a/docs/modules/Store.ts.md b/docs/modules/Store.ts.md index 47f33af24..37d79449b 100644 --- a/docs/modules/Store.ts.md +++ b/docs/modules/Store.ts.md @@ -20,10 +20,10 @@ Added in v2.0.0 - [Functor](#functor) - [map](#map) - [instances](#instances) + - [Comonad](#comonad) + - [Functor](#functor-1) - [URI](#uri) - [URI (type alias)](#uri-type-alias) - - [comonadStore](#comonadstore) - - [functorStore](#functorstore) - [store](#store) - [model](#model) - [Store (interface)](#store-interface) @@ -86,45 +86,45 @@ Added in v2.0.0 # instances -## URI +## Comonad **Signature** ```ts -export declare const URI: 'Store' +export declare const Comonad: Comonad2<'Store'> ``` -Added in v2.0.0 +Added in v2.7.0 -## URI (type alias) +## Functor **Signature** ```ts -export type URI = typeof URI +export declare const Functor: Functor2<'Store'> ``` -Added in v2.0.0 +Added in v2.7.0 -## comonadStore +## URI **Signature** ```ts -export declare const comonadStore: Comonad2<'Store'> +export declare const URI: 'Store' ``` -Added in v2.7.0 +Added in v2.0.0 -## functorStore +## URI (type alias) **Signature** ```ts -export declare const functorStore: Functor2<'Store'> +export type URI = typeof URI ``` -Added in v2.7.0 +Added in v2.0.0 ## store @@ -175,7 +175,9 @@ export declare function experiment( export declare function experiment( F: Functor1 ): (f: (s: S) => Kind) => (wa: Store) => Kind -export declare function experiment(F: Functor): (f: (s: S) => HKT) => (wa: Store) => HKT +export declare function experiment( + F: FunctorHKT +): (f: (s: S) => HKT) => (wa: Store) => HKT ``` Added in v2.0.0 diff --git a/docs/modules/Task.ts.md b/docs/modules/Task.ts.md index 2f2960fcc..809344791 100644 --- a/docs/modules/Task.ts.md +++ b/docs/modules/Task.ts.md @@ -42,11 +42,11 @@ Added in v2.0.0 - [constructors](#constructors) - [fromIO](#fromio) - [instances](#instances) + - [ApplicativePar](#applicativepar) + - [ApplicativeSeq](#applicativeseq) + - [Functor](#functor-1) - [URI](#uri) - [URI (type alias)](#uri-type-alias) - - [applicativeTaskPar](#applicativetaskpar) - - [applicativeTaskSeq](#applicativetaskseq) - - [functorTask](#functortask) - [getMonoid](#getmonoid) - [getRaceMonoid](#getracemonoid) - [getSemigroup](#getsemigroup) @@ -244,55 +244,55 @@ Added in v2.0.0 # instances -## URI +## ApplicativePar **Signature** ```ts -export declare const URI: 'Task' +export declare const ApplicativePar: Applicative1<'Task'> ``` -Added in v2.0.0 +Added in v2.7.0 -## URI (type alias) +## ApplicativeSeq **Signature** ```ts -export type URI = typeof URI +export declare const ApplicativeSeq: Applicative1<'Task'> ``` -Added in v2.0.0 +Added in v2.7.0 -## applicativeTaskPar +## Functor **Signature** ```ts -export declare const applicativeTaskPar: Applicative1<'Task'> +export declare const Functor: Functor1<'Task'> ``` Added in v2.7.0 -## applicativeTaskSeq +## URI **Signature** ```ts -export declare const applicativeTaskSeq: Applicative1<'Task'> +export declare const URI: 'Task' ``` -Added in v2.7.0 +Added in v2.0.0 -## functorTask +## URI (type alias) **Signature** ```ts -export declare const functorTask: Functor1<'Task'> +export type URI = typeof URI ``` -Added in v2.7.0 +Added in v2.0.0 ## getMonoid diff --git a/docs/modules/TaskEither.ts.md b/docs/modules/TaskEither.ts.md index 0d2d70a52..b9d039d20 100644 --- a/docs/modules/TaskEither.ts.md +++ b/docs/modules/TaskEither.ts.md @@ -66,13 +66,13 @@ Added in v2.0.0 - [getOrElse](#getorelse) - [getOrElseW](#getorelsew) - [instances](#instances) + - [Alt](#alt-1) + - [ApplicativePar](#applicativepar) + - [ApplicativeSeq](#applicativeseq) + - [Bifunctor](#bifunctor-1) + - [Functor](#functor-1) - [URI](#uri) - [URI (type alias)](#uri-type-alias) - - [altTaskEither](#alttaskeither) - - [applicativeTaskEitherPar](#applicativetaskeitherpar) - - [applicativeTaskEitherSeq](#applicativetaskeitherseq) - - [bifunctorTaskEither](#bifunctortaskeither) - - [functorTaskEither](#functortaskeither) - [getAltTaskValidation](#getalttaskvalidation) - [getApplicativeTaskValidation](#getapplicativetaskvalidation) - [getApplyMonoid](#getapplymonoid) @@ -635,75 +635,75 @@ Added in v2.6.0 # instances -## URI +## Alt **Signature** ```ts -export declare const URI: 'TaskEither' +export declare const Alt: Alt2<'TaskEither'> ``` -Added in v2.0.0 +Added in v2.7.0 -## URI (type alias) +## ApplicativePar **Signature** ```ts -export type URI = typeof URI +export declare const ApplicativePar: Applicative2<'TaskEither'> ``` -Added in v2.0.0 +Added in v2.7.0 -## altTaskEither +## ApplicativeSeq **Signature** ```ts -export declare const altTaskEither: Alt2<'TaskEither'> +export declare const ApplicativeSeq: Applicative2<'TaskEither'> ``` Added in v2.7.0 -## applicativeTaskEitherPar +## Bifunctor **Signature** ```ts -export declare const applicativeTaskEitherPar: Applicative2<'TaskEither'> +export declare const Bifunctor: Bifunctor2<'TaskEither'> ``` Added in v2.7.0 -## applicativeTaskEitherSeq +## Functor **Signature** ```ts -export declare const applicativeTaskEitherSeq: Applicative2<'TaskEither'> +export declare const Functor: Functor2<'TaskEither'> ``` Added in v2.7.0 -## bifunctorTaskEither +## URI **Signature** ```ts -export declare const bifunctorTaskEither: Bifunctor2<'TaskEither'> +export declare const URI: 'TaskEither' ``` -Added in v2.7.0 +Added in v2.0.0 -## functorTaskEither +## URI (type alias) **Signature** ```ts -export declare const functorTaskEither: Functor2<'TaskEither'> +export type URI = typeof URI ``` -Added in v2.7.0 +Added in v2.0.0 ## getAltTaskValidation diff --git a/docs/modules/These.ts.md b/docs/modules/These.ts.md index f1af9b3e1..8617c9b7e 100644 --- a/docs/modules/These.ts.md +++ b/docs/modules/These.ts.md @@ -60,18 +60,18 @@ Added in v2.0.0 - [isLeft](#isleft) - [isRight](#isright) - [instances](#instances) + - [Bifunctor](#bifunctor-1) + - [Foldable](#foldable-1) + - [Functor](#functor-1) + - [Traversable](#traversable) - [URI](#uri) - [URI (type alias)](#uri-type-alias) - - [bifunctorThese](#bifunctorthese) - - [foldableThese](#foldablethese) - - [functorThese](#functorthese) - [getApplicative](#getapplicative) - [getEq](#geteq) - [getMonad](#getmonad) - [getSemigroup](#getsemigroup) - [getShow](#getshow) - [these](#these) - - [traversableThese](#traversablethese) - [model](#model) - [Both (interface)](#both-interface) - [These (type alias)](#these-type-alias) @@ -430,55 +430,65 @@ Added in v2.0.0 # instances -## URI +## Bifunctor **Signature** ```ts -export declare const URI: 'These' +export declare const Bifunctor: Bifunctor2<'These'> ``` -Added in v2.0.0 +Added in v2.7.0 -## URI (type alias) +## Foldable **Signature** ```ts -export type URI = typeof URI +export declare const Foldable: Foldable2<'These'> ``` -Added in v2.0.0 +Added in v2.7.0 -## bifunctorThese +## Functor **Signature** ```ts -export declare const bifunctorThese: Bifunctor2<'These'> +export declare const Functor: Functor2<'These'> ``` Added in v2.7.0 -## foldableThese +## Traversable **Signature** ```ts -export declare const foldableThese: Foldable2<'These'> +export declare const Traversable: Traversable2<'These'> ``` Added in v2.7.0 -## functorThese +## URI **Signature** ```ts -export declare const functorThese: Functor2<'These'> +export declare const URI: 'These' ``` -Added in v2.7.0 +Added in v2.0.0 + +## URI (type alias) + +**Signature** + +```ts +export type URI = typeof URI +``` + +Added in v2.0.0 ## getApplicative @@ -540,16 +550,6 @@ export declare const these: Functor2<'These'> & Bifunctor2<'These'> & Foldable2< Added in v2.0.0 -## traversableThese - -**Signature** - -```ts -export declare const traversableThese: Traversable2<'These'> -``` - -Added in v2.7.0 - # model ## Both (interface) diff --git a/docs/modules/Traced.ts.md b/docs/modules/Traced.ts.md index c94732cd1..c6205cad4 100644 --- a/docs/modules/Traced.ts.md +++ b/docs/modules/Traced.ts.md @@ -15,9 +15,9 @@ Added in v2.0.0 - [Functor](#functor) - [map](#map) - [instances](#instances) + - [Functor](#functor-1) - [URI](#uri) - [URI (type alias)](#uri-type-alias) - - [functorTraced](#functortraced) - [getComonad](#getcomonad) - [traced](#traced) - [model](#model) @@ -47,35 +47,35 @@ Added in v2.0.0 # instances -## URI +## Functor **Signature** ```ts -export declare const URI: 'Traced' +export declare const Functor: Functor2<'Traced'> ``` -Added in v2.0.0 +Added in v2.7.0 -## URI (type alias) +## URI **Signature** ```ts -export type URI = typeof URI +export declare const URI: 'Traced' ``` Added in v2.0.0 -## functorTraced +## URI (type alias) **Signature** ```ts -export declare const functorTraced: Functor2<'Traced'> +export type URI = typeof URI ``` -Added in v2.7.0 +Added in v2.0.0 ## getComonad diff --git a/docs/modules/Tree.ts.md b/docs/modules/Tree.ts.md index 75ce8ecc4..3906cbae7 100644 --- a/docs/modules/Tree.ts.md +++ b/docs/modules/Tree.ts.md @@ -46,16 +46,16 @@ Added in v2.0.0 - [destructors](#destructors) - [fold](#fold) - [instances](#instances) + - [Applicative](#applicative) + - [Comonad](#comonad) + - [Foldable](#foldable-1) + - [Functor](#functor-1) + - [Monad](#monad-1) + - [Traversable](#traversable) - [URI](#uri) - [URI (type alias)](#uri-type-alias) - - [applicativeTree](#applicativetree) - - [comonadTree](#comonadtree) - - [foldableTree](#foldabletree) - - [functorTree](#functortree) - [getEq](#geteq) - [getShow](#getshow) - - [monadTree](#monadtree) - - [traversableTree](#traversabletree) - [tree](#tree) - [model](#model) - [Forest (type alias)](#forest-type-alias) @@ -273,7 +273,7 @@ export declare function unfoldForestM( M: Monad1 ): (bs: Array, f: (b: B) => Kind]>) => Kind> export declare function unfoldForestM( - M: Monad + M: MonadHKT ): (bs: Array, f: (b: B) => HKT]>) => HKT> ``` @@ -313,7 +313,9 @@ export declare function unfoldTreeM( export declare function unfoldTreeM( M: Monad1 ): (b: B, f: (b: B) => Kind]>) => Kind> -export declare function unfoldTreeM(M: Monad): (b: B, f: (b: B) => HKT]>) => HKT> +export declare function unfoldTreeM( + M: MonadHKT +): (b: B, f: (b: B) => HKT]>) => HKT> ``` Added in v2.0.0 @@ -357,105 +359,105 @@ Added in v2.6.0 # instances -## URI +## Applicative **Signature** ```ts -export declare const URI: 'Tree' +export declare const Applicative: Applicative1<'Tree'> ``` -Added in v2.0.0 +Added in v2.7.0 -## URI (type alias) +## Comonad **Signature** ```ts -export type URI = typeof URI +export declare const Comonad: Comonad1<'Tree'> ``` -Added in v2.0.0 +Added in v2.7.0 -## applicativeTree +## Foldable **Signature** ```ts -export declare const applicativeTree: Applicative1<'Tree'> +export declare const Foldable: Foldable1<'Tree'> ``` Added in v2.7.0 -## comonadTree +## Functor **Signature** ```ts -export declare const comonadTree: Comonad1<'Tree'> +export declare const Functor: Functor1<'Tree'> ``` Added in v2.7.0 -## foldableTree +## Monad **Signature** ```ts -export declare const foldableTree: Foldable1<'Tree'> +export declare const Monad: Monad1<'Tree'> ``` Added in v2.7.0 -## functorTree +## Traversable **Signature** ```ts -export declare const functorTree: Functor1<'Tree'> +export declare const Traversable: Traversable1<'Tree'> ``` Added in v2.7.0 -## getEq +## URI **Signature** ```ts -export declare function getEq(E: Eq): Eq> +export declare const URI: 'Tree' ``` Added in v2.0.0 -## getShow +## URI (type alias) **Signature** ```ts -export declare function getShow(S: Show): Show> +export type URI = typeof URI ``` Added in v2.0.0 -## monadTree +## getEq **Signature** ```ts -export declare const monadTree: Monad1<'Tree'> +export declare function getEq(E: Eq): Eq> ``` -Added in v2.7.0 +Added in v2.0.0 -## traversableTree +## getShow **Signature** ```ts -export declare const traversableTree: Traversable1<'Tree'> +export declare function getShow(S: Show): Show> ``` -Added in v2.7.0 +Added in v2.0.0 ## tree diff --git a/docs/modules/Tuple.ts.md b/docs/modules/Tuple.ts.md index 209d88781..e7df7ef5a 100644 --- a/docs/modules/Tuple.ts.md +++ b/docs/modules/Tuple.ts.md @@ -34,19 +34,19 @@ Added in v2.0.0 - [fst](#fst) - [snd](#snd) - [instances](#instances) + - [Bifunctor](#bifunctor-1) + - [Comonad](#comonad) + - [Foldable](#foldable-1) + - [Functor](#functor-1) + - [Semigroupoid](#semigroupoid-1) + - [Traversable](#traversable) - [URI](#uri) - [URI (type alias)](#uri-type-alias) - - [bifunctorTuple](#bifunctortuple) - - [comonadTuple](#comonadtuple) - - [foldableTuple](#foldabletuple) - - [functorTuple](#functortuple) - [getApplicative](#getapplicative) - [getApply](#getapply) - [getChain](#getchain) - [getChainRec](#getchainrec) - [getMonad](#getmonad) - - [semigroupoidTuple](#semigroupoidtuple) - - [traversableTuple](#traversabletuple) - [tuple](#tuple) - [utils](#utils) - [sequence](#sequence) @@ -209,135 +209,135 @@ Added in v2.0.0 # instances -## URI +## Bifunctor **Signature** ```ts -export declare const URI: 'Tuple' +export declare const Bifunctor: Bifunctor2<'Tuple'> ``` -Added in v2.0.0 +Added in v2.7.0 -## URI (type alias) +## Comonad **Signature** ```ts -export type URI = typeof URI +export declare const Comonad: Comonad2<'Tuple'> ``` -Added in v2.0.0 +Added in v2.7.0 -## bifunctorTuple +## Foldable **Signature** ```ts -export declare const bifunctorTuple: Bifunctor2<'Tuple'> +export declare const Foldable: Foldable2<'Tuple'> ``` Added in v2.7.0 -## comonadTuple +## Functor **Signature** ```ts -export declare const comonadTuple: Comonad2<'Tuple'> +export declare const Functor: Functor2<'Tuple'> ``` Added in v2.7.0 -## foldableTuple +## Semigroupoid **Signature** ```ts -export declare const foldableTuple: Foldable2<'Tuple'> +export declare const Semigroupoid: Semigroupoid2<'Tuple'> ``` Added in v2.7.0 -## functorTuple +## Traversable **Signature** ```ts -export declare const functorTuple: Functor2<'Tuple'> +export declare const Traversable: Traversable2<'Tuple'> ``` Added in v2.7.0 -## getApplicative +## URI **Signature** ```ts -export declare const getApplicative: (M: Monoid) => Applicative2C<'Tuple', S> +export declare const URI: 'Tuple' ``` Added in v2.0.0 -## getApply +## URI (type alias) **Signature** ```ts -export declare const getApply: (S: Semigroup) => Apply2C<'Tuple', S> +export type URI = typeof URI ``` Added in v2.0.0 -## getChain +## getApplicative **Signature** ```ts -export declare const getChain: (S: Semigroup) => Chain2C<'Tuple', S> +export declare const getApplicative: (M: Monoid) => Applicative2C<'Tuple', S> ``` Added in v2.0.0 -## getChainRec +## getApply **Signature** ```ts -export declare const getChainRec: (M: Monoid) => ChainRec2C<'Tuple', S> +export declare const getApply: (S: Semigroup) => Apply2C<'Tuple', S> ``` Added in v2.0.0 -## getMonad +## getChain **Signature** ```ts -export declare const getMonad: (M: Monoid) => Monad2C<'Tuple', S> +export declare const getChain: (S: Semigroup) => Chain2C<'Tuple', S> ``` Added in v2.0.0 -## semigroupoidTuple +## getChainRec **Signature** ```ts -export declare const semigroupoidTuple: Semigroupoid2<'Tuple'> +export declare const getChainRec: (M: Monoid) => ChainRec2C<'Tuple', S> ``` -Added in v2.7.0 +Added in v2.0.0 -## traversableTuple +## getMonad **Signature** ```ts -export declare const traversableTuple: Traversable2<'Tuple'> +export declare const getMonad: (M: Monoid) => Monad2C<'Tuple', S> ``` -Added in v2.7.0 +Added in v2.0.0 ## tuple diff --git a/docs/modules/Writer.ts.md b/docs/modules/Writer.ts.md index 2819e167c..fa58f26e6 100644 --- a/docs/modules/Writer.ts.md +++ b/docs/modules/Writer.ts.md @@ -21,9 +21,9 @@ Added in v2.0.0 - [pass](#pass) - [tell](#tell) - [instances](#instances) + - [Functor](#functor-1) - [URI](#uri) - [URI (type alias)](#uri-type-alias) - - [functorWriter](#functorwriter) - [getMonad](#getmonad) - [writer](#writer) - [model](#model) @@ -113,35 +113,35 @@ Added in v2.0.0 # instances -## URI +## Functor **Signature** ```ts -export declare const URI: 'Writer' +export declare const Functor: Functor2<'Writer'> ``` -Added in v2.0.0 +Added in v2.7.0 -## URI (type alias) +## URI **Signature** ```ts -export type URI = typeof URI +export declare const URI: 'Writer' ``` Added in v2.0.0 -## functorWriter +## URI (type alias) **Signature** ```ts -export declare const functorWriter: Functor2<'Writer'> +export type URI = typeof URI ``` -Added in v2.7.0 +Added in v2.0.0 ## getMonad diff --git a/src/Array.ts b/src/Array.ts index 7796caf6f..bf961b03c 100644 --- a/src/Array.ts +++ b/src/Array.ts @@ -977,37 +977,36 @@ export const of: (a: A) => Array = RA.of as any // non-pipeables // ------------------------------------------------------------------------------------- -const map_: Monad1['map'] = RA.monadArray.map as any -const ap_: Monad1['ap'] = RA.monadArray.ap as any -const chain_: Monad1['chain'] = RA.monadArray.chain as any -const mapWithIndex_: FunctorWithIndex1['mapWithIndex'] = RA.functorWithIndexArray.mapWithIndex as any -const filter_: Filterable1['filter'] = RA.filterableArray.filter as any -const filterMap_: Filterable1['filterMap'] = RA.filterableArray.filterMap as any -const partition_: Filterable1['partition'] = RA.filterableArray.partition as any -const partitionMap_: Filterable1['partitionMap'] = RA.filterableArray.partitionMap as any -const filterWithIndex_: FilterableWithIndex1['filterWithIndex'] = RA.filterableWithIndexArray +const map_: Monad1['map'] = RA.Monad.map as any +const ap_: Monad1['ap'] = RA.Monad.ap as any +const chain_: Monad1['chain'] = RA.Monad.chain as any +const mapWithIndex_: FunctorWithIndex1['mapWithIndex'] = RA.Functor.mapWithIndex as any +const filter_: Filterable1['filter'] = RA.Filterable.filter as any +const filterMap_: Filterable1['filterMap'] = RA.Filterable.filterMap as any +const partition_: Filterable1['partition'] = RA.Filterable.partition as any +const partitionMap_: Filterable1['partitionMap'] = RA.Filterable.partitionMap as any +const filterWithIndex_: FilterableWithIndex1['filterWithIndex'] = RA.FilterableWithIndex .filterWithIndex as any -const filterMapWithIndex_: FilterableWithIndex1['filterMapWithIndex'] = RA.filterableWithIndexArray +const filterMapWithIndex_: FilterableWithIndex1['filterMapWithIndex'] = RA.FilterableWithIndex .filterMapWithIndex as any -const partitionWithIndex_: FilterableWithIndex1['partitionWithIndex'] = RA.filterableWithIndexArray +const partitionWithIndex_: FilterableWithIndex1['partitionWithIndex'] = RA.FilterableWithIndex .partitionWithIndex as any -const partitionMapWithIndex_: FilterableWithIndex1['partitionMapWithIndex'] = RA.filterableWithIndexArray +const partitionMapWithIndex_: FilterableWithIndex1['partitionMapWithIndex'] = RA.FilterableWithIndex .partitionMapWithIndex as any -const reduce_: Foldable1['reduce'] = RA.foldableArray.reduce -const foldMap_: Foldable1['foldMap'] = RA.foldableArray.foldMap -const reduceRight_: Foldable1['reduceRight'] = RA.foldableArray.reduceRight -const traverse_: Traversable1['traverse'] = RA.traversableArray.traverse as any -const alt_: Alternative1['alt'] = RA.alternativeArray.alt as any -const reduceWithIndex_: FoldableWithIndex1['reduceWithIndex'] = RA.foldableWithIndexArray.reduceWithIndex -const foldMapWithIndex_: FoldableWithIndex1['foldMapWithIndex'] = - RA.foldableWithIndexArray.foldMapWithIndex +const reduce_: Foldable1['reduce'] = RA.Foldable.reduce +const foldMap_: Foldable1['foldMap'] = RA.Foldable.foldMap +const reduceRight_: Foldable1['reduceRight'] = RA.Foldable.reduceRight +const traverse_: Traversable1['traverse'] = RA.Traversable.traverse as any +const alt_: Alternative1['alt'] = RA.Alternative.alt as any +const reduceWithIndex_: FoldableWithIndex1['reduceWithIndex'] = RA.FoldableWithIndex.reduceWithIndex +const foldMapWithIndex_: FoldableWithIndex1['foldMapWithIndex'] = RA.FoldableWithIndex.foldMapWithIndex const reduceRightWithIndex_: FoldableWithIndex1['reduceRightWithIndex'] = - RA.foldableWithIndexArray.reduceRightWithIndex -const traverseWithIndex_: TraversableWithIndex1['traverseWithIndex'] = RA.traversableWithIndexArray + RA.FoldableWithIndex.reduceRightWithIndex +const traverseWithIndex_: TraversableWithIndex1['traverseWithIndex'] = RA.TraversableWithIndex .traverseWithIndex as any -const extend_: Extend1['extend'] = RA.extendArray.extend as any -const wither_: Witherable1['wither'] = RA.witherableArray.wither as any -const wilt_: Witherable1['wilt'] = RA.witherableArray.wilt as any +const extend_: Extend1['extend'] = RA.Extend.extend as any +const wither_: Witherable1['wither'] = RA.Witherable.wither as any +const wilt_: Witherable1['wilt'] = RA.Witherable.wilt as any // ------------------------------------------------------------------------------------- // pipeables @@ -1255,7 +1254,7 @@ export const unfold: Unfoldable1['unfold'] = RA.unfold as any * @category Alternative * @since 2.7.0 */ -export const zero: Alternative1['zero'] = RA.alternativeArray.zero as any +export const zero: Alternative1['zero'] = RA.Alternative.zero as any // ------------------------------------------------------------------------------------- // instances @@ -1283,7 +1282,7 @@ declare module './HKT' { * @category instances * @since 2.7.0 */ -export const functorArray: Functor1 = { +export const Functor: Functor1 = { URI, map: map_ } @@ -1292,7 +1291,7 @@ export const functorArray: Functor1 = { * @category instances * @since 2.7.0 */ -export const functorWithIndexArray: FunctorWithIndex1 = { +export const FunctorWithIndex: FunctorWithIndex1 = { URI, map: map_, mapWithIndex: mapWithIndex_ @@ -1302,7 +1301,7 @@ export const functorWithIndexArray: FunctorWithIndex1 = { * @category instances * @since 2.7.0 */ -export const applicativeArray: Applicative1 = { +export const Applicative: Applicative1 = { URI, map: map_, ap: ap_, @@ -1313,7 +1312,7 @@ export const applicativeArray: Applicative1 = { * @category instances * @since 2.7.0 */ -export const monadArray: Monad1 = { +export const Monad: Monad1 = { URI, map: map_, ap: ap_, @@ -1325,7 +1324,7 @@ export const monadArray: Monad1 = { * @category instances * @since 2.7.0 */ -export const unfoldableArray: Unfoldable1 = { +export const Unfoldable: Unfoldable1 = { URI, unfold } @@ -1334,7 +1333,7 @@ export const unfoldableArray: Unfoldable1 = { * @category instances * @since 2.7.0 */ -export const altArray: Alt1 = { +export const Alt: Alt1 = { URI, map: map_, alt: alt_ @@ -1344,7 +1343,7 @@ export const altArray: Alt1 = { * @category instances * @since 2.7.0 */ -export const alternativeArray: Alternative1 = { +export const Alternative: Alternative1 = { URI, map: map_, ap: ap_, @@ -1357,7 +1356,7 @@ export const alternativeArray: Alternative1 = { * @category instances * @since 2.7.0 */ -export const extendArray: Extend1 = { +export const Extend: Extend1 = { URI, map: map_, extend: extend_ @@ -1367,7 +1366,7 @@ export const extendArray: Extend1 = { * @category instances * @since 2.7.0 */ -export const compactableArray: Compactable1 = { +export const Compactable: Compactable1 = { URI, compact, separate @@ -1377,7 +1376,7 @@ export const compactableArray: Compactable1 = { * @category instances * @since 2.7.0 */ -export const filterableArray: Filterable1 = { +export const Filterable: Filterable1 = { URI, map: map_, compact, @@ -1392,7 +1391,7 @@ export const filterableArray: Filterable1 = { * @category instances * @since 2.7.0 */ -export const filterableWithIndexArray: FilterableWithIndex1 = { +export const FilterableWithIndex: FilterableWithIndex1 = { URI, map: map_, mapWithIndex: mapWithIndex_, @@ -1412,7 +1411,7 @@ export const filterableWithIndexArray: FilterableWithIndex1 = { * @category instances * @since 2.7.0 */ -export const foldableArray: Foldable1 = { +export const Foldable: Foldable1 = { URI, reduce: reduce_, foldMap: foldMap_, @@ -1423,7 +1422,7 @@ export const foldableArray: Foldable1 = { * @category instances * @since 2.7.0 */ -export const foldableWithIndexArray: FoldableWithIndex1 = { +export const FoldableWithIndex: FoldableWithIndex1 = { URI, reduce: reduce_, foldMap: foldMap_, @@ -1437,7 +1436,7 @@ export const foldableWithIndexArray: FoldableWithIndex1 = { * @category instances * @since 2.7.0 */ -export const traversableArray: Traversable1 = { +export const Traversable: Traversable1 = { URI, map: map_, reduce: reduce_, @@ -1451,7 +1450,7 @@ export const traversableArray: Traversable1 = { * @category instances * @since 2.7.0 */ -export const traversableWithIndexArray: TraversableWithIndex1 = { +export const TraversableWithIndex: TraversableWithIndex1 = { URI, map: map_, mapWithIndex: mapWithIndex_, @@ -1470,7 +1469,7 @@ export const traversableWithIndexArray: TraversableWithIndex1 = { * @category instances * @since 2.7.0 */ -export const witherableArray: Witherable1 = { +export const Witherable: Witherable1 = { URI, map: map_, compact, diff --git a/src/Const.ts b/src/Const.ts index d45da3f42..19693465a 100644 --- a/src/Const.ts +++ b/src/Const.ts @@ -203,7 +203,7 @@ declare module './HKT' { * @category instances * @since 2.7.0 */ -export const functorConst: Functor2 = { +export const Functor: Functor2 = { URI, map: map_ } @@ -212,7 +212,7 @@ export const functorConst: Functor2 = { * @category instances * @since 2.7.0 */ -export const contravariantConst: Contravariant2 = { +export const Contravariant: Contravariant2 = { URI, contramap: contramap_ } @@ -221,12 +221,13 @@ export const contravariantConst: Contravariant2 = { * @category instances * @since 2.7.0 */ -export const bifunctorConst: Bifunctor2 = { +export const Bifunctor: Bifunctor2 = { URI, bimap: bimap_, mapLeft: mapLeft_ } +// TODO: remove in v3 /** * @category instances * @since 2.0.0 diff --git a/src/Either.ts b/src/Either.ts index 6b4349815..f8d920cfc 100644 --- a/src/Either.ts +++ b/src/Either.ts @@ -14,7 +14,7 @@ * @since 2.0.0 */ import { Alt2, Alt2C } from './Alt' -import { Applicative, Applicative2, Applicative2C } from './Applicative' +import { Applicative as ApplicativeHKT, Applicative2, Applicative2C } from './Applicative' import { Bifunctor2 } from './Bifunctor' import { ChainRec2, ChainRec2C, tailRec } from './ChainRec' import { Separated } from './Compactable' @@ -330,7 +330,7 @@ const chain_: (fa: Either, f: (a: A) => Either) => Eithe const reduce_: Foldable2['reduce'] = (fa, b, f) => (isLeft(fa) ? b : f(b, fa.right)) const foldMap_: Foldable2['foldMap'] = (M) => (fa, f) => (isLeft(fa) ? M.empty : f(fa.right)) const reduceRight_: Foldable2['reduceRight'] = (fa, b, f) => (isLeft(fa) ? b : f(fa.right, b)) -const traverse_ = (F: Applicative) => ( +const traverse_ = (F: ApplicativeHKT) => ( ma: Either, f: (a: A) => HKT ): HKT> => { @@ -498,7 +498,7 @@ export const reduceRight: (b: B, f: (a: A, b: B) => B) => (fa: Either = ( - F: Applicative + F: ApplicativeHKT ): ((f: (a: A) => HKT) => (ta: Either) => HKT>) => { const traverseF = traverse_(F) return (f) => (fa) => traverseF(fa, f) @@ -508,7 +508,7 @@ export const traverse: PipeableTraverse2 = ( * @category Traversable * @since 2.6.3 */ -export const sequence: Traversable2['sequence'] = (F: Applicative) => ( +export const sequence: Traversable2['sequence'] = (F: ApplicativeHKT) => ( ma: Either> ): HKT> => { return isLeft(ma) ? F.of(left(ma.left)) : F.map>(ma.right, right) @@ -672,14 +672,14 @@ export function getWitherable(M: Monoid): Witherable2C { isLeft(ma) ? ma : predicate(ma.right) ? ma : left(M.empty) const wither = ( - F: Applicative + F: ApplicativeHKT ): ((ma: Either, f: (a: A) => HKT>) => HKT>) => { const traverseF = traverse_(F) return (ma, f) => F.map(traverseF(ma, f), compact) } const wilt = ( - F: Applicative + F: ApplicativeHKT ): (( ma: Either, f: (a: A) => HKT> @@ -801,7 +801,7 @@ export function getValidationSemigroup(SE: Semigroup, SA: Semigroup) * @category instances * @since 2.7.0 */ -export const functorEither: Functor2 = { +export const Functor: Functor2 = { URI, map: map_ } @@ -810,7 +810,7 @@ export const functorEither: Functor2 = { * @category instances * @since 2.7.0 */ -export const applicativeEither: Applicative2 = { +export const Applicative: Applicative2 = { URI, map: map_, ap: ap_, @@ -821,7 +821,7 @@ export const applicativeEither: Applicative2 = { * @category instances * @since 2.7.0 */ -export const monadEither: Monad2 = { +export const Monad: Monad2 = { URI, map: map_, ap: ap_, @@ -833,7 +833,7 @@ export const monadEither: Monad2 = { * @category instances * @since 2.7.0 */ -export const foldableEither: Foldable2 = { +export const Foldable: Foldable2 = { URI, reduce: reduce_, foldMap: foldMap_, @@ -844,7 +844,7 @@ export const foldableEither: Foldable2 = { * @category instances * @since 2.7.0 */ -export const traversableEither: Traversable2 = { +export const Traversable: Traversable2 = { URI, map: map_, reduce: reduce_, @@ -858,7 +858,7 @@ export const traversableEither: Traversable2 = { * @category instances * @since 2.7.0 */ -export const bifunctorEither: Bifunctor2 = { +export const Bifunctor: Bifunctor2 = { URI, bimap: bimap_, mapLeft: mapLeft_ @@ -868,7 +868,7 @@ export const bifunctorEither: Bifunctor2 = { * @category instances * @since 2.7.0 */ -export const altEither: Alt2 = { +export const Alt: Alt2 = { URI, map: map_, alt: alt_ @@ -878,7 +878,7 @@ export const altEither: Alt2 = { * @category instances * @since 2.7.0 */ -export const extendEither: Extend2 = { +export const Extend: Extend2 = { URI, map: map_, extend: extend_ @@ -888,7 +888,7 @@ export const extendEither: Extend2 = { * @category instances * @since 2.7.0 */ -export const chainRecEither: ChainRec2 = { +export const ChainRec: ChainRec2 = { URI, map: map_, ap: ap_, @@ -900,7 +900,7 @@ export const chainRecEither: ChainRec2 = { * @category instances * @since 2.7.0 */ -export const monadThrowEither: MonadThrow2 = { +export const MonadThrow: MonadThrow2 = { URI, map: map_, ap: ap_, diff --git a/src/EitherT.ts b/src/EitherT.ts index bc4ff1636..f8c5b1fd2 100644 --- a/src/EitherT.ts +++ b/src/EitherT.ts @@ -100,7 +100,7 @@ export function getEitherM(M: Monad2): EitherM2 export function getEitherM(M: Monad1): EitherM1 export function getEitherM(M: Monad): EitherM export function getEitherM(M: Monad): EitherM { - const ap = apComposition(M, E.applicativeEither) + const ap = apComposition(M, E.Applicative) const of = flow(E.right, M.of) return { diff --git a/src/Eq.ts b/src/Eq.ts index 676fba005..76426ea5d 100644 --- a/src/Eq.ts +++ b/src/Eq.ts @@ -173,7 +173,7 @@ export function getMonoid(): Monoid> { * @category instances * @since 2.7.0 */ -export const contravariantEq: Contravariant1 = { +export const Contravariant: Contravariant1 = { URI, contramap: contramap_ } @@ -183,4 +183,4 @@ export const contravariantEq: Contravariant1 = { * @category instances * @since 2.0.0 */ -export const eq: Contravariant1 = contravariantEq +export const eq: Contravariant1 = Contravariant diff --git a/src/IO.ts b/src/IO.ts index a39fc7914..696308d5f 100644 --- a/src/IO.ts +++ b/src/IO.ts @@ -173,7 +173,7 @@ export function getMonoid(M: Monoid): Monoid> { * @category instances * @since 2.7.0 */ -export const functorIO: Functor1 = { +export const Functor: Functor1 = { URI, map: map_ } @@ -182,7 +182,7 @@ export const functorIO: Functor1 = { * @category instances * @since 2.7.0 */ -export const applicativeIO: Applicative1 = { +export const Applicative: Applicative1 = { URI, map: map_, ap: ap_, @@ -193,7 +193,7 @@ export const applicativeIO: Applicative1 = { * @category instances * @since 2.7.0 */ -export const monadIO: Monad1 = { +export const Monad: Monad1 = { URI, map: map_, ap: ap_, @@ -205,7 +205,7 @@ export const monadIO: Monad1 = { * @category instances * @since 2.7.0 */ -export const monadIOIO: MonadIO1 = { +export const MonadIO: MonadIO1 = { URI, map: map_, ap: ap_, @@ -218,7 +218,7 @@ export const monadIOIO: MonadIO1 = { * @category instances * @since 2.7.0 */ -export const chainRecIO: ChainRec1 = { +export const ChainRec: ChainRec1 = { URI, map: map_, ap: ap_, diff --git a/src/IOEither.ts b/src/IOEither.ts index 3a471c5b5..7c5d56169 100644 --- a/src/IOEither.ts +++ b/src/IOEither.ts @@ -247,7 +247,7 @@ export const mapLeft: (f: (e: E) => G) => (fa: IOEither) => IOEit */ export const ap: (fa: IOEither) => (fab: IOEither B>) => IOEither = /*#__PURE__*/ - apComposition(I.applicativeIO, E.applicativeEither) + apComposition(I.Applicative, E.Applicative) /** * Combine two effectful actions, keeping only the result of the first. @@ -395,7 +395,7 @@ export function getApplyMonoid(M: Monoid): Monoid> { * @since 2.7.0 */ export function getApplicativeIOValidation(SE: Semigroup): Applicative2C { - const ap = apComposition(I.applicativeIO, E.getApplicativeValidation(SE)) + const ap = apComposition(I.Applicative, E.getApplicativeValidation(SE)) return { URI, _E: undefined as any, @@ -450,7 +450,7 @@ export function getIOValidation( */ export function getFilterable(M: Monoid): Filterable2C { const W = E.getWitherable(M) - const F = getFilterableComposition(I.monadIO, W) + const F = getFilterableComposition(I.Monad, W) return { URI, @@ -469,7 +469,7 @@ export function getFilterable(M: Monoid): Filterable2C { * @category instances * @since 2.7.0 */ -export const functorIOEither: Functor2 = { +export const Functor: Functor2 = { URI, map: map_ } @@ -478,7 +478,7 @@ export const functorIOEither: Functor2 = { * @category instances * @since 2.7.0 */ -export const bifunctorIOEither: Bifunctor2 = { +export const Bifunctor: Bifunctor2 = { URI, bimap: bimap_, mapLeft: mapLeft_ @@ -488,7 +488,7 @@ export const bifunctorIOEither: Bifunctor2 = { * @category instances * @since 2.7.0 */ -export const applicativeIOEither: Applicative2 = { +export const Applicative: Applicative2 = { URI, map: map_, ap: ap_, @@ -499,7 +499,7 @@ export const applicativeIOEither: Applicative2 = { * @category instances * @since 2.7.0 */ -export const monadIOEither: Monad2 = { +export const Monad: Monad2 = { URI, map: map_, ap: ap_, @@ -511,7 +511,7 @@ export const monadIOEither: Monad2 = { * @category instances * @since 2.7.0 */ -export const altIOEither: Alt2 = { +export const Alt: Alt2 = { URI, map: map_, alt: alt_ @@ -521,7 +521,7 @@ export const altIOEither: Alt2 = { * @category instances * @since 2.7.0 */ -export const monadIOIOEither: MonadIO2 = { +export const MonadIO: MonadIO2 = { URI, map: map_, ap: ap_, @@ -534,7 +534,7 @@ export const monadIOIOEither: MonadIO2 = { * @category instances * @since 2.7.0 */ -export const monadThrowIOEither: MonadThrow2 = { +export const MonadThrow: MonadThrow2 = { URI, map: map_, ap: ap_, diff --git a/src/Identity.ts b/src/Identity.ts index 7185bfbd0..64f848a30 100644 --- a/src/Identity.ts +++ b/src/Identity.ts @@ -2,7 +2,7 @@ * @since 2.0.0 */ import { Alt1 } from './Alt' -import { Applicative, Applicative1 } from './Applicative' +import { Applicative as ApplicativeHKT, Applicative1 } from './Applicative' import { ChainRec1, tailRec } from './ChainRec' import { Comonad1 } from './Comonad' import { Eq } from './Eq' @@ -38,7 +38,7 @@ const foldMap_: Foldable1['foldMap'] = (_) => (fa, f) => f(fa) const reduceRight_: Foldable1['reduceRight'] = (fa, b, f) => f(fa, b) const alt_: Alt1['alt'] = id const extend_: Extend1['extend'] = (wa, f) => f(wa) -const traverse_ = (F: Applicative) => (ta: Identity, f: (a: A) => HKT): HKT> => +const traverse_ = (F: ApplicativeHKT) => (ta: Identity, f: (a: A) => HKT): HKT> => F.map(f(ta), id) const chainRec_: ChainRec1['chainRec'] = tailRec @@ -50,7 +50,7 @@ const chainRec_: ChainRec1['chainRec'] = tailRec * @since 2.6.3 */ export const traverse: PipeableTraverse1 = ( - F: Applicative + F: ApplicativeHKT ): ((f: (a: A) => HKT) => (ta: Identity) => HKT>) => { const traverseF = traverse_(F) return (f) => (ta) => traverseF(ta, f) @@ -59,7 +59,7 @@ export const traverse: PipeableTraverse1 = ( /** * @since 2.6.3 */ -export const sequence: Traversable1['sequence'] = (F: Applicative) => ( +export const sequence: Traversable1['sequence'] = (F: ApplicativeHKT) => ( ta: Identity> ): HKT> => { return F.map(ta, id) @@ -224,7 +224,7 @@ export const getEq: (E: Eq) => Eq> = id * @category instances * @since 2.7.0 */ -export const functorIdentity: Functor1 = { +export const Functor: Functor1 = { URI, map: map_ } @@ -233,7 +233,7 @@ export const functorIdentity: Functor1 = { * @category instances * @since 2.7.0 */ -export const applicativeIdentity: Applicative1 = { +export const Applicative: Applicative1 = { URI, map: map_, ap: ap_, @@ -244,7 +244,7 @@ export const applicativeIdentity: Applicative1 = { * @category instances * @since 2.7.0 */ -export const monadIdentity: Monad1 = { +export const Monad: Monad1 = { URI, map: map_, ap: ap_, @@ -256,7 +256,7 @@ export const monadIdentity: Monad1 = { * @category instances * @since 2.7.0 */ -export const foldableIdentity: Foldable1 = { +export const Foldable: Foldable1 = { URI, reduce: reduce_, foldMap: foldMap_, @@ -267,7 +267,7 @@ export const foldableIdentity: Foldable1 = { * @category instances * @since 2.7.0 */ -export const traversableIdentity: Traversable1 = { +export const Traversable: Traversable1 = { URI, map: map_, reduce: reduce_, @@ -281,7 +281,7 @@ export const traversableIdentity: Traversable1 = { * @category instances * @since 2.7.0 */ -export const altIdentity: Alt1 = { +export const Alt: Alt1 = { URI, map: map_, alt: alt_ @@ -291,7 +291,7 @@ export const altIdentity: Alt1 = { * @category instances * @since 2.7.0 */ -export const comonadIdentity: Comonad1 = { +export const Comonad: Comonad1 = { URI, map: map_, extend: extend_, @@ -302,7 +302,7 @@ export const comonadIdentity: Comonad1 = { * @category instances * @since 2.7.0 */ -export const chainRecIdentity: ChainRec1 = { +export const ChainRec: ChainRec1 = { URI, map: map_, ap: ap_, @@ -310,10 +310,10 @@ export const chainRecIdentity: ChainRec1 = { chainRec: chainRec_ } +// TODO: remove in v3 /** * @category instances * @since 2.0.0 - * @deprecated */ export const identity: Monad1 & Foldable1 & Traversable1 & Alt1 & Comonad1 & ChainRec1 = { URI, diff --git a/src/Map.ts b/src/Map.ts index 69fb40891..cc42b583b 100644 --- a/src/Map.ts +++ b/src/Map.ts @@ -239,11 +239,11 @@ export function fromFoldable(E: Eq, M: Magma, F: Foldable): (f // non-pipeables // ------------------------------------------------------------------------------------- -const map__: Functor2['map'] = RM.functorMap.map as any -const filter_: Filterable2['filter'] = RM.filterableMap.filter as any -const filterMap_: Filterable2['filterMap'] = RM.filterableMap.filterMap as any -const partition_: Filterable2['partition'] = RM.filterableMap.partition as any -const partitionMap_: Filterable2['partitionMap'] = RM.filterableMap.partitionMap as any +const map__: Functor2['map'] = RM.Functor.map as any +const filter_: Filterable2['filter'] = RM.Filterable.filter as any +const filterMap_: Filterable2['filterMap'] = RM.Filterable.filterMap as any +const partition_: Filterable2['partition'] = RM.Filterable.partition as any +const partitionMap_: Filterable2['partitionMap'] = RM.Filterable.partitionMap as any // ------------------------------------------------------------------------------------- // pipeables @@ -346,7 +346,7 @@ export const getWitherable: ( * @category instances * @since 2.7.0 */ -export const functorMap: Functor2 = { +export const Functor: Functor2 = { URI, map: map__ } @@ -355,7 +355,7 @@ export const functorMap: Functor2 = { * @category instances * @since 2.7.0 */ -export const compactableMap: Compactable2 = { +export const Compactable: Compactable2 = { URI, compact, separate @@ -365,7 +365,7 @@ export const compactableMap: Compactable2 = { * @category instances * @since 2.7.0 */ -export const filterableMap: Filterable2 = { +export const Filterable: Filterable2 = { URI, map: map__, compact, @@ -381,4 +381,4 @@ export const filterableMap: Filterable2 = { * @category instances * @since 2.0.0 */ -export const map_: Filterable2 = filterableMap +export const map_: Filterable2 = Filterable diff --git a/src/NonEmptyArray.ts b/src/NonEmptyArray.ts index 92e9c4bd2..82311a258 100644 --- a/src/NonEmptyArray.ts +++ b/src/NonEmptyArray.ts @@ -318,25 +318,24 @@ export const unzip: (as: NonEmptyArray<[A, B]>) => [NonEmptyArray, NonE // non-pipeables // ------------------------------------------------------------------------------------- -const map_: Monad1['map'] = RNEA.functorNonEmptyArray.map as any -const mapWithIndex_: FunctorWithIndex1['mapWithIndex'] = RNEA.functorWithIndexNonEmptyArray - .mapWithIndex as any -const ap_: Monad1['ap'] = RNEA.applicativeNonEmptyArray.ap as any -const chain_: Monad1['chain'] = RNEA.monadNonEmptyArray.chain as any -const extend_: Extend1['extend'] = RNEA.comonadNonEmptyArray.extend as any -const reduce_: Foldable1['reduce'] = RNEA.foldableNonEmptyArray.reduce as any -const foldMap_: Foldable1['foldMap'] = RNEA.foldableNonEmptyArray.foldMap as any -const reduceRight_: Foldable1['reduceRight'] = RNEA.foldableNonEmptyArray.reduceRight as any -const traverse_: Traversable1['traverse'] = RNEA.traversableNonEmptyArray.traverse as any -const alt_: Alt1['alt'] = RNEA.altNonEmptyArray.alt as any -const reduceWithIndex_: FoldableWithIndex1['reduceWithIndex'] = RNEA.foldableWithIndexNonEmptyArray +const map_: Monad1['map'] = RNEA.Functor.map as any +const mapWithIndex_: FunctorWithIndex1['mapWithIndex'] = RNEA.FunctorWithIndex.mapWithIndex as any +const ap_: Monad1['ap'] = RNEA.Applicative.ap as any +const chain_: Monad1['chain'] = RNEA.Monad.chain as any +const extend_: Extend1['extend'] = RNEA.Comonad.extend as any +const reduce_: Foldable1['reduce'] = RNEA.Foldable.reduce as any +const foldMap_: Foldable1['foldMap'] = RNEA.Foldable.foldMap as any +const reduceRight_: Foldable1['reduceRight'] = RNEA.Foldable.reduceRight as any +const traverse_: Traversable1['traverse'] = RNEA.Traversable.traverse as any +const alt_: Alt1['alt'] = RNEA.Alt.alt as any +const reduceWithIndex_: FoldableWithIndex1['reduceWithIndex'] = RNEA.FoldableWithIndex .reduceWithIndex as any -const foldMapWithIndex_: FoldableWithIndex1['foldMapWithIndex'] = RNEA.foldableWithIndexNonEmptyArray +const foldMapWithIndex_: FoldableWithIndex1['foldMapWithIndex'] = RNEA.FoldableWithIndex .foldMapWithIndex as any -const reduceRightWithIndex_: FoldableWithIndex1['reduceRightWithIndex'] = RNEA - .foldableWithIndexNonEmptyArray.reduceRightWithIndex as any -const traverseWithIndex_: TraversableWithIndex1['traverseWithIndex'] = RNEA - .traversableWithIndexNonEmptyArray.traverseWithIndex as any +const reduceRightWithIndex_: FoldableWithIndex1['reduceRightWithIndex'] = RNEA.FoldableWithIndex + .reduceRightWithIndex as any +const traverseWithIndex_: TraversableWithIndex1['traverseWithIndex'] = RNEA.TraversableWithIndex + .traverseWithIndex as any // ------------------------------------------------------------------------------------- // pipeables @@ -518,7 +517,7 @@ declare module './HKT' { * @category instances * @since 2.7.0 */ -export const functorNonEmptyArray: Functor1 = { +export const Functor: Functor1 = { URI, map: map_ } @@ -527,7 +526,7 @@ export const functorNonEmptyArray: Functor1 = { * @category instances * @since 2.7.0 */ -export const functorWithIndexNonEmptyArray: FunctorWithIndex1 = { +export const FunctorWithIndex: FunctorWithIndex1 = { URI, map: map_, mapWithIndex: mapWithIndex_ @@ -537,7 +536,7 @@ export const functorWithIndexNonEmptyArray: FunctorWithIndex1 = { * @category instances * @since 2.7.0 */ -export const applicativeNonEmptyArray: Applicative1 = { +export const Applicative: Applicative1 = { URI, map: map_, ap: ap_, @@ -548,7 +547,7 @@ export const applicativeNonEmptyArray: Applicative1 = { * @category instances * @since 2.7.0 */ -export const monadNonEmptyArray: Monad1 = { +export const Monad: Monad1 = { URI, map: map_, ap: ap_, @@ -560,7 +559,7 @@ export const monadNonEmptyArray: Monad1 = { * @category instances * @since 2.7.0 */ -export const foldableNonEmptyArray: Foldable1 = { +export const Foldable: Foldable1 = { URI, reduce: reduce_, foldMap: foldMap_, @@ -571,7 +570,7 @@ export const foldableNonEmptyArray: Foldable1 = { * @category instances * @since 2.7.0 */ -export const foldableWithIndexNonEmptyArray: FoldableWithIndex1 = { +export const FoldableWithIndex: FoldableWithIndex1 = { URI, reduce: reduce_, foldMap: foldMap_, @@ -585,7 +584,7 @@ export const foldableWithIndexNonEmptyArray: FoldableWithIndex1 = { * @category instances * @since 2.7.0 */ -export const traversableNonEmptyArray: Traversable1 = { +export const Traversable: Traversable1 = { URI, map: map_, reduce: reduce_, @@ -599,7 +598,7 @@ export const traversableNonEmptyArray: Traversable1 = { * @category instances * @since 2.7.0 */ -export const traversableWithIndexNonEmptyArray: TraversableWithIndex1 = { +export const TraversableWithIndex: TraversableWithIndex1 = { URI, map: map_, mapWithIndex: mapWithIndex_, @@ -618,7 +617,7 @@ export const traversableWithIndexNonEmptyArray: TraversableWithIndex1 = { +export const Alt: Alt1 = { URI, map: map_, alt: alt_ @@ -628,7 +627,7 @@ export const altNonEmptyArray: Alt1 = { * @category instances * @since 2.7.0 */ -export const comonadNonEmptyArray: Comonad1 = { +export const Comonad: Comonad1 = { URI, map: map_, extend: extend_, diff --git a/src/Option.ts b/src/Option.ts index 1056dd17f..80434e9ef 100644 --- a/src/Option.ts +++ b/src/Option.ts @@ -14,7 +14,7 @@ */ import { Alt1 } from './Alt' import { Alternative1 } from './Alternative' -import { Applicative, Applicative1 } from './Applicative' +import { Applicative as ApplicativeHKT, Applicative1 } from './Applicative' import { Compactable1, Separated } from './Compactable' import { Either } from './Either' import { Eq } from './Eq' @@ -388,7 +388,7 @@ const chain_: Monad1['chain'] = (ma, f) => (isNone(ma) ? none : f(ma.value) const reduce_: Foldable1['reduce'] = (fa, b, f) => (isNone(fa) ? b : f(b, fa.value)) const foldMap_: Foldable1['foldMap'] = (M) => (fa, f) => (isNone(fa) ? M.empty : f(fa.value)) const reduceRight_: Foldable1['reduceRight'] = (fa, b, f) => (isNone(fa) ? b : f(fa.value, b)) -const traverse_ = (F: Applicative) => (ta: Option, f: (a: A) => HKT): HKT> => { +const traverse_ = (F: ApplicativeHKT) => (ta: Option, f: (a: A) => HKT): HKT> => { return isNone(ta) ? F.of(none) : F.map(f(ta.value), some) } const alt_: Alt1['alt'] = (fa, that) => (isNone(fa) ? that() : fa) @@ -403,9 +403,9 @@ const partition_ = (fa: Option, predicate: Predicate): Separated, f: (a: A) => HKT>): HKT> => +const wither_ = (F: ApplicativeHKT) => (fa: Option, f: (a: A) => HKT>): HKT> => isNone(fa) ? F.of(none) : f(fa.value) -const wilt_ = (F: Applicative) => ( +const wilt_ = (F: ApplicativeHKT) => ( fa: Option, f: (a: A) => HKT> ): HKT, Option>> => { @@ -574,7 +574,7 @@ export const reduceRight: (b: B, f: (a: A, b: B) => B) => (fa: Option) * @category Compactable * @since 2.0.0 */ -export const compact: (fa: Option>) => Option = (ma) => chain_(ma, identity) +export const compact: (fa: Option>) => Option = flatten const defaultSeparate = { left: none, right: none } @@ -628,7 +628,7 @@ export const partitionMap: ( * @since 2.6.3 */ export const traverse: PipeableTraverse1 = ( - F: Applicative + F: ApplicativeHKT ): ((f: (a: A) => HKT) => (ta: Option) => HKT>) => { const traverseF = traverse_(F) return (f) => (ta) => traverseF(ta, f) @@ -638,7 +638,7 @@ export const traverse: PipeableTraverse1 = ( * @category Traversable * @since 2.6.3 */ -export const sequence: Traversable1['sequence'] = (F: Applicative) => ( +export const sequence: Traversable1['sequence'] = (F: ApplicativeHKT) => ( ta: Option> ): HKT> => { return isNone(ta) ? F.of(none) : F.map(ta.value, some) @@ -649,7 +649,7 @@ export const sequence: Traversable1['sequence'] = (F: Applicative) => * @since 2.6.5 */ export const wither: PipeableWither1 = ( - F: Applicative + F: ApplicativeHKT ): ((f: (a: A) => HKT>) => (ta: Option) => HKT>) => { const witherF = wither_(F) return (f) => (ta) => witherF(ta, f) @@ -660,7 +660,7 @@ export const wither: PipeableWither1 = ( * @since 2.6.5 */ export const wilt: PipeableWilt1 = ( - F: Applicative + F: ApplicativeHKT ): ((f: (a: A) => HKT>) => (wa: Option) => HKT, Option>>) => { const wiltF = wilt_(F) return (f) => (ta) => wiltF(ta, f) @@ -880,7 +880,7 @@ export function getMonoid(S: Semigroup): Monoid> { * @category instances * @since 2.7.0 */ -export const functorOption: Functor1 = { +export const Functor: Functor1 = { URI, map: map_ } @@ -889,7 +889,7 @@ export const functorOption: Functor1 = { * @category instances * @since 2.7.0 */ -export const applicativeOption: Applicative1 = { +export const Applicative: Applicative1 = { URI, map: map_, ap: ap_, @@ -900,7 +900,7 @@ export const applicativeOption: Applicative1 = { * @category instances * @since 2.7.0 */ -export const monadOption: Monad1 = { +export const Monad: Monad1 = { URI, map: map_, ap: ap_, @@ -912,7 +912,7 @@ export const monadOption: Monad1 = { * @category instances * @since 2.7.0 */ -export const foldableOption: Foldable1 = { +export const Foldable: Foldable1 = { URI, reduce: reduce_, foldMap: foldMap_, @@ -923,7 +923,7 @@ export const foldableOption: Foldable1 = { * @category instances * @since 2.7.0 */ -export const altOption: Alt1 = { +export const Alt: Alt1 = { URI, map: map_, alt: alt_ @@ -933,7 +933,7 @@ export const altOption: Alt1 = { * @category instances * @since 2.7.0 */ -export const alternativeOption: Alternative1 = { +export const Alternative: Alternative1 = { URI, map: map_, ap: ap_, @@ -946,7 +946,7 @@ export const alternativeOption: Alternative1 = { * @category instances * @since 2.7.0 */ -export const extendOption: Extend1 = { +export const Extend: Extend1 = { URI, map: map_, extend: extend_ @@ -956,7 +956,7 @@ export const extendOption: Extend1 = { * @category instances * @since 2.7.0 */ -export const compactableOption: Compactable1 = { +export const Compactable: Compactable1 = { URI, compact, separate @@ -966,7 +966,7 @@ export const compactableOption: Compactable1 = { * @category instances * @since 2.7.0 */ -export const filterableOption: Filterable1 = { +export const Filterable: Filterable1 = { URI, map: map_, compact, @@ -981,7 +981,7 @@ export const filterableOption: Filterable1 = { * @category instances * @since 2.7.0 */ -export const traversableOption: Traversable1 = { +export const Traversable: Traversable1 = { URI, map: map_, reduce: reduce_, @@ -995,7 +995,7 @@ export const traversableOption: Traversable1 = { * @category instances * @since 2.7.0 */ -export const witherableOption: Witherable1 = { +export const Witherable: Witherable1 = { URI, map: map_, reduce: reduce_, @@ -1017,7 +1017,7 @@ export const witherableOption: Witherable1 = { * @category instances * @since 2.7.0 */ -export const monadThrowOption: MonadThrow1 = { +export const MonadThrow: MonadThrow1 = { URI, map: map_, ap: ap_, diff --git a/src/OptionT.ts b/src/OptionT.ts index 774f0bdb6..7dbc03d1c 100644 --- a/src/OptionT.ts +++ b/src/OptionT.ts @@ -10,7 +10,7 @@ import { } from './Applicative' import { HKT, Kind, Kind2, URIS, URIS2 } from './HKT' import { Monad, Monad1, Monad2, Monad2C } from './Monad' -import { fold, none, Option, applicativeOption, some, URI } from './Option' +import { fold, none, Option, Applicative, some, URI } from './Option' import { Lazy } from './function' // TODO: remove module in v3 @@ -97,7 +97,7 @@ export function getOptionM(M: Monad2C): OptionM2C(M: Monad1): OptionM1 export function getOptionM(M: Monad): OptionM export function getOptionM(M: Monad): OptionM { - const A = getApplicativeComposition(M, applicativeOption) + const A = getApplicativeComposition(M, Applicative) const fnone = M.of(none) return { diff --git a/src/Ord.ts b/src/Ord.ts index d6786af39..a933f46d3 100644 --- a/src/Ord.ts +++ b/src/Ord.ts @@ -328,14 +328,14 @@ declare module './HKT' { * @category instances * @since 2.7.0 */ -export const contravariantOrd: Contravariant1 = { +export const Contravariant: Contravariant1 = { URI, contramap: contramap_ } +// TODO: remove in v3 /** * @category instances * @since 2.0.0 - * @deprecated */ -export const ord: Contravariant1 = contravariantOrd +export const ord: Contravariant1 = Contravariant diff --git a/src/Reader.ts b/src/Reader.ts index 2ea4d8380..78db9a813 100644 --- a/src/Reader.ts +++ b/src/Reader.ts @@ -239,7 +239,7 @@ export function getMonoid(M: Monoid): Monoid> { * @category instances * @since 2.7.0 */ -export const functorReader: Functor2 = { +export const Functor: Functor2 = { URI, map: map_ } @@ -248,7 +248,7 @@ export const functorReader: Functor2 = { * @category instances * @since 2.7.0 */ -export const applicativeReader: Applicative2 = { +export const Applicative: Applicative2 = { URI, map: map_, ap: ap_, @@ -259,7 +259,7 @@ export const applicativeReader: Applicative2 = { * @category instances * @since 2.7.0 */ -export const monadReader: Monad2 = { +export const Monad: Monad2 = { URI, map: map_, of, @@ -271,7 +271,7 @@ export const monadReader: Monad2 = { * @category instances * @since 2.7.0 */ -export const profunctorReader: Profunctor2 = { +export const Profunctor: Profunctor2 = { URI, map: map_, promap: promap_ @@ -281,7 +281,7 @@ export const profunctorReader: Profunctor2 = { * @category instances * @since 2.7.0 */ -export const categoryReader: Category2 = { +export const Category: Category2 = { URI, compose: compose_, id @@ -290,7 +290,7 @@ export const categoryReader: Category2 = { /** * @internal instances */ -export const strongReader: Strong2 = { +export const Strong: Strong2 = { URI, map: map_, promap: promap_, @@ -301,7 +301,7 @@ export const strongReader: Strong2 = { /** * @internal instances */ -export const choiceReader: Choice2 = { +export const Choice: Choice2 = { URI, map: map_, promap: promap_, @@ -313,7 +313,6 @@ export const choiceReader: Choice2 = { /** * @category instances * @since 2.0.0 - * @deprecated */ export const reader: Monad2 & Profunctor2 & Category2 & Strong2 & Choice2 = { URI, diff --git a/src/ReaderEither.ts b/src/ReaderEither.ts index 99d2e116a..eada6e096 100644 --- a/src/ReaderEither.ts +++ b/src/ReaderEither.ts @@ -259,7 +259,7 @@ export const ap: ( fa: ReaderEither ) => (fab: ReaderEither B>) => ReaderEither = /*#__PURE__*/ - apComposition(R.applicativeReader, E.applicativeEither) + apComposition(R.Applicative, E.Applicative) /** * Combine two effectful actions, keeping only the result of the first. @@ -411,7 +411,7 @@ export function getApplyMonoid(M: Monoid): Monoid(SE: Semigroup): Applicative3C { - const ap = apComposition(R.applicativeReader, E.getApplicativeValidation(SE)) + const ap = apComposition(R.Applicative, E.getApplicativeValidation(SE)) return { URI, _E: undefined as any, @@ -463,7 +463,7 @@ export function getReaderValidation( * @category instances * @since 2.7.0 */ -export const functorReaderEither: Functor3 = { +export const Functor: Functor3 = { URI, map: map_ } @@ -472,7 +472,7 @@ export const functorReaderEither: Functor3 = { * @category instances * @since 2.7.0 */ -export const applicativeReaderEither: Applicative3 = { +export const Applicative: Applicative3 = { URI, map: map_, ap: ap_, @@ -483,7 +483,7 @@ export const applicativeReaderEither: Applicative3 = { * @category instances * @since 2.7.0 */ -export const monadReaderEither: Monad3 = { +export const Monad: Monad3 = { URI, map: map_, ap: ap_, @@ -495,7 +495,7 @@ export const monadReaderEither: Monad3 = { * @category instances * @since 2.7.0 */ -export const bifunctorReaderEither: Bifunctor3 = { +export const Bifunctor: Bifunctor3 = { URI, bimap: bimap_, mapLeft: mapLeft_ @@ -505,7 +505,7 @@ export const bifunctorReaderEither: Bifunctor3 = { * @category instances * @since 2.7.0 */ -export const altReaderEither: Alt3 = { +export const Alt: Alt3 = { URI, map: map_, alt: alt_ @@ -515,7 +515,7 @@ export const altReaderEither: Alt3 = { * @category instances * @since 2.7.0 */ -export const monadThrowReaderEither: MonadThrow3 = { +export const MonadThrow: MonadThrow3 = { URI, map: map_, ap: ap_, diff --git a/src/ReaderTask.ts b/src/ReaderTask.ts index 47bcd8e52..60c2be9e0 100644 --- a/src/ReaderTask.ts +++ b/src/ReaderTask.ts @@ -260,7 +260,7 @@ export function getMonoid(M: Monoid): Monoid> { * @category instances * @since 2.7.0 */ -export const functorReaderTask: Functor2 = { +export const Functor: Functor2 = { URI, map: map_ } @@ -269,7 +269,7 @@ export const functorReaderTask: Functor2 = { * @category instances * @since 2.7.0 */ -export const applicativeReaderTaskPar: Applicative2 = { +export const ApplicativePar: Applicative2 = { URI, map: map_, ap: apPar_, @@ -280,7 +280,7 @@ export const applicativeReaderTaskPar: Applicative2 = { * @category instances * @since 2.7.0 */ -export const applicativeReaderTaskSeq: Applicative2 = { +export const ApplicativeSeq: Applicative2 = { URI, map: map_, ap: apSeq_, @@ -290,7 +290,7 @@ export const applicativeReaderTaskSeq: Applicative2 = { /** * @internal */ -export const monadReaderTask: Monad2 = { +export const Monad: Monad2 = { URI, map: map_, of, diff --git a/src/ReaderTaskEither.ts b/src/ReaderTaskEither.ts index 69c8c96c1..79eba55bb 100644 --- a/src/ReaderTaskEither.ts +++ b/src/ReaderTaskEither.ts @@ -599,7 +599,7 @@ export function getApplyMonoid(M: Monoid): Monoid(A: Apply1, SE: Semigroup): Applicative3C { - const ap = apComposition(R.applicativeReader, TE.getApplicativeTaskValidation(A, SE)) + const ap = apComposition(R.Applicative, TE.getApplicativeTaskValidation(A, SE)) return { URI, _E: undefined as any, @@ -631,7 +631,7 @@ export function getAltReaderTaskValidation(SE: Semigroup): Alt3C { export function getReaderTaskValidation( SE: Semigroup ): Monad3C & Bifunctor3 & Alt3C & MonadTask3C & MonadThrow3C { - const applicativeReaderTaskValidation = getApplicativeReaderTaskValidation(T.applicativeTaskPar, SE) + const applicativeReaderTaskValidation = getApplicativeReaderTaskValidation(T.ApplicativePar, SE) const altReaderTaskValidation = getAltReaderTaskValidation(SE) return { URI, @@ -653,7 +653,7 @@ export function getReaderTaskValidation( * @category instances * @since 2.7.0 */ -export const functorReaderTaskEither: Functor3 = { +export const Functor: Functor3 = { URI, map: map_ } @@ -662,7 +662,7 @@ export const functorReaderTaskEither: Functor3 = { * @category instances * @since 2.7.0 */ -export const applicativeReaderTaskEitherPar: Applicative3 = { +export const ApplicativePar: Applicative3 = { URI, map: map_, ap: apPar_, @@ -673,7 +673,7 @@ export const applicativeReaderTaskEitherPar: Applicative3 = { * @category instances * @since 2.7.0 */ -export const applicativeReaderTaskEitherSeq: Applicative3 = { +export const ApplicativeSeq: Applicative3 = { URI, map: map_, ap: apSeq_, @@ -684,7 +684,7 @@ export const applicativeReaderTaskEitherSeq: Applicative3 = { * @category instances * @since 2.7.0 */ -export const bifunctorReaderTaskEither: Bifunctor3 = { +export const Bifunctor: Bifunctor3 = { URI, bimap: bimap_, mapLeft: mapLeft_ @@ -694,7 +694,7 @@ export const bifunctorReaderTaskEither: Bifunctor3 = { * @category instances * @since 2.7.0 */ -export const altReaderTaskEither: Alt3 = { +export const Alt: Alt3 = { URI, map: map_, alt: alt_ diff --git a/src/ReadonlyArray.ts b/src/ReadonlyArray.ts index 500227e73..96b5a02d9 100644 --- a/src/ReadonlyArray.ts +++ b/src/ReadonlyArray.ts @@ -3,7 +3,7 @@ */ import { Alt1 } from './Alt' import { Alternative1 } from './Alternative' -import { Applicative, Applicative1 } from './Applicative' +import { Applicative as ApplicativeHKT, Applicative1 } from './Applicative' import { Compactable1, Separated } from './Compactable' import { Either } from './Either' import { Eq } from './Eq' @@ -1547,12 +1547,12 @@ const filterWithIndex_ = ( } const extend_: Extend1['extend'] = (fa, f) => fa.map((_, i, as) => f(as.slice(i))) const traverse_ = ( - F: Applicative + F: ApplicativeHKT ): ((ta: ReadonlyArray, f: (a: A) => HKT) => HKT>) => { const traverseWithIndexF = traverseWithIndex_(F) return (ta, f) => traverseWithIndexF(ta, (_, a) => f(a)) } -const traverseWithIndex_ = (F: Applicative) => ( +const traverseWithIndex_ = (F: ApplicativeHKT) => ( ta: ReadonlyArray, f: (i: number, a: A) => HKT ): HKT> => { @@ -1564,13 +1564,13 @@ const traverseWithIndex_ = (F: Applicative) => ( ) } const wither_ = ( - F: Applicative + F: ApplicativeHKT ): ((ta: ReadonlyArray, f: (a: A) => HKT>) => HKT>) => { const traverseF = traverse_(F) return (wa, f) => F.map(traverseF(wa, f), compact) } const wilt_ = ( - F: Applicative + F: ApplicativeHKT ): (( wa: ReadonlyArray, f: (a: A) => HKT> @@ -1845,7 +1845,7 @@ export const reduceRightWithIndex: (b: B, f: (i: number, a: A, b: B) => B) * @since 2.6.3 */ export const traverse: PipeableTraverse1 = ( - F: Applicative + F: ApplicativeHKT ): ((f: (a: A) => HKT) => (ta: ReadonlyArray) => HKT>) => { const traverseF = traverse_(F) return (f) => (ta) => traverseF(ta, f) @@ -1855,7 +1855,7 @@ export const traverse: PipeableTraverse1 = ( * @category Traversable * @since 2.6.3 */ -export const sequence: Traversable1['sequence'] = (F: Applicative) => ( +export const sequence: Traversable1['sequence'] = (F: ApplicativeHKT) => ( ta: ReadonlyArray> ): HKT> => { return reduce_(ta, F.of(zero()), (fas, fa) => @@ -1871,7 +1871,7 @@ export const sequence: Traversable1['sequence'] = (F: Applicative) => * @since 2.6.3 */ export const traverseWithIndex: PipeableTraverseWithIndex1 = ( - F: Applicative + F: ApplicativeHKT ): ((f: (i: number, a: A) => HKT) => (ta: ReadonlyArray) => HKT>) => { const traverseWithIndexF = traverseWithIndex_(F) return (f) => (ta) => traverseWithIndexF(ta, f) @@ -1882,7 +1882,7 @@ export const traverseWithIndex: PipeableTraverseWithIndex1 = ( * @since 2.6.5 */ export const wither: PipeableWither1 = ( - F: Applicative + F: ApplicativeHKT ): ((f: (a: A) => HKT>) => (ta: ReadonlyArray) => HKT>) => { const witherF = wither_(F) return (f) => (ta) => witherF(ta, f) @@ -1893,7 +1893,7 @@ export const wither: PipeableWither1 = ( * @since 2.6.5 */ export const wilt: PipeableWilt1 = ( - F: Applicative + F: ApplicativeHKT ): (( f: (a: A) => HKT> ) => (wa: ReadonlyArray) => HKT, ReadonlyArray>>) => { @@ -1957,7 +1957,7 @@ export const functorArray: Functor1 = { * @category instances * @since 2.7.0 */ -export const functorWithIndexArray: FunctorWithIndex1 = { +export const Functor: FunctorWithIndex1 = { URI, map: map_, mapWithIndex: mapWithIndex_ @@ -1967,7 +1967,7 @@ export const functorWithIndexArray: FunctorWithIndex1 = { * @category instances * @since 2.7.0 */ -export const applicativeArray: Applicative1 = { +export const Applicative: Applicative1 = { URI, map: map_, ap: ap_, @@ -1978,7 +1978,7 @@ export const applicativeArray: Applicative1 = { * @category instances * @since 2.7.0 */ -export const monadArray: Monad1 = { +export const Monad: Monad1 = { URI, map: map_, ap: ap_, @@ -1990,7 +1990,7 @@ export const monadArray: Monad1 = { * @category instances * @since 2.7.0 */ -export const unfoldableArray: Unfoldable1 = { +export const Unfoldable: Unfoldable1 = { URI, unfold } @@ -1999,7 +1999,7 @@ export const unfoldableArray: Unfoldable1 = { * @category instances * @since 2.7.0 */ -export const altArray: Alt1 = { +export const Alt: Alt1 = { URI, map: map_, alt: alt_ @@ -2009,7 +2009,7 @@ export const altArray: Alt1 = { * @category instances * @since 2.7.0 */ -export const alternativeArray: Alternative1 = { +export const Alternative: Alternative1 = { URI, map: map_, ap: ap_, @@ -2022,7 +2022,7 @@ export const alternativeArray: Alternative1 = { * @category instances * @since 2.7.0 */ -export const extendArray: Extend1 = { +export const Extend: Extend1 = { URI, map: map_, extend: extend_ @@ -2032,7 +2032,7 @@ export const extendArray: Extend1 = { * @category instances * @since 2.7.0 */ -export const compactableArray: Compactable1 = { +export const Compactable: Compactable1 = { URI, compact, separate @@ -2042,7 +2042,7 @@ export const compactableArray: Compactable1 = { * @category instances * @since 2.7.0 */ -export const filterableArray: Filterable1 = { +export const Filterable: Filterable1 = { URI, map: map_, compact, @@ -2057,7 +2057,7 @@ export const filterableArray: Filterable1 = { * @category instances * @since 2.7.0 */ -export const filterableWithIndexArray: FilterableWithIndex1 = { +export const FilterableWithIndex: FilterableWithIndex1 = { URI, map: map_, mapWithIndex: mapWithIndex_, @@ -2077,7 +2077,7 @@ export const filterableWithIndexArray: FilterableWithIndex1 = { * @category instances * @since 2.7.0 */ -export const foldableArray: Foldable1 = { +export const Foldable: Foldable1 = { URI, reduce: reduce_, foldMap: foldMap_, @@ -2088,7 +2088,7 @@ export const foldableArray: Foldable1 = { * @category instances * @since 2.7.0 */ -export const foldableWithIndexArray: FoldableWithIndex1 = { +export const FoldableWithIndex: FoldableWithIndex1 = { URI, reduce: reduce_, foldMap: foldMap_, @@ -2102,7 +2102,7 @@ export const foldableWithIndexArray: FoldableWithIndex1 = { * @category instances * @since 2.7.0 */ -export const traversableArray: Traversable1 = { +export const Traversable: Traversable1 = { URI, map: map_, reduce: reduce_, @@ -2116,7 +2116,7 @@ export const traversableArray: Traversable1 = { * @category instances * @since 2.7.0 */ -export const traversableWithIndexArray: TraversableWithIndex1 = { +export const TraversableWithIndex: TraversableWithIndex1 = { URI, map: map_, mapWithIndex: mapWithIndex_, @@ -2135,7 +2135,7 @@ export const traversableWithIndexArray: TraversableWithIndex1 = { * @category instances * @since 2.7.0 */ -export const witherableArray: Witherable1 = { +export const Witherable: Witherable1 = { URI, map: map_, compact, diff --git a/src/ReadonlyMap.ts b/src/ReadonlyMap.ts index 1397b91a3..350a9017a 100644 --- a/src/ReadonlyMap.ts +++ b/src/ReadonlyMap.ts @@ -860,7 +860,7 @@ export function getWitherable(O: Ord): Witherable2C & TraversableW * @category instances * @since 2.7.0 */ -export const functorMap: Functor2 = { +export const Functor: Functor2 = { URI, map: map_ } @@ -869,7 +869,7 @@ export const functorMap: Functor2 = { * @category instances * @since 2.7.0 */ -export const compactableMap: Compactable2 = { +export const Compactable: Compactable2 = { URI, compact, separate @@ -879,7 +879,7 @@ export const compactableMap: Compactable2 = { * @category instances * @since 2.7.0 */ -export const filterableMap: Filterable2 = { +export const Filterable: Filterable2 = { URI, map: map_, compact, diff --git a/src/ReadonlyNonEmptyArray.ts b/src/ReadonlyNonEmptyArray.ts index db62f5493..df29a6168 100644 --- a/src/ReadonlyNonEmptyArray.ts +++ b/src/ReadonlyNonEmptyArray.ts @@ -377,22 +377,21 @@ export const unzip: ( // ------------------------------------------------------------------------------------- const map_: Functor1['map'] = RA.functorArray.map as any -const mapWithIndex_: FunctorWithIndex1['mapWithIndex'] = RA.functorWithIndexArray.mapWithIndex as any -const ap_: Apply1['ap'] = RA.applicativeArray.ap as any -const chain_: Monad1['chain'] = RA.monadArray.chain as any -const extend_: Extend1['extend'] = RA.extendArray.extend as any -const reduce_: Foldable1['reduce'] = RA.foldableArray.reduce as any -const foldMap_: Foldable1['foldMap'] = RA.foldableArray.foldMap as any -const reduceRight_: Foldable1['reduceRight'] = RA.foldableArray.reduceRight as any -const traverse_: Traversable1['traverse'] = RA.traversableArray.traverse as any -const alt_: Alt1['alt'] = RA.altArray.alt as any -const reduceWithIndex_: FoldableWithIndex1['reduceWithIndex'] = RA.foldableWithIndexArray - .reduceWithIndex as any -const foldMapWithIndex_: FoldableWithIndex1['foldMapWithIndex'] = RA.foldableWithIndexArray +const mapWithIndex_: FunctorWithIndex1['mapWithIndex'] = RA.Functor.mapWithIndex as any +const ap_: Apply1['ap'] = RA.Applicative.ap as any +const chain_: Monad1['chain'] = RA.Monad.chain as any +const extend_: Extend1['extend'] = RA.Extend.extend as any +const reduce_: Foldable1['reduce'] = RA.Foldable.reduce as any +const foldMap_: Foldable1['foldMap'] = RA.Foldable.foldMap as any +const reduceRight_: Foldable1['reduceRight'] = RA.Foldable.reduceRight as any +const traverse_: Traversable1['traverse'] = RA.Traversable.traverse as any +const alt_: Alt1['alt'] = RA.Alt.alt as any +const reduceWithIndex_: FoldableWithIndex1['reduceWithIndex'] = RA.FoldableWithIndex.reduceWithIndex as any +const foldMapWithIndex_: FoldableWithIndex1['foldMapWithIndex'] = RA.FoldableWithIndex .foldMapWithIndex as any -const reduceRightWithIndex_: FoldableWithIndex1['reduceRightWithIndex'] = RA.foldableWithIndexArray +const reduceRightWithIndex_: FoldableWithIndex1['reduceRightWithIndex'] = RA.FoldableWithIndex .reduceRightWithIndex as any -const traverseWithIndex_: TraversableWithIndex1['traverseWithIndex'] = RA.traversableWithIndexArray +const traverseWithIndex_: TraversableWithIndex1['traverseWithIndex'] = RA.TraversableWithIndex .traverseWithIndex as any // ------------------------------------------------------------------------------------- @@ -589,7 +588,7 @@ declare module './HKT' { * @category instances * @since 2.7.0 */ -export const functorNonEmptyArray: Functor1 = { +export const Functor: Functor1 = { URI, map: map_ } @@ -598,7 +597,7 @@ export const functorNonEmptyArray: Functor1 = { * @category instances * @since 2.7.0 */ -export const functorWithIndexNonEmptyArray: FunctorWithIndex1 = { +export const FunctorWithIndex: FunctorWithIndex1 = { URI, map: map_, mapWithIndex: mapWithIndex_ @@ -608,7 +607,7 @@ export const functorWithIndexNonEmptyArray: FunctorWithIndex1 = { * @category instances * @since 2.7.0 */ -export const applicativeNonEmptyArray: Applicative1 = { +export const Applicative: Applicative1 = { URI, map: map_, ap: ap_, @@ -619,7 +618,7 @@ export const applicativeNonEmptyArray: Applicative1 = { * @category instances * @since 2.7.0 */ -export const monadNonEmptyArray: Monad1 = { +export const Monad: Monad1 = { URI, map: map_, ap: ap_, @@ -631,7 +630,7 @@ export const monadNonEmptyArray: Monad1 = { * @category instances * @since 2.7.0 */ -export const foldableNonEmptyArray: Foldable1 = { +export const Foldable: Foldable1 = { URI, reduce: reduce_, foldMap: foldMap_, @@ -642,7 +641,7 @@ export const foldableNonEmptyArray: Foldable1 = { * @category instances * @since 2.7.0 */ -export const foldableWithIndexNonEmptyArray: FoldableWithIndex1 = { +export const FoldableWithIndex: FoldableWithIndex1 = { URI, reduce: reduce_, foldMap: foldMap_, @@ -656,7 +655,7 @@ export const foldableWithIndexNonEmptyArray: FoldableWithIndex1 = { * @category instances * @since 2.7.0 */ -export const traversableNonEmptyArray: Traversable1 = { +export const Traversable: Traversable1 = { URI, map: map_, reduce: reduce_, @@ -670,7 +669,7 @@ export const traversableNonEmptyArray: Traversable1 = { * @category instances * @since 2.7.0 */ -export const traversableWithIndexNonEmptyArray: TraversableWithIndex1 = { +export const TraversableWithIndex: TraversableWithIndex1 = { URI, map: map_, mapWithIndex: mapWithIndex_, @@ -689,7 +688,7 @@ export const traversableWithIndexNonEmptyArray: TraversableWithIndex1 = { +export const Alt: Alt1 = { URI, map: map_, alt: alt_ @@ -699,7 +698,7 @@ export const altNonEmptyArray: Alt1 = { * @category instances * @since 2.7.0 */ -export const comonadNonEmptyArray: Comonad1 = { +export const Comonad: Comonad1 = { URI, map: map_, extend: extend_, diff --git a/src/ReadonlyRecord.ts b/src/ReadonlyRecord.ts index d00d2835b..7b1a18d62 100644 --- a/src/ReadonlyRecord.ts +++ b/src/ReadonlyRecord.ts @@ -7,7 +7,7 @@ import { Either } from './Either' import { Eq, fromEquals } from './Eq' import { Filterable1 } from './Filterable' import { FilterableWithIndex1, PredicateWithIndex, RefinementWithIndex } from './FilterableWithIndex' -import { Foldable, Foldable1, Foldable2, Foldable3 } from './Foldable' +import { Foldable as FoldableHKT, Foldable1, Foldable2, Foldable3 } from './Foldable' import { FoldableWithIndex1 } from './FoldableWithIndex' import { identity, Predicate, Refinement } from './function' import { Functor1 } from './Functor' @@ -621,11 +621,11 @@ export function fromFoldable( ): (fka: Kind) => ReadonlyRecord export function fromFoldable( M: Magma, - F: Foldable + F: FoldableHKT ): (fka: HKT) => ReadonlyRecord export function fromFoldable( M: Magma, - F: Foldable + F: FoldableHKT ): (fka: HKT) => ReadonlyRecord { const fromFoldableMapM = fromFoldableMap(M, F) return (fka) => fromFoldableMapM(fka, identity) @@ -682,11 +682,11 @@ export function fromFoldableMap( ): (fa: Kind, f: (a: A) => readonly [K, B]) => ReadonlyRecord export function fromFoldableMap( M: Magma, - F: Foldable + F: FoldableHKT ): (fa: HKT, f: (a: A) => readonly [K, B]) => ReadonlyRecord export function fromFoldableMap( M: Magma, - F: Foldable + F: FoldableHKT ): (fa: HKT, f: (a: A) => readonly [string, B]) => ReadonlyRecord { return (ta: HKT, f: (a: A) => readonly [string, B]) => { return F.reduce>(ta, {}, (r, a) => { @@ -1057,7 +1057,7 @@ declare module './HKT' { * @category instances * @since 2.7.0 */ -export const functorRecord: Functor1 = { +export const Functor: Functor1 = { URI, map: map_ } @@ -1066,7 +1066,7 @@ export const functorRecord: Functor1 = { * @category instances * @since 2.7.0 */ -export const functorWithIndexRecord: FunctorWithIndex1 = { +export const FunctorWithIndex: FunctorWithIndex1 = { URI, map: map_, mapWithIndex: mapWithIndex_ @@ -1076,7 +1076,7 @@ export const functorWithIndexRecord: FunctorWithIndex1 = { * @category instances * @since 2.7.0 */ -export const foldableRecord: Foldable1 = { +export const Foldable: Foldable1 = { URI, reduce: reduce_, foldMap: foldMap_, @@ -1087,7 +1087,7 @@ export const foldableRecord: Foldable1 = { * @category instances * @since 2.7.0 */ -export const foldableWithIndexRecord: FoldableWithIndex1 = { +export const FoldableWithIndex: FoldableWithIndex1 = { URI, reduce: reduce_, foldMap: foldMap_, @@ -1101,7 +1101,7 @@ export const foldableWithIndexRecord: FoldableWithIndex1 = { * @category instances * @since 2.7.0 */ -export const compactableRecord: Compactable1 = { +export const Compactable: Compactable1 = { URI, compact, separate @@ -1111,7 +1111,7 @@ export const compactableRecord: Compactable1 = { * @category instances * @since 2.7.0 */ -export const filterableRecord: Filterable1 = { +export const Filterable: Filterable1 = { URI, map: map_, compact, @@ -1126,7 +1126,7 @@ export const filterableRecord: Filterable1 = { * @category instances * @since 2.7.0 */ -export const filterableWithIndexRecord: FilterableWithIndex1 = { +export const FilterableWithIndex: FilterableWithIndex1 = { URI, map: map_, mapWithIndex: mapWithIndex_, @@ -1146,7 +1146,7 @@ export const filterableWithIndexRecord: FilterableWithIndex1 = { * @category instances * @since 2.7.0 */ -export const traversableRecord: Traversable1 = { +export const Traversable: Traversable1 = { URI, map: map_, reduce: reduce_, @@ -1160,7 +1160,7 @@ export const traversableRecord: Traversable1 = { * @category instances * @since 2.7.0 */ -export const traversableWithIndexRecord: TraversableWithIndex1 = { +export const TraversableWithIndex: TraversableWithIndex1 = { URI, map: map_, mapWithIndex: mapWithIndex_, @@ -1179,7 +1179,7 @@ export const traversableWithIndexRecord: TraversableWithIndex1 = { * @category instances * @since 2.7.0 */ -export const witherableRecord: Witherable1 = { +export const Witherable: Witherable1 = { URI, map: map_, reduce: reduce_, diff --git a/src/ReadonlyTuple.ts b/src/ReadonlyTuple.ts index 6c413b1fa..12d061c6b 100644 --- a/src/ReadonlyTuple.ts +++ b/src/ReadonlyTuple.ts @@ -288,7 +288,7 @@ declare module './HKT' { * @category instances * @since 2.7.0 */ -export const functorTuple: Functor2 = { +export const Functor: Functor2 = { URI, map: map_ } @@ -297,7 +297,7 @@ export const functorTuple: Functor2 = { * @category instances * @since 2.7.0 */ -export const bifunctorTuple: Bifunctor2 = { +export const Bifunctor: Bifunctor2 = { URI, bimap: bimap_, mapLeft: mapLeft_ @@ -307,7 +307,7 @@ export const bifunctorTuple: Bifunctor2 = { * @category instances * @since 2.7.0 */ -export const semigroupoidTuple: Semigroupoid2 = { +export const Semigroupoid: Semigroupoid2 = { URI, compose: compose_ } @@ -316,7 +316,7 @@ export const semigroupoidTuple: Semigroupoid2 = { * @category instances * @since 2.7.0 */ -export const comonadTuple: Comonad2 = { +export const Comonad: Comonad2 = { URI, map: map_, extend: extend_, @@ -327,7 +327,7 @@ export const comonadTuple: Comonad2 = { * @category instances * @since 2.7.0 */ -export const foldableTuple: Foldable2 = { +export const Foldable: Foldable2 = { URI, reduce: reduce_, foldMap: foldMap_, @@ -338,7 +338,7 @@ export const foldableTuple: Foldable2 = { * @category instances * @since 2.7.0 */ -export const traversableTuple: Traversable2 = { +export const Traversable: Traversable2 = { URI, map: map_, reduce: reduce_, diff --git a/src/Record.ts b/src/Record.ts index 84ee0bae8..d7debe063 100644 --- a/src/Record.ts +++ b/src/Record.ts @@ -7,7 +7,7 @@ import { Either } from './Either' import { Eq } from './Eq' import { Filterable1 } from './Filterable' import { FilterableWithIndex1, PredicateWithIndex, RefinementWithIndex } from './FilterableWithIndex' -import { Foldable, Foldable1, Foldable2, Foldable3 } from './Foldable' +import { Foldable as FoldableHKT, Foldable1, Foldable2, Foldable3 } from './Foldable' import { FoldableWithIndex1 } from './FoldableWithIndex' import { Predicate, Refinement } from './function' import { Functor1 } from './Functor' @@ -412,8 +412,11 @@ export function fromFoldable( M: Magma, F: Foldable1 ): (fka: Kind) => Record -export function fromFoldable(M: Magma, F: Foldable): (fka: HKT) => Record -export function fromFoldable(M: Magma, F: Foldable): (fka: HKT) => Record { +export function fromFoldable( + M: Magma, + F: FoldableHKT +): (fka: HKT) => Record +export function fromFoldable(M: Magma, F: FoldableHKT): (fka: HKT) => Record { return RR.fromFoldable(M, F) } @@ -468,11 +471,11 @@ export function fromFoldableMap( ): (fa: Kind, f: (a: A) => [K, B]) => Record export function fromFoldableMap( M: Magma, - F: Foldable + F: FoldableHKT ): (fa: HKT, f: (a: A) => [K, B]) => Record export function fromFoldableMap( M: Magma, - F: Foldable + F: FoldableHKT ): (fa: HKT, f: (a: A) => [string, B]) => Record { return RR.fromFoldableMap(M, F) } @@ -502,32 +505,31 @@ export const elem: ( // non-pipeables // ------------------------------------------------------------------------------------- -const map_: Functor1['map'] = RR.functorRecord.map -const mapWithIndex_: FunctorWithIndex1['mapWithIndex'] = RR.functorWithIndexRecord.mapWithIndex -const reduce_: Foldable1['reduce'] = RR.foldableRecord.reduce -const foldMap_: Foldable1['foldMap'] = RR.foldableRecord.foldMap -const reduceRight_: Foldable1['reduceRight'] = RR.foldableRecord.reduceRight -const reduceWithIndex_: FoldableWithIndex1['reduceWithIndex'] = RR.foldableWithIndexRecord.reduceWithIndex -const foldMapWithIndex_: FoldableWithIndex1['foldMapWithIndex'] = - RR.foldableWithIndexRecord.foldMapWithIndex +const map_: Functor1['map'] = RR.Functor.map +const mapWithIndex_: FunctorWithIndex1['mapWithIndex'] = RR.FunctorWithIndex.mapWithIndex +const reduce_: Foldable1['reduce'] = RR.Foldable.reduce +const foldMap_: Foldable1['foldMap'] = RR.Foldable.foldMap +const reduceRight_: Foldable1['reduceRight'] = RR.Foldable.reduceRight +const reduceWithIndex_: FoldableWithIndex1['reduceWithIndex'] = RR.FoldableWithIndex.reduceWithIndex +const foldMapWithIndex_: FoldableWithIndex1['foldMapWithIndex'] = RR.FoldableWithIndex.foldMapWithIndex const reduceRightWithIndex_: FoldableWithIndex1['reduceRightWithIndex'] = - RR.foldableWithIndexRecord.reduceRightWithIndex -const filter_: Filterable1['filter'] = RR.filterableRecord.filter as any -const filterMap_: Filterable1['filterMap'] = RR.filterableRecord.filterMap -const partition_: Filterable1['partition'] = RR.filterableRecord.partition as any -const partitionMap_: Filterable1['partitionMap'] = RR.filterableRecord.partitionMap -const filterWithIndex_: FilterableWithIndex1['filterWithIndex'] = RR.filterableWithIndexRecord + RR.FoldableWithIndex.reduceRightWithIndex +const filter_: Filterable1['filter'] = RR.Filterable.filter as any +const filterMap_: Filterable1['filterMap'] = RR.Filterable.filterMap +const partition_: Filterable1['partition'] = RR.Filterable.partition as any +const partitionMap_: Filterable1['partitionMap'] = RR.Filterable.partitionMap +const filterWithIndex_: FilterableWithIndex1['filterWithIndex'] = RR.FilterableWithIndex .filterWithIndex as any const filterMapWithIndex_: FilterableWithIndex1['filterMapWithIndex'] = - RR.filterableWithIndexRecord.filterMapWithIndex -const partitionWithIndex_: FilterableWithIndex1['partitionWithIndex'] = RR.filterableWithIndexRecord + RR.FilterableWithIndex.filterMapWithIndex +const partitionWithIndex_: FilterableWithIndex1['partitionWithIndex'] = RR.FilterableWithIndex .partitionWithIndex as any const partitionMapWithIndex_: FilterableWithIndex1['partitionMapWithIndex'] = - RR.filterableWithIndexRecord.partitionMapWithIndex -const traverseWithIndex_: TraversableWithIndex1['traverseWithIndex'] = RR.traversableWithIndexRecord + RR.FilterableWithIndex.partitionMapWithIndex +const traverseWithIndex_: TraversableWithIndex1['traverseWithIndex'] = RR.TraversableWithIndex .traverseWithIndex as any -const wither_: Witherable1['wither'] = RR.witherableRecord.wither as any -const wilt_: Witherable1['wilt'] = RR.witherableRecord.wilt as any +const wither_: Witherable1['wither'] = RR.Witherable.wither as any +const wilt_: Witherable1['wilt'] = RR.Witherable.wilt as any const traverse_: Traversable1['traverse'] = ( F: Applicative ): ((ta: Record, f: (a: A) => HKT) => HKT>) => { @@ -629,7 +631,7 @@ declare module './HKT' { * @category instances * @since 2.7.0 */ -export const functorRecord: Functor1 = { +export const Functor: Functor1 = { URI, map: map_ } @@ -638,7 +640,7 @@ export const functorRecord: Functor1 = { * @category instances * @since 2.7.0 */ -export const functorWithIndexRecord: FunctorWithIndex1 = { +export const FunctorWithIndex: FunctorWithIndex1 = { URI, map: map_, mapWithIndex: mapWithIndex_ @@ -648,7 +650,7 @@ export const functorWithIndexRecord: FunctorWithIndex1 = { * @category instances * @since 2.7.0 */ -export const foldableRecord: Foldable1 = { +export const Foldable: Foldable1 = { URI, reduce: reduce_, foldMap: foldMap_, @@ -659,7 +661,7 @@ export const foldableRecord: Foldable1 = { * @category instances * @since 2.7.0 */ -export const foldableWithIndexRecord: FoldableWithIndex1 = { +export const FoldableWithIndex: FoldableWithIndex1 = { URI, reduce: reduce_, foldMap: foldMap_, @@ -673,7 +675,7 @@ export const foldableWithIndexRecord: FoldableWithIndex1 = { * @category instances * @since 2.7.0 */ -export const compactableRecord: Compactable1 = { +export const Compactable: Compactable1 = { URI, compact, separate @@ -683,7 +685,7 @@ export const compactableRecord: Compactable1 = { * @category instances * @since 2.7.0 */ -export const filterableRecord: Filterable1 = { +export const Filterable: Filterable1 = { URI, map: map_, compact, @@ -698,7 +700,7 @@ export const filterableRecord: Filterable1 = { * @category instances * @since 2.7.0 */ -export const filterableWithIndexRecord: FilterableWithIndex1 = { +export const FilterableWithIndex: FilterableWithIndex1 = { URI, map: map_, mapWithIndex: mapWithIndex_, @@ -718,7 +720,7 @@ export const filterableWithIndexRecord: FilterableWithIndex1 = { * @category instances * @since 2.7.0 */ -export const traversableRecord: Traversable1 = { +export const Traversable: Traversable1 = { URI, map: map_, reduce: reduce_, @@ -732,7 +734,7 @@ export const traversableRecord: Traversable1 = { * @category instances * @since 2.7.0 */ -export const traversableWithIndexRecord: TraversableWithIndex1 = { +export const TraversableWithIndex: TraversableWithIndex1 = { URI, map: map_, mapWithIndex: mapWithIndex_, @@ -751,7 +753,7 @@ export const traversableWithIndexRecord: TraversableWithIndex1 = { * @category instances * @since 2.7.0 */ -export const witherableRecord: Witherable1 = { +export const Witherable: Witherable1 = { URI, map: map_, reduce: reduce_, diff --git a/src/State.ts b/src/State.ts index ec4d4f69a..902f79548 100644 --- a/src/State.ts +++ b/src/State.ts @@ -187,7 +187,7 @@ declare module './HKT' { * @category instances * @since 2.7.0 */ -export const functorState: Functor2 = { +export const Functor: Functor2 = { URI, map: map_ } @@ -196,7 +196,7 @@ export const functorState: Functor2 = { * @category instances * @since 2.7.0 */ -export const applicativeState: Applicative2 = { +export const Applicative: Applicative2 = { URI, map: map_, ap: ap_, @@ -207,7 +207,7 @@ export const applicativeState: Applicative2 = { * @category instances * @since 2.7.0 */ -export const monadState: Monad2 = { +export const Monad: Monad2 = { URI, map: map_, ap: ap_, @@ -220,7 +220,7 @@ export const monadState: Monad2 = { * @category instances * @since 2.0.0 */ -export const state: Monad2 = monadState +export const state: Monad2 = Monad // ------------------------------------------------------------------------------------- // utils diff --git a/src/StateReaderTaskEither.ts b/src/StateReaderTaskEither.ts index 225bc7f77..364e778e4 100644 --- a/src/StateReaderTaskEither.ts +++ b/src/StateReaderTaskEither.ts @@ -594,7 +594,7 @@ declare module './HKT' { * @category instances * @since 2.7.0 */ -export const functorStateReaderTaskEither: Functor4 = { +export const Functor: Functor4 = { URI, map: map_ } @@ -603,7 +603,7 @@ export const functorStateReaderTaskEither: Functor4 = { * @category instances * @since 2.7.0 */ -export const applicativeStateReaderTaskEither: Applicative4 = { +export const Applicative: Applicative4 = { URI, map: map_, ap: ap_, @@ -614,7 +614,7 @@ export const applicativeStateReaderTaskEither: Applicative4 = { * @category instances * @since 2.7.0 */ -export const bifunctorStateReaderTaskEither: Bifunctor4 = { +export const Bifunctor: Bifunctor4 = { URI, bimap: bimap_, mapLeft: mapLeft_ @@ -624,7 +624,7 @@ export const bifunctorStateReaderTaskEither: Bifunctor4 = { * @category instances * @since 2.7.0 */ -export const altReaderStateTaskEither: Alt4 = { +export const Alt: Alt4 = { URI, map: map_, alt: alt_ diff --git a/src/Store.ts b/src/Store.ts index 9bb10b0dd..e44669786 100644 --- a/src/Store.ts +++ b/src/Store.ts @@ -3,7 +3,7 @@ */ import { Comonad2 } from './Comonad' import { Endomorphism, identity } from './function' -import { Functor, Functor1, Functor2, Functor2C, Functor3, Functor3C } from './Functor' +import { Functor as FunctorHKT, Functor1, Functor2, Functor2C, Functor3, Functor3C } from './Functor' import { HKT, Kind, Kind2, Kind3, URIS, URIS2, URIS3 } from './HKT' import { Extend2 } from './Extend' @@ -67,8 +67,8 @@ export function experiment( export function experiment( F: Functor1 ): (f: (s: S) => Kind) => (wa: Store) => Kind -export function experiment(F: Functor): (f: (s: S) => HKT) => (wa: Store) => HKT -export function experiment(F: Functor): (f: (s: S) => HKT) => (wa: Store) => HKT { +export function experiment(F: FunctorHKT): (f: (s: S) => HKT) => (wa: Store) => HKT +export function experiment(F: FunctorHKT): (f: (s: S) => HKT) => (wa: Store) => HKT { return (f) => (wa) => F.map(f(wa.pos), (s) => wa.peek(s)) } @@ -143,7 +143,7 @@ declare module './HKT' { * @category instances * @since 2.7.0 */ -export const functorStore: Functor2 = { +export const Functor: Functor2 = { URI, map: map_ } @@ -152,7 +152,7 @@ export const functorStore: Functor2 = { * @category instances * @since 2.7.0 */ -export const comonadStore: Comonad2 = { +export const Comonad: Comonad2 = { URI, map: map_, extend: extend_, @@ -164,4 +164,4 @@ export const comonadStore: Comonad2 = { * @category instances * @since 2.0.0 */ -export const store: Comonad2 = comonadStore +export const store: Comonad2 = Comonad diff --git a/src/Task.ts b/src/Task.ts index 9682345c7..eda3d0983 100644 --- a/src/Task.ts +++ b/src/Task.ts @@ -278,7 +278,7 @@ export function getRaceMonoid(): Monoid> { * @category instances * @since 2.7.0 */ -export const functorTask: Functor1 = { +export const Functor: Functor1 = { URI, map: map_ } @@ -287,7 +287,7 @@ export const functorTask: Functor1 = { * @category instances * @since 2.7.0 */ -export const applicativeTaskPar: Applicative1 = { +export const ApplicativePar: Applicative1 = { URI, map: map_, ap: apPar_, @@ -298,7 +298,7 @@ export const applicativeTaskPar: Applicative1 = { * @category instances * @since 2.7.0 */ -export const applicativeTaskSeq: Applicative1 = { +export const ApplicativeSeq: Applicative1 = { URI, map: map_, ap: apSeq_, @@ -310,7 +310,7 @@ export const applicativeTaskSeq: Applicative1 = { * * @internal */ -export const monadTask: Monad1 = { +export const Monad: Monad1 = { URI, map: map_, of, diff --git a/src/TaskEither.ts b/src/TaskEither.ts index ea102611f..13675a34f 100644 --- a/src/TaskEither.ts +++ b/src/TaskEither.ts @@ -340,7 +340,7 @@ export const mapLeft: (f: (e: E) => G) => (fa: TaskEither) => Tas */ export const ap: (fa: TaskEither) => (fab: TaskEither B>) => TaskEither = /*#__PURE__*/ - apComposition(T.applicativeTaskPar, E.applicativeEither) + apComposition(T.ApplicativePar, E.Applicative) /** * Combine two effectful actions, keeping only the result of the first. @@ -579,7 +579,7 @@ export function getAltTaskValidation(SE: Semigroup): Alt2C { export function getTaskValidation( SE: Semigroup ): Monad2C & Bifunctor2 & Alt2C & MonadTask2C & MonadThrow2C { - const applicativeTaskValidation = getApplicativeTaskValidation(T.applicativeTaskPar, SE) + const applicativeTaskValidation = getApplicativeTaskValidation(T.ApplicativePar, SE) const altTaskValidation = getAltTaskValidation(SE) return { URI, @@ -603,7 +603,7 @@ export function getTaskValidation( */ export function getFilterable(M: Monoid): Filterable2C { const W = E.getWitherable(M) - const F = getFilterableComposition(T.monadTask, W) + const F = getFilterableComposition(T.Monad, W) return { URI, @@ -622,7 +622,7 @@ export function getFilterable(M: Monoid): Filterable2C { * @category instances * @since 2.7.0 */ -export const functorTaskEither: Functor2 = { +export const Functor: Functor2 = { URI, map: map_ } @@ -631,7 +631,7 @@ export const functorTaskEither: Functor2 = { * @category instances * @since 2.7.0 */ -export const applicativeTaskEitherPar: Applicative2 = { +export const ApplicativePar: Applicative2 = { URI, map: map_, ap: apPar_, @@ -642,7 +642,7 @@ export const applicativeTaskEitherPar: Applicative2 = { * @category instances * @since 2.7.0 */ -export const applicativeTaskEitherSeq: Applicative2 = { +export const ApplicativeSeq: Applicative2 = { URI, map: map_, ap: apSeq_, @@ -653,7 +653,7 @@ export const applicativeTaskEitherSeq: Applicative2 = { * @category instances * @since 2.7.0 */ -export const bifunctorTaskEither: Bifunctor2 = { +export const Bifunctor: Bifunctor2 = { URI, bimap: bimap_, mapLeft: mapLeft_ @@ -663,7 +663,7 @@ export const bifunctorTaskEither: Bifunctor2 = { * @category instances * @since 2.7.0 */ -export const altTaskEither: Alt2 = { +export const Alt: Alt2 = { URI, map: map_, alt: alt_ diff --git a/src/TaskThese.ts b/src/TaskThese.ts index 15fe7a558..2b4c032ba 100644 --- a/src/TaskThese.ts +++ b/src/TaskThese.ts @@ -241,7 +241,7 @@ export function getApplicative(A: Apply1, SE: Semigroup): Applicati * @since 2.4.0 */ export function getMonad(SE: Semigroup): Monad2C & MonadTask2C { - const A = getApplicative(T.applicativeTaskPar, SE) + const A = getApplicative(T.ApplicativePar, SE) return { URI, _E: undefined as any, diff --git a/src/These.ts b/src/These.ts index 603576197..783e504b6 100644 --- a/src/These.ts +++ b/src/These.ts @@ -517,7 +517,7 @@ declare module './HKT' { * @category instances * @since 2.7.0 */ -export const functorThese: Functor2 = { +export const Functor: Functor2 = { URI, map: map_ } @@ -526,7 +526,7 @@ export const functorThese: Functor2 = { * @category instances * @since 2.7.0 */ -export const bifunctorThese: Bifunctor2 = { +export const Bifunctor: Bifunctor2 = { URI, bimap: bimap_, mapLeft: mapLeft_ @@ -536,7 +536,7 @@ export const bifunctorThese: Bifunctor2 = { * @category instances * @since 2.7.0 */ -export const foldableThese: Foldable2 = { +export const Foldable: Foldable2 = { URI, reduce: reduce_, foldMap: foldMap_, @@ -547,7 +547,7 @@ export const foldableThese: Foldable2 = { * @category instances * @since 2.7.0 */ -export const traversableThese: Traversable2 = { +export const Traversable: Traversable2 = { URI, map: map_, reduce: reduce_, diff --git a/src/Traced.ts b/src/Traced.ts index 6a56dc8c0..9bb34ecc1 100644 --- a/src/Traced.ts +++ b/src/Traced.ts @@ -125,7 +125,7 @@ declare module './HKT' { * @category instances * @since 2.7.0 */ -export const functorTraced: Functor2 = { +export const Functor: Functor2 = { URI, map: map_ } @@ -135,4 +135,4 @@ export const functorTraced: Functor2 = { * @category instances * @since 2.0.0 */ -export const traced: Functor2 = functorTraced +export const traced: Functor2 = Functor diff --git a/src/Tree.ts b/src/Tree.ts index c2bc03969..179fa1203 100644 --- a/src/Tree.ts +++ b/src/Tree.ts @@ -7,7 +7,7 @@ * * @since 2.0.0 */ -import { Applicative, Applicative1 } from './Applicative' +import { Applicative as ApplicativeHKT, Applicative1 } from './Applicative' import * as A from './Array' import { Comonad1 } from './Comonad' import { Eq, fromEquals } from './Eq' @@ -15,7 +15,7 @@ import { Foldable1 } from './Foldable' import { identity, pipe } from './function' import { Functor1 } from './Functor' import { HKT, Kind, Kind2, Kind3, URIS, URIS2, URIS3 } from './HKT' -import { Monad, Monad1, Monad2, Monad2C, Monad3, Monad3C } from './Monad' +import { Monad as MonadHKT, Monad1, Monad2, Monad2C, Monad3, Monad3C } from './Monad' import { Monoid } from './Monoid' import { Show } from './Show' import { PipeableTraverse1, Traversable1 } from './Traversable' @@ -169,8 +169,8 @@ export function unfoldTreeM( export function unfoldTreeM( M: Monad1 ): (b: B, f: (b: B) => Kind]>) => Kind> -export function unfoldTreeM(M: Monad): (b: B, f: (b: B) => HKT]>) => HKT> -export function unfoldTreeM(M: Monad): (b: B, f: (b: B) => HKT]>) => HKT> { +export function unfoldTreeM(M: MonadHKT): (b: B, f: (b: B) => HKT]>) => HKT> +export function unfoldTreeM(M: MonadHKT): (b: B, f: (b: B) => HKT]>) => HKT> { const unfoldForestMM = unfoldForestM(M) return (b, f) => M.chain(f(b), ([a, bs]) => M.chain(unfoldForestMM(bs, f), (ts) => M.of({ value: a, forest: ts }))) } @@ -197,10 +197,10 @@ export function unfoldForestM( M: Monad1 ): (bs: Array, f: (b: B) => Kind]>) => Kind> export function unfoldForestM( - M: Monad + M: MonadHKT ): (bs: Array, f: (b: B) => HKT]>) => HKT> export function unfoldForestM( - M: Monad + M: MonadHKT ): (bs: Array, f: (b: B) => HKT]>) => HKT> { const traverseM = A.traverse(M) return (bs, f) => @@ -296,7 +296,7 @@ const extend_: Extend1['extend'] = (wa, f) => ({ value: f(wa), forest: wa.forest.map((t) => extend_(t, f)) }) -const traverse_ = (F: Applicative): ((ta: Tree, f: (a: A) => HKT) => HKT>) => { +const traverse_ = (F: ApplicativeHKT): ((ta: Tree, f: (a: A) => HKT) => HKT>) => { const traverseF = A.traverse(F) const r = (ta: Tree, f: (a: A) => HKT): HKT> => F.ap( @@ -425,7 +425,7 @@ export const extract: (wa: Tree) => A = (wa) => wa.value * @since 2.6.3 */ export const traverse: PipeableTraverse1 = ( - F: Applicative + F: ApplicativeHKT ): ((f: (a: A) => HKT) => (ta: Tree) => HKT>) => { const traverseF = traverse_(F) return (f) => (ta) => traverseF(ta, f) @@ -435,7 +435,7 @@ export const traverse: PipeableTraverse1 = ( * @since 2.6.3 */ export const sequence: Traversable1['sequence'] = ( - F: Applicative + F: ApplicativeHKT ): ((ta: Tree>) => HKT>) => { const traverseF = traverse_(F) return (ta) => traverseF(ta, identity) @@ -475,7 +475,7 @@ declare module './HKT' { * @category instances * @since 2.7.0 */ -export const functorTree: Functor1 = { +export const Functor: Functor1 = { URI, map: map_ } @@ -484,7 +484,7 @@ export const functorTree: Functor1 = { * @category instances * @since 2.7.0 */ -export const applicativeTree: Applicative1 = { +export const Applicative: Applicative1 = { URI, map: map_, ap: ap_, @@ -495,7 +495,7 @@ export const applicativeTree: Applicative1 = { * @category instances * @since 2.7.0 */ -export const monadTree: Monad1 = { +export const Monad: Monad1 = { URI, map: map_, ap: ap_, @@ -507,7 +507,7 @@ export const monadTree: Monad1 = { * @category instances * @since 2.7.0 */ -export const foldableTree: Foldable1 = { +export const Foldable: Foldable1 = { URI, reduce: reduce_, foldMap: foldMap_, @@ -518,7 +518,7 @@ export const foldableTree: Foldable1 = { * @category instances * @since 2.7.0 */ -export const traversableTree: Traversable1 = { +export const Traversable: Traversable1 = { URI, map: map_, reduce: reduce_, @@ -532,7 +532,7 @@ export const traversableTree: Traversable1 = { * @category instances * @since 2.7.0 */ -export const comonadTree: Comonad1 = { +export const Comonad: Comonad1 = { URI, map: map_, extend: extend_, diff --git a/src/Tuple.ts b/src/Tuple.ts index 371ba6d79..6e78a1b87 100644 --- a/src/Tuple.ts +++ b/src/Tuple.ts @@ -76,15 +76,15 @@ export const getChainRec: (M: Monoid) => ChainRec2C = RT.getChainR // non-pipeables // ------------------------------------------------------------------------------------- -const map_: Functor2['map'] = RT.functorTuple.map as any -const bimap_: Bifunctor2['bimap'] = RT.bifunctorTuple.bimap as any -const mapLeft_: Bifunctor2['mapLeft'] = RT.bifunctorTuple.mapLeft as any -const compose_: Semigroupoid2['compose'] = RT.semigroupoidTuple.compose as any -const extend_: Extend2['extend'] = RT.comonadTuple.extend as any -const reduce_: Foldable2['reduce'] = RT.foldableTuple.reduce -const foldMap_: Foldable2['foldMap'] = RT.foldableTuple.foldMap -const reduceRight_: Foldable2['reduceRight'] = RT.foldableTuple.reduceRight -const traverse_: Traversable2['traverse'] = RT.traversableTuple.traverse as any +const map_: Functor2['map'] = RT.Functor.map as any +const bimap_: Bifunctor2['bimap'] = RT.Bifunctor.bimap as any +const mapLeft_: Bifunctor2['mapLeft'] = RT.Bifunctor.mapLeft as any +const compose_: Semigroupoid2['compose'] = RT.Semigroupoid.compose as any +const extend_: Extend2['extend'] = RT.Comonad.extend as any +const reduce_: Foldable2['reduce'] = RT.Foldable.reduce +const foldMap_: Foldable2['foldMap'] = RT.Foldable.foldMap +const reduceRight_: Foldable2['reduceRight'] = RT.Foldable.reduceRight +const traverse_: Traversable2['traverse'] = RT.Traversable.traverse as any // ------------------------------------------------------------------------------------- // pipeables @@ -193,7 +193,7 @@ declare module './HKT' { * @category instances * @since 2.7.0 */ -export const functorTuple: Functor2 = { +export const Functor: Functor2 = { URI, map: map_ } @@ -202,7 +202,7 @@ export const functorTuple: Functor2 = { * @category instances * @since 2.7.0 */ -export const bifunctorTuple: Bifunctor2 = { +export const Bifunctor: Bifunctor2 = { URI, bimap: bimap_, mapLeft: mapLeft_ @@ -212,7 +212,7 @@ export const bifunctorTuple: Bifunctor2 = { * @category instances * @since 2.7.0 */ -export const semigroupoidTuple: Semigroupoid2 = { +export const Semigroupoid: Semigroupoid2 = { URI, compose: compose_ } @@ -221,7 +221,7 @@ export const semigroupoidTuple: Semigroupoid2 = { * @category instances * @since 2.7.0 */ -export const comonadTuple: Comonad2 = { +export const Comonad: Comonad2 = { URI, map: map_, extend: extend_, @@ -232,7 +232,7 @@ export const comonadTuple: Comonad2 = { * @category instances * @since 2.7.0 */ -export const foldableTuple: Foldable2 = { +export const Foldable: Foldable2 = { URI, reduce: reduce_, foldMap: foldMap_, @@ -243,7 +243,7 @@ export const foldableTuple: Foldable2 = { * @category instances * @since 2.7.0 */ -export const traversableTuple: Traversable2 = { +export const Traversable: Traversable2 = { URI, map: map_, reduce: reduce_, diff --git a/src/Writer.ts b/src/Writer.ts index 08f6d69c6..5e2acee50 100644 --- a/src/Writer.ts +++ b/src/Writer.ts @@ -155,7 +155,7 @@ export function getMonad(M: Monoid): Monad2C { * @category instances * @since 2.7.0 */ -export const functorWriter: Functor2 = { +export const Functor: Functor2 = { URI, map: map_ } @@ -165,7 +165,7 @@ export const functorWriter: Functor2 = { * @category instances * @since 2.0.0 */ -export const writer: Functor2 = functorWriter +export const writer: Functor2 = Functor // ------------------------------------------------------------------------------------- // utils diff --git a/test/Applicative.ts b/test/Applicative.ts index ded787bd4..efa386c39 100644 --- a/test/Applicative.ts +++ b/test/Applicative.ts @@ -5,7 +5,7 @@ import * as O from '../src/Option' describe('Applicative', () => { it('getApplicativeComposition', () => { - const arrayOption = getApplicativeComposition(A.applicativeArray, O.applicativeOption) + const arrayOption = getApplicativeComposition(A.Applicative, O.Applicative) const double = (n: number) => n * 2 const inc = (n: number) => n + 1 assert.deepStrictEqual(arrayOption.ap([O.some(double), O.some(inc)], [O.some(1), O.some(2)]), [ diff --git a/test/Apply.ts b/test/Apply.ts index 0a3da903f..3c50fdaec 100644 --- a/test/Apply.ts +++ b/test/Apply.ts @@ -7,7 +7,7 @@ import { pipe } from '../src/function' describe('Apply', () => { it('sequenceT', () => { - const sequenceTOption = sequenceT(O.applicativeOption) + const sequenceTOption = sequenceT(O.Applicative) assert.deepStrictEqual(sequenceTOption(O.some(1)), O.some([1])) assert.deepStrictEqual(sequenceTOption(O.some(1), O.some('a')), O.some([1, 'a'])) assert.deepStrictEqual(sequenceTOption(O.some(1), O.some('a'), O.some(true)), O.some([1, 'a', true])) @@ -27,7 +27,7 @@ describe('Apply', () => { const a2: ReadonlyArray = ['a', 'b', 'c'] const a3: ReadonlyArray = [true, false] assert.deepStrictEqual( - pipe(sequenceT(A.applicativeArray)(a1, a2, a3), (arr) => arr.map(([x, y, z]) => `(${x}, ${y}, ${z})`)), + pipe(sequenceT(A.Applicative)(a1, a2, a3), (arr) => arr.map(([x, y, z]) => `(${x}, ${y}, ${z})`)), [ '(1, a, true)', '(1, a, false)', @@ -52,7 +52,7 @@ describe('Apply', () => { }) it('sequenceS', () => { - const adoOption = sequenceS(O.applicativeOption) + const adoOption = sequenceS(O.Applicative) assert.deepStrictEqual(adoOption({ a: O.some(1) }), O.some({ a: 1 })) assert.deepStrictEqual(adoOption({ a: O.some(1), b: O.some('a') }), O.some({ a: 1, b: 'a' })) assert.deepStrictEqual( @@ -73,7 +73,7 @@ describe('Apply', () => { ) assert.deepStrictEqual(adoOption({ a: O.some(1), b: O.none }), O.none) - const adoEither = sequenceS(E.applicativeEither) + const adoEither = sequenceS(E.Applicative) assert.deepStrictEqual(adoEither({ a: E.right(1) }), E.right({ a: 1 })) assert.deepStrictEqual(adoEither({ a: E.right(1), b: E.right(2) }), E.right({ a: 1, b: 2 })) assert.deepStrictEqual(adoEither({ a: E.right(1), b: E.left('error') }), E.left('error')) @@ -92,9 +92,7 @@ describe('Apply', () => { const a2: ReadonlyArray = ['a', 'b', 'c'] const a3: ReadonlyArray = [true, false] assert.deepStrictEqual( - pipe(sequenceS(A.applicativeArray)({ a1, a2, a3 }), (arr) => - arr.map(({ a1, a2, a3 }) => `(${a1}, ${a2}, ${a3})`) - ), + pipe(sequenceS(A.Applicative)({ a1, a2, a3 }), (arr) => arr.map(({ a1, a2, a3 }) => `(${a1}, ${a2}, ${a3})`)), [ '(1, a, true)', '(1, a, false)', diff --git a/test/Array.ts b/test/Array.ts index 6fb932a80..319dc0db3 100644 --- a/test/Array.ts +++ b/test/Array.ts @@ -16,15 +16,13 @@ import * as T from '../src/Task' describe('Array', () => { describe('pipeables', () => { it('traverse', () => { - const traverse = _.traverse(O.applicativeOption)( - (n: number): O.Option => (n % 2 === 0 ? O.none : O.some(n)) - ) + const traverse = _.traverse(O.Applicative)((n: number): O.Option => (n % 2 === 0 ? O.none : O.some(n))) assert.deepStrictEqual(traverse([1, 2]), O.none) assert.deepStrictEqual(traverse([1, 3]), O.some([1, 3])) }) it('sequence', () => { - const sequence = _.sequence(O.applicativeOption) + const sequence = _.sequence(O.Applicative) assert.deepStrictEqual(sequence([O.some(1), O.some(3)]), O.some([1, 3])) assert.deepStrictEqual(sequence([O.some(1), O.none]), O.none) }) @@ -33,14 +31,14 @@ describe('Array', () => { assert.deepStrictEqual( pipe( ['a', 'bb'], - _.traverseWithIndex(O.applicativeOption)((i, s) => (s.length >= 1 ? O.some(s + i) : O.none)) + _.traverseWithIndex(O.Applicative)((i, s) => (s.length >= 1 ? O.some(s + i) : O.none)) ), O.some(['a0', 'bb1']) ) assert.deepStrictEqual( pipe( ['a', 'bb'], - _.traverseWithIndex(O.applicativeOption)((i, s) => (s.length > 1 ? O.some(s + i) : O.none)) + _.traverseWithIndex(O.Applicative)((i, s) => (s.length > 1 ? O.some(s + i) : O.none)) ), O.none ) @@ -66,13 +64,13 @@ describe('Array', () => { }) it('wither', async () => { - const wither = _.wither(T.applicativeTaskPar)((n: number) => T.of(n > 2 ? O.some(n + 1) : O.none)) + const wither = _.wither(T.ApplicativePar)((n: number) => T.of(n > 2 ? O.some(n + 1) : O.none)) assert.deepStrictEqual(await pipe([], wither)(), []) assert.deepStrictEqual(await pipe([1, 3], wither)(), [4]) }) it('wilt', async () => { - const wilt = _.wilt(T.applicativeTaskPar)((n: number) => T.of(n > 2 ? E.right(n + 1) : E.left(n - 1))) + const wilt = _.wilt(T.ApplicativePar)((n: number) => T.of(n > 2 ? E.right(n + 1) : E.left(n - 1))) assert.deepStrictEqual(await pipe([], wilt)(), { left: [], right: [] }) assert.deepStrictEqual(await pipe([1, 3], wilt)(), { left: [0], right: [4] }) }) @@ -924,7 +922,7 @@ describe('Array', () => { readonly bar: () => number } const f = (a: number, x?: Foo) => (x !== undefined ? `${a}${x.bar()}` : `${a}`) - assert.deepStrictEqual(_.functorArray.map([1, 2], f), ['1', '2']) + assert.deepStrictEqual(_.Functor.map([1, 2], f), ['1', '2']) assert.deepStrictEqual(pipe([1, 2], _.map(f)), ['1', '2']) }) diff --git a/test/Choice.ts b/test/Choice.ts index 4a986554b..ed8fa2d63 100644 --- a/test/Choice.ts +++ b/test/Choice.ts @@ -7,17 +7,17 @@ describe('Choice', () => { it('splitChoice', () => { const ab = (s: string) => s.length const cd = (n: number) => n >= 2 - assert.deepStrictEqual(splitChoice({ ...R.choiceReader, ...R.categoryReader })(ab, cd)(right(3)), right(true)) - assert.deepStrictEqual(splitChoice({ ...R.choiceReader, ...R.categoryReader })(ab, cd)(right(1)), right(false)) - assert.deepStrictEqual(splitChoice({ ...R.choiceReader, ...R.categoryReader })(ab, cd)(left('foo')), left(3)) + assert.deepStrictEqual(splitChoice({ ...R.Choice, ...R.Category })(ab, cd)(right(3)), right(true)) + assert.deepStrictEqual(splitChoice({ ...R.Choice, ...R.Category })(ab, cd)(right(1)), right(false)) + assert.deepStrictEqual(splitChoice({ ...R.Choice, ...R.Category })(ab, cd)(left('foo')), left(3)) }) it('fanin', () => { const ac = (s: string) => s === s.toLowerCase() const bc = (n: number) => n >= 2 - assert.deepStrictEqual(fanin({ ...R.choiceReader, ...R.categoryReader })(ac, bc)(right(3)), true) - assert.deepStrictEqual(fanin({ ...R.choiceReader, ...R.categoryReader })(ac, bc)(right(1)), false) - assert.deepStrictEqual(fanin({ ...R.choiceReader, ...R.categoryReader })(ac, bc)(left('foo')), true) - assert.deepStrictEqual(fanin({ ...R.choiceReader, ...R.categoryReader })(ac, bc)(left('A')), false) + assert.deepStrictEqual(fanin({ ...R.Choice, ...R.Category })(ac, bc)(right(3)), true) + assert.deepStrictEqual(fanin({ ...R.Choice, ...R.Category })(ac, bc)(right(1)), false) + assert.deepStrictEqual(fanin({ ...R.Choice, ...R.Category })(ac, bc)(left('foo')), true) + assert.deepStrictEqual(fanin({ ...R.Choice, ...R.Category })(ac, bc)(left('A')), false) }) }) diff --git a/test/Compactable.ts b/test/Compactable.ts index d4c7617c3..fd83fa560 100644 --- a/test/Compactable.ts +++ b/test/Compactable.ts @@ -6,7 +6,7 @@ import { left, right } from '../src/Either' describe('Compactable', () => { it('getCompactableComposition', () => { - const C = getCompactableComposition(A.functorArray, { ...A.functorArray, ...A.compactableArray }) + const C = getCompactableComposition(A.functorArray, { ...A.functorArray, ...A.Compactable }) assert.deepStrictEqual( C.compact([ [some(1), none], diff --git a/test/Either.ts b/test/Either.ts index d89de35df..9d13f1381 100644 --- a/test/Either.ts +++ b/test/Either.ts @@ -145,14 +145,14 @@ describe('Either', () => { }) it('traverse', () => { - const traverse = _.traverse(O.applicativeOption)((n: number) => (n >= 2 ? O.some(n) : O.none)) + const traverse = _.traverse(O.Applicative)((n: number) => (n >= 2 ? O.some(n) : O.none)) assert.deepStrictEqual(pipe(_.left('a'), traverse), O.some(_.left('a'))) assert.deepStrictEqual(pipe(_.right(1), traverse), O.none) assert.deepStrictEqual(pipe(_.right(3), traverse), O.some(_.right(3))) }) it('sequence', () => { - const sequence = _.sequence(O.applicativeOption) + const sequence = _.sequence(O.Applicative) assert.deepStrictEqual(sequence(_.right(O.some(1))), O.some(_.right(1))) assert.deepStrictEqual(sequence(_.left('a')), O.some(_.left('a'))) assert.deepStrictEqual(sequence(_.right(O.none)), O.none) @@ -365,7 +365,7 @@ describe('Either', () => { describe('ChainRec', () => { it('chainRec', () => { - const chainRec = _.chainRecEither.chainRec + const chainRec = _.ChainRec.chainRec assert.deepStrictEqual( chainRec(1, () => _.left('foo')), _.left('foo') @@ -454,7 +454,7 @@ describe('Either', () => { }) it('wither', async () => { - const wither = W.wither(T.applicativeTaskPar) + const wither = W.wither(T.ApplicativePar) const f = (n: number) => T.of(p(n) ? O.some(n + 1) : O.none) assert.deepStrictEqual(await wither(_.left('foo'), f)(), _.left('foo')) assert.deepStrictEqual(await wither(_.right(1), f)(), _.left(monoidString.empty)) @@ -462,7 +462,7 @@ describe('Either', () => { }) it('wilt', async () => { - const wilt = W.wilt(T.applicativeTaskPar) + const wilt = W.wilt(T.ApplicativePar) const f = (n: number) => T.of(p(n) ? _.right(n + 1) : _.left(n - 1)) assert.deepStrictEqual(await wilt(_.left('foo'), f)(), { left: _.left('foo'), diff --git a/test/EitherT.ts b/test/EitherT.ts index 7d9b9a484..0c466ab63 100644 --- a/test/EitherT.ts +++ b/test/EitherT.ts @@ -3,7 +3,7 @@ import * as E from '../src/Either' import { getEitherM } from '../src/EitherT' import * as I from '../src/IO' -const T = getEitherM(I.monadIO) +const T = getEitherM(I.Monad) describe('EitherT', () => { it('fold', () => { diff --git a/test/Filterable.ts b/test/Filterable.ts index 2b6bb6a13..a204aaf39 100644 --- a/test/Filterable.ts +++ b/test/Filterable.ts @@ -6,7 +6,7 @@ import { right, left } from '../src/Either' describe('Filterable', () => { it('getFilterableComposition', () => { - const F = getFilterableComposition(A.functorArray, A.filterableArray) + const F = getFilterableComposition(A.functorArray, A.Filterable) assert.deepStrictEqual( F.filter( [ diff --git a/test/Foldable.ts b/test/Foldable.ts index 06d05124f..ab2dd1168 100644 --- a/test/Foldable.ts +++ b/test/Foldable.ts @@ -11,7 +11,7 @@ export type ArrayOptionURI = typeof ArrayOptionURI describe('Foldable', () => { it('getFoldableComposition', () => { - const F = getFoldableComposition(A.foldableArray, O.foldableOption) + const F = getFoldableComposition(A.Foldable, O.Foldable) // reduce assert.deepStrictEqual(F.reduce([O.some('a'), O.some('b'), O.some('c')], '', monoidString.concat), 'abc') assert.deepStrictEqual(F.reduce([O.none, O.some('b'), O.none], '', monoidString.concat), 'b') @@ -42,27 +42,27 @@ describe('Foldable', () => { }) it('intercalate', () => { - assert.deepStrictEqual(intercalate(monoidString, A.foldableArray)(',', ['a', 'b', 'c']), 'a,b,c') + assert.deepStrictEqual(intercalate(monoidString, A.Foldable)(',', ['a', 'b', 'c']), 'a,b,c') }) it('traverse_', () => { let log = '' const append = (s: String) => () => (log += s) - traverse_(I.applicativeIO, A.foldableArray)(['a', 'b', 'c'], append)() + traverse_(I.Applicative, A.Foldable)(['a', 'b', 'c'], append)() assert.deepStrictEqual(log, 'abc') }) it('foldM', () => { assert.deepStrictEqual( - foldM(O.monadOption, A.foldableArray)([], 1, () => O.none), + foldM(O.Monad, A.Foldable)([], 1, () => O.none), O.some(1) ) assert.deepStrictEqual( - foldM(O.monadOption, A.foldableArray)([2], 1, () => O.none), + foldM(O.Monad, A.Foldable)([2], 1, () => O.none), O.none ) assert.deepStrictEqual( - foldM(O.monadOption, A.foldableArray)([2], 1, (b, a) => O.some(b + a)), + foldM(O.Monad, A.Foldable)([2], 1, (b, a) => O.some(b + a)), O.some(3) ) }) diff --git a/test/FoldableWithIndex.ts b/test/FoldableWithIndex.ts index 283b1ae8f..57bfdc2b9 100644 --- a/test/FoldableWithIndex.ts +++ b/test/FoldableWithIndex.ts @@ -5,7 +5,7 @@ import { monoidString } from '../src/Monoid' describe('FoldableWithIndex', () => { it('getFoldableWithIndexComposition', () => { - const arrayOfArray = getFoldableWithIndexComposition(A.foldableWithIndexArray, A.foldableWithIndexArray) + const arrayOfArray = getFoldableWithIndexComposition(A.FoldableWithIndex, A.FoldableWithIndex) const fa: ReadonlyArray> = [ ['a', 'b'], ['c', 'd'] diff --git a/test/Functor.ts b/test/Functor.ts index 5129d7175..9d04836c4 100644 --- a/test/Functor.ts +++ b/test/Functor.ts @@ -5,7 +5,7 @@ import * as option from '../src/Option' describe('Functor', () => { it('getFunctorComposition', () => { - const arrayOption = getFunctorComposition(A.functorArray, option.functorOption) + const arrayOption = getFunctorComposition(A.functorArray, option.Functor) const double = (a: number) => a * 2 assert.deepStrictEqual(arrayOption.map([option.some(1)], double), [option.some(2)]) }) diff --git a/test/FunctorWithIndex.ts b/test/FunctorWithIndex.ts index 52ddf48d0..ae736b273 100644 --- a/test/FunctorWithIndex.ts +++ b/test/FunctorWithIndex.ts @@ -4,7 +4,7 @@ import { getFunctorWithIndexComposition } from '../src/FunctorWithIndex' describe('FunctorWithIndex', () => { it('getFunctorComposition', () => { - const arrayOfArray = getFunctorWithIndexComposition(A.functorWithIndexArray, A.functorWithIndexArray) + const arrayOfArray = getFunctorWithIndexComposition(A.Functor, A.Functor) const f = ([i, j]: readonly [number, number], a: string) => a + i + j assert.deepStrictEqual( arrayOfArray.mapWithIndex( diff --git a/test/IO.ts b/test/IO.ts index 9d33ada00..d10afdf5b 100644 --- a/test/IO.ts +++ b/test/IO.ts @@ -61,6 +61,6 @@ describe('IO', () => { it('chainRec', () => { const f = (n: number) => (n < 15000 ? _.of(E.left(n + 1)) : _.of(E.right('ok ' + n))) - assert.deepStrictEqual(_.chainRecIO.chainRec(0, f)(), 'ok 15000') + assert.deepStrictEqual(_.ChainRec.chainRec(0, f)(), 'ok 15000') }) }) diff --git a/test/Identity.ts b/test/Identity.ts index f5aecaa18..a259800cb 100644 --- a/test/Identity.ts +++ b/test/Identity.ts @@ -85,7 +85,7 @@ describe('Identity', () => { }) it('traverse', () => { - const traverse = _.traverse(O.applicativeOption) + const traverse = _.traverse(O.Applicative) assert.deepStrictEqual(pipe(1, traverse(O.some)), O.some(1)) assert.deepStrictEqual( pipe( @@ -97,7 +97,7 @@ describe('Identity', () => { }) it('sequence', () => { - const sequence = _.sequence(O.applicativeOption) + const sequence = _.sequence(O.Applicative) assert.deepStrictEqual(sequence(O.some('a')), O.some('a')) assert.deepStrictEqual(sequence(O.none), O.none) }) @@ -111,7 +111,7 @@ describe('Identity', () => { }) it('ChainRec', () => { - const x = _.chainRecIdentity.chainRec(0, (a) => (a < 10 ? left(a + 1) : right(a))) + const x = _.ChainRec.chainRec(0, (a) => (a < 10 ? left(a + 1) : right(a))) const expected = 10 assert.deepStrictEqual(x, expected) }) diff --git a/test/Map.ts b/test/Map.ts index 33642c67a..89b6ae103 100644 --- a/test/Map.ts +++ b/test/Map.ts @@ -295,10 +295,10 @@ describe('Map', () => { it('toUnfoldable', () => { const a1 = new Map([[{ id: 'a' }, 1]]) - const toUnfoldableO = _.toUnfoldable(ordUser, A.unfoldableArray) + const toUnfoldableO = _.toUnfoldable(ordUser, A.Unfoldable) assert.deepStrictEqual(toUnfoldableO(a1), [[{ id: 'a' }, 1]]) - const toUnfoldable = _.toUnfoldable(ordKey, A.unfoldableArray) + const toUnfoldable = _.toUnfoldable(ordKey, A.Unfoldable) assert.deepStrictEqual( toUnfoldable( new Map([ @@ -850,7 +850,7 @@ describe('Map', () => { }) it('traverse', () => { - const traverse = W.traverse(O.applicativeOption) + const traverse = W.traverse(O.Applicative) const x = new Map([ [{ id: 'k1' }, 1], [{ id: 'k2' }, 2] @@ -866,7 +866,7 @@ describe('Map', () => { }) it('sequence', () => { - const sequence = W.sequence(O.applicativeOption) + const sequence = W.sequence(O.Applicative) assert.deepStrictEqual( sequence( new Map([ @@ -893,7 +893,7 @@ describe('Map', () => { }) it('traverseWithIndex', () => { - const traverseWithIndex = W.traverseWithIndex(O.applicativeOption) + const traverseWithIndex = W.traverseWithIndex(O.Applicative) assert.deepStrictEqual( traverseWithIndex( new Map([ @@ -922,7 +922,7 @@ describe('Map', () => { }) it('wither', async () => { - const wither = W.wither(T.applicativeTaskPar) + const wither = W.wither(T.ApplicativePar) const f = (n: number) => T.of(p(n) ? O.some(n + 1) : O.none) assert.deepStrictEqual(await wither(_.empty, f)(), _.empty) assert.deepStrictEqual( @@ -938,7 +938,7 @@ describe('Map', () => { }) it('wilt', async () => { - const wilt = W.wilt(T.applicativeTaskPar) + const wilt = W.wilt(T.ApplicativePar) const f = (n: number) => T.of(p(n) ? right(n + 1) : left(n - 1)) assert.deepStrictEqual(await wilt(_.empty, f)(), { left: _.empty, right: _.empty }) assert.deepStrictEqual( @@ -1028,7 +1028,7 @@ describe('Map', () => { it('fromFoldable', () => { const a1 = new Map([[{ id: 'a' }, 1]]) const a2 = new Map([[{ id: 'a' }, 2]]) - const fromFoldableS1 = _.fromFoldable(eqUser, getFirstSemigroup(), A.foldableArray) + const fromFoldableS1 = _.fromFoldable(eqUser, getFirstSemigroup(), A.Foldable) assert.deepStrictEqual(fromFoldableS1([[{ id: 'a' }, 1]]), a1) assert.deepStrictEqual( fromFoldableS1([ @@ -1037,7 +1037,7 @@ describe('Map', () => { ]), a1 ) - const fromFoldableS2 = _.fromFoldable(eqUser, getLastSemigroup(), A.foldableArray) + const fromFoldableS2 = _.fromFoldable(eqUser, getLastSemigroup(), A.Foldable) assert.deepStrictEqual( fromFoldableS2([ [{ id: 'a' }, 1], diff --git a/test/NonEmptyArray.ts b/test/NonEmptyArray.ts index 7456fc532..b79ed0398 100644 --- a/test/NonEmptyArray.ts +++ b/test/NonEmptyArray.ts @@ -14,21 +14,21 @@ describe('NonEmptyArray', () => { assert.deepStrictEqual( pipe( [1, 2, 3], - _.traverse(O.applicativeOption)((n) => (n >= 0 ? O.some(n) : O.none)) + _.traverse(O.Applicative)((n) => (n >= 0 ? O.some(n) : O.none)) ), O.some([1, 2, 3]) ) assert.deepStrictEqual( pipe( [1, 2, 3], - _.traverse(O.applicativeOption)((n) => (n >= 2 ? O.some(n) : O.none)) + _.traverse(O.Applicative)((n) => (n >= 2 ? O.some(n) : O.none)) ), O.none ) }) it('sequence', () => { - const sequence = _.sequence(O.applicativeOption) + const sequence = _.sequence(O.Applicative) assert.deepStrictEqual(sequence([O.some(1), O.some(2), O.some(3)]), O.some([1, 2, 3])) assert.deepStrictEqual(sequence([O.none, O.some(2), O.some(3)]), O.none) }) @@ -37,14 +37,14 @@ describe('NonEmptyArray', () => { assert.deepStrictEqual( pipe( ['a', 'bb'], - _.traverseWithIndex(O.applicativeOption)((i, s) => (s.length >= 1 ? O.some(s + i) : O.none)) + _.traverseWithIndex(O.Applicative)((i, s) => (s.length >= 1 ? O.some(s + i) : O.none)) ), O.some(['a0', 'bb1']) ) assert.deepStrictEqual( pipe( ['a', 'bb'], - _.traverseWithIndex(O.applicativeOption)((i, s) => (s.length > 1 ? O.some(s + i) : O.none)) + _.traverseWithIndex(O.Applicative)((i, s) => (s.length > 1 ? O.some(s + i) : O.none)) ), O.none ) diff --git a/test/Option.ts b/test/Option.ts index 2498d992a..e481b9676 100644 --- a/test/Option.ts +++ b/test/Option.ts @@ -166,41 +166,41 @@ describe('Option', () => { assert.deepStrictEqual( pipe( _.some('hello'), - _.traverse(A.applicativeArray)(() => []) + _.traverse(A.Applicative)(() => []) ), [] ) assert.deepStrictEqual( pipe( _.some('hello'), - _.traverse(A.applicativeArray)((s) => [s.length]) + _.traverse(A.Applicative)((s) => [s.length]) ), [_.some(5)] ) assert.deepStrictEqual( pipe( _.none, - _.traverse(A.applicativeArray)((s) => [s]) + _.traverse(A.Applicative)((s) => [s]) ), [_.none] ) }) it('sequence', () => { - const sequence = _.sequence(A.applicativeArray) + const sequence = _.sequence(A.Applicative) assert.deepStrictEqual(sequence(_.some([1, 2])), [_.some(1), _.some(2)]) assert.deepStrictEqual(sequence(_.none), [_.none]) }) it('wither', async () => { - const wither = _.wither(T.applicativeTaskPar)((n: number) => T.of(p(n) ? _.some(n + 1) : _.none)) + const wither = _.wither(T.ApplicativePar)((n: number) => T.of(p(n) ? _.some(n + 1) : _.none)) assert.deepStrictEqual(await pipe(_.none, wither)(), _.none) assert.deepStrictEqual(await pipe(_.some(1), wither)(), _.none) assert.deepStrictEqual(await pipe(_.some(3), wither)(), _.some(4)) }) it('wilt', async () => { - const wilt = _.wilt(T.applicativeTaskPar)((n: number) => T.of(p(n) ? right(n + 1) : left(n - 1))) + const wilt = _.wilt(T.ApplicativePar)((n: number) => T.of(p(n) ? right(n + 1) : left(n - 1))) assert.deepStrictEqual(await pipe(_.none, wilt)(), { left: _.none, right: _.none }) assert.deepStrictEqual(await pipe(_.some(1), wilt)(), { left: _.some(0), right: _.none }) assert.deepStrictEqual(await pipe(_.some(3), wilt)(), { left: _.none, right: _.some(4) }) diff --git a/test/OptionT.ts b/test/OptionT.ts index 78c9dfa82..5d47ceac9 100644 --- a/test/OptionT.ts +++ b/test/OptionT.ts @@ -3,7 +3,7 @@ import * as O from '../src/Option' import { getOptionM } from '../src/OptionT' import * as T from '../src/Task' -const MT = getOptionM(T.monadTask) +const MT = getOptionM(T.Monad) describe('OptionT', () => { it('map', () => { diff --git a/test/ReaderTask.ts b/test/ReaderTask.ts index dd67d3624..edc502064 100644 --- a/test/ReaderTask.ts +++ b/test/ReaderTask.ts @@ -144,10 +144,10 @@ describe('ReaderTask', () => { }) it('applicativeTaskEitherSeq', async () => { - await assertSeq(_.applicativeReaderTaskSeq, { fromTask: _.fromTask }, (fa) => fa(null)()) + await assertSeq(_.ApplicativeSeq, { fromTask: _.fromTask }, (fa) => fa(null)()) }) it('applicativeTaskEitherPar', async () => { - await assertPar(_.applicativeReaderTaskPar, { fromTask: _.fromTask }, (fa) => fa(null)()) + await assertPar(_.ApplicativePar, { fromTask: _.fromTask }, (fa) => fa(null)()) }) }) diff --git a/test/ReaderTaskEither.ts b/test/ReaderTaskEither.ts index 897b9f1c2..83cdfada1 100644 --- a/test/ReaderTaskEither.ts +++ b/test/ReaderTaskEither.ts @@ -148,11 +148,11 @@ describe('ReaderTaskEither', () => { // ------------------------------------------------------------------------------------- it('applicativeReaderTaskEitherSeq', async () => { - await assertSeq(_.applicativeReaderTaskEitherSeq, { fromTask: _.fromTask }, (fa) => fa(null)()) + await assertSeq(_.ApplicativeSeq, { fromTask: _.fromTask }, (fa) => fa(null)()) }) it('applicativeReaderTaskEitherPar', async () => { - await assertPar(_.applicativeReaderTaskEitherPar, { fromTask: _.fromTask }, (fa) => fa(null)()) + await assertPar(_.ApplicativePar, { fromTask: _.fromTask }, (fa) => fa(null)()) }) // ------------------------------------------------------------------------------------- @@ -325,7 +325,7 @@ describe('ReaderTaskEither', () => { }) it('getApplicativeReaderTaskValidation', async () => { - const A = _.getApplicativeReaderTaskValidation(T.applicativeTaskPar, semigroupString) + const A = _.getApplicativeReaderTaskValidation(T.ApplicativePar, semigroupString) assert.deepStrictEqual(await sequenceT(A)(_.left('a'), _.left('b'))(null)(), E.left('ab')) const AV = _.getReaderTaskValidation(semigroupString) assert.deepStrictEqual(await sequenceT(AV)(_.left('a'), _.left('b'))(null)(), E.left('ab')) diff --git a/test/ReadonlyArray.ts b/test/ReadonlyArray.ts index 4a56ebe49..cf2009865 100644 --- a/test/ReadonlyArray.ts +++ b/test/ReadonlyArray.ts @@ -14,15 +14,13 @@ import * as T from '../src/Task' describe('ReadonlyArray', () => { describe('pipeables', () => { it('traverse', () => { - const traverse = _.traverse(O.applicativeOption)( - (n: number): O.Option => (n % 2 === 0 ? O.none : O.some(n)) - ) + const traverse = _.traverse(O.Applicative)((n: number): O.Option => (n % 2 === 0 ? O.none : O.some(n))) assert.deepStrictEqual(traverse([1, 2]), O.none) assert.deepStrictEqual(traverse([1, 3]), O.some([1, 3])) }) it('sequence', () => { - const sequence = _.sequence(O.applicativeOption) + const sequence = _.sequence(O.Applicative) assert.deepStrictEqual(sequence([O.some(1), O.some(3)]), O.some([1, 3])) assert.deepStrictEqual(sequence([O.some(1), O.none]), O.none) }) @@ -31,14 +29,14 @@ describe('ReadonlyArray', () => { assert.deepStrictEqual( pipe( ['a', 'bb'], - _.traverseWithIndex(O.applicativeOption)((i, s) => (s.length >= 1 ? O.some(s + i) : O.none)) + _.traverseWithIndex(O.Applicative)((i, s) => (s.length >= 1 ? O.some(s + i) : O.none)) ), O.some(['a0', 'bb1']) ) assert.deepStrictEqual( pipe( ['a', 'bb'], - _.traverseWithIndex(O.applicativeOption)((i, s) => (s.length > 1 ? O.some(s + i) : O.none)) + _.traverseWithIndex(O.Applicative)((i, s) => (s.length > 1 ? O.some(s + i) : O.none)) ), O.none ) @@ -64,13 +62,13 @@ describe('ReadonlyArray', () => { }) it('wither', async () => { - const wither = _.wither(T.applicativeTaskPar)((n: number) => T.of(n > 2 ? O.some(n + 1) : O.none)) + const wither = _.wither(T.ApplicativePar)((n: number) => T.of(n > 2 ? O.some(n + 1) : O.none)) assert.deepStrictEqual(await pipe([], wither)(), []) assert.deepStrictEqual(await pipe([1, 3], wither)(), [4]) }) it('wilt', async () => { - const wilt = _.wilt(T.applicativeTaskPar)((n: number) => T.of(n > 2 ? E.right(n + 1) : E.left(n - 1))) + const wilt = _.wilt(T.ApplicativePar)((n: number) => T.of(n > 2 ? E.right(n + 1) : E.left(n - 1))) assert.deepStrictEqual(await pipe([], wilt)(), { left: [], right: [] }) assert.deepStrictEqual(await pipe([1, 3], wilt)(), { left: [0], right: [4] }) }) diff --git a/test/ReadonlyMap.ts b/test/ReadonlyMap.ts index 10adbaf43..2902ec828 100644 --- a/test/ReadonlyMap.ts +++ b/test/ReadonlyMap.ts @@ -390,10 +390,10 @@ describe('ReadonlyMap', () => { it('toUnfoldable', () => { const a1 = new Map([[{ id: 'a' }, 1]]) - const toUnfoldableO = _.toUnfoldable(ordUser, A.unfoldableArray) + const toUnfoldableO = _.toUnfoldable(ordUser, A.Unfoldable) assert.deepStrictEqual(toUnfoldableO(a1), [[{ id: 'a' }, 1]]) - const toUnfoldable = _.toUnfoldable(ordKey, A.unfoldableArray) + const toUnfoldable = _.toUnfoldable(ordKey, A.Unfoldable) assert.deepStrictEqual( toUnfoldable( new Map([ @@ -781,7 +781,7 @@ describe('ReadonlyMap', () => { log.push(message) } - W.traverseWithIndex(IO.applicativeIO)( + W.traverseWithIndex(IO.Applicative)( new Map([ ['b', append('b')], ['a', append('a')] @@ -886,7 +886,7 @@ describe('ReadonlyMap', () => { }) it('traverse', () => { - const traverse = W.traverse(O.applicativeOption) + const traverse = W.traverse(O.Applicative) const x = new Map([ [{ id: 'k1' }, 1], [{ id: 'k2' }, 2] @@ -902,7 +902,7 @@ describe('ReadonlyMap', () => { }) it('sequence', () => { - const sequence = W.sequence(O.applicativeOption) + const sequence = W.sequence(O.Applicative) assert.deepStrictEqual( sequence( new Map([ @@ -929,7 +929,7 @@ describe('ReadonlyMap', () => { }) it('traverseWithIndex', () => { - const traverseWithIndex = W.traverseWithIndex(O.applicativeOption) + const traverseWithIndex = W.traverseWithIndex(O.Applicative) assert.deepStrictEqual( traverseWithIndex( new Map([ @@ -958,7 +958,7 @@ describe('ReadonlyMap', () => { }) it('wither', async () => { - const wither = W.wither(T.applicativeTaskPar) + const wither = W.wither(T.ApplicativePar) const f = (n: number) => T.of(p(n) ? O.some(n + 1) : O.none) assert.deepStrictEqual(await wither(_.empty, f)(), _.empty) assert.deepStrictEqual( @@ -974,7 +974,7 @@ describe('ReadonlyMap', () => { }) it('wilt', async () => { - const wilt = W.wilt(T.applicativeTaskPar) + const wilt = W.wilt(T.ApplicativePar) const f = (n: number) => T.of(p(n) ? right(n + 1) : left(n - 1)) assert.deepStrictEqual(await wilt(_.empty, f)(), { left: _.empty, right: _.empty }) assert.deepStrictEqual( @@ -1064,7 +1064,7 @@ describe('ReadonlyMap', () => { it('fromFoldable', () => { const a1 = new Map([[{ id: 'a' }, 1]]) const a2 = new Map([[{ id: 'a' }, 2]]) - const fromFoldableS1 = _.fromFoldable(eqUser, getFirstSemigroup(), A.foldableArray) + const fromFoldableS1 = _.fromFoldable(eqUser, getFirstSemigroup(), A.Foldable) assert.deepStrictEqual(fromFoldableS1([[{ id: 'a' }, 1]]), a1) assert.deepStrictEqual( fromFoldableS1([ @@ -1073,7 +1073,7 @@ describe('ReadonlyMap', () => { ]), a1 ) - const fromFoldableS2 = _.fromFoldable(eqUser, getLastSemigroup(), A.foldableArray) + const fromFoldableS2 = _.fromFoldable(eqUser, getLastSemigroup(), A.Foldable) assert.deepStrictEqual( fromFoldableS2([ [{ id: 'a' }, 1], diff --git a/test/ReadonlyNonEmptyArray.ts b/test/ReadonlyNonEmptyArray.ts index 79d0603e3..43c783a5d 100644 --- a/test/ReadonlyNonEmptyArray.ts +++ b/test/ReadonlyNonEmptyArray.ts @@ -14,21 +14,21 @@ describe('ReadonlyNonEmptyArray', () => { assert.deepStrictEqual( pipe( [1, 2, 3], - _.traverse(O.applicativeOption)((n) => (n >= 0 ? O.some(n) : O.none)) + _.traverse(O.Applicative)((n) => (n >= 0 ? O.some(n) : O.none)) ), O.some([1, 2, 3]) ) assert.deepStrictEqual( pipe( [1, 2, 3], - _.traverse(O.applicativeOption)((n) => (n >= 2 ? O.some(n) : O.none)) + _.traverse(O.Applicative)((n) => (n >= 2 ? O.some(n) : O.none)) ), O.none ) }) it('sequence', () => { - const sequence = _.sequence(O.applicativeOption) + const sequence = _.sequence(O.Applicative) assert.deepStrictEqual(sequence([O.some(1), O.some(2), O.some(3)]), O.some([1, 2, 3])) assert.deepStrictEqual(sequence([O.none, O.some(2), O.some(3)]), O.none) }) @@ -37,14 +37,14 @@ describe('ReadonlyNonEmptyArray', () => { assert.deepStrictEqual( pipe( ['a', 'bb'], - _.traverseWithIndex(O.applicativeOption)((i, s) => (s.length >= 1 ? O.some(s + i) : O.none)) + _.traverseWithIndex(O.Applicative)((i, s) => (s.length >= 1 ? O.some(s + i) : O.none)) ), O.some(['a0', 'bb1']) ) assert.deepStrictEqual( pipe( ['a', 'bb'], - _.traverseWithIndex(O.applicativeOption)((i, s) => (s.length > 1 ? O.some(s + i) : O.none)) + _.traverseWithIndex(O.Applicative)((i, s) => (s.length > 1 ? O.some(s + i) : O.none)) ), O.none ) diff --git a/test/ReadonlyRecord.ts b/test/ReadonlyRecord.ts index 17822b0d1..45e74b487 100644 --- a/test/ReadonlyRecord.ts +++ b/test/ReadonlyRecord.ts @@ -21,7 +21,7 @@ describe('ReadonlyRecord', () => { const double = (n: number): number => n * 2 assert.deepStrictEqual(pipe({ k1: 1, k2: 2 }, _.map(double)), { k1: 2, k2: 4 }) assert.deepStrictEqual(pipe({ a: 1, b: 2 }, _.map(double)), { a: 2, b: 4 }) - assert.deepStrictEqual(_.functorRecord.map({ a: 1, b: 2 }, double), { a: 2, b: 4 }) + assert.deepStrictEqual(_.Functor.map({ a: 1, b: 2 }, double), { a: 2, b: 4 }) }) it('reduce', () => { @@ -191,23 +191,23 @@ describe('ReadonlyRecord', () => { it('traverse', () => { assert.deepStrictEqual( - _.traverse(O.applicativeOption)((n: number) => (n <= 2 ? O.some(n) : O.none))({ a: 1, b: 2 }), + _.traverse(O.Applicative)((n: number) => (n <= 2 ? O.some(n) : O.none))({ a: 1, b: 2 }), O.some({ a: 1, b: 2 }) ) assert.deepStrictEqual( - _.traverse(O.applicativeOption)((n: number) => (n >= 2 ? O.some(n) : O.none))({ a: 1, b: 2 }), + _.traverse(O.Applicative)((n: number) => (n >= 2 ? O.some(n) : O.none))({ a: 1, b: 2 }), O.none ) }) it('sequence', () => { - const sequence = _.sequence(O.applicativeOption) + const sequence = _.sequence(O.Applicative) assert.deepStrictEqual(sequence({ a: O.some(1), b: O.some(2) }), O.some({ a: 1, b: 2 })) assert.deepStrictEqual(sequence({ a: O.none, b: O.some(2) }), O.none) }) it('traverseWithIndex', () => { - const traverseWithIndex = _.traverseWithIndex(O.applicativeOption)( + const traverseWithIndex = _.traverseWithIndex(O.Applicative)( (k, n: number): O.Option => (k !== 'a' ? O.some(n) : O.none) ) assert.deepStrictEqual(pipe({ a: 1, b: 2 }, traverseWithIndex), O.none) @@ -215,13 +215,13 @@ describe('ReadonlyRecord', () => { }) it('wither', async () => { - const wither = _.wither(T.applicativeTaskPar)((n: number) => T.of(p(n) ? O.some(n + 1) : O.none)) + const wither = _.wither(T.ApplicativePar)((n: number) => T.of(p(n) ? O.some(n + 1) : O.none)) assert.deepStrictEqual(await pipe({}, wither)(), {}) assert.deepStrictEqual(await pipe({ a: 1, b: 3 }, wither)(), { b: 4 }) }) it('wilt', async () => { - const wilt = _.wilt(T.applicativeTaskPar)((n: number) => T.of(p(n) ? right(n + 1) : left(n - 1))) + const wilt = _.wilt(T.ApplicativePar)((n: number) => T.of(p(n) ? right(n + 1) : left(n - 1))) assert.deepStrictEqual(await pipe({}, wilt)(), { left: {}, right: {} }) assert.deepStrictEqual(await pipe({ a: 1, b: 3 }, wilt)(), { left: { a: 0 }, right: { b: 4 } }) }) @@ -256,11 +256,11 @@ describe('ReadonlyRecord', () => { it('fromFoldable', () => { const First = getFirstSemigroup() - assert.deepStrictEqual(_.fromFoldable(First, A.foldableArray)([['a', 1]]), { a: 1 }) + assert.deepStrictEqual(_.fromFoldable(First, A.Foldable)([['a', 1]]), { a: 1 }) assert.deepStrictEqual( _.fromFoldable( First, - A.foldableArray + A.Foldable )([ ['a', 1], ['a', 2] @@ -273,7 +273,7 @@ describe('ReadonlyRecord', () => { assert.deepStrictEqual( _.fromFoldable( Last, - A.foldableArray + A.Foldable )([ ['a', 1], ['a', 2] @@ -296,7 +296,7 @@ describe('ReadonlyRecord', () => { }) it('toUnfoldable', () => { - assert.deepStrictEqual(_.toUnfoldable(A.unfoldableArray)({ a: 1 }), [['a', 1]]) + assert.deepStrictEqual(_.toUnfoldable(A.Unfoldable)({ a: 1 }), [['a', 1]]) }) it('traverseWithIndex should sort the keys', () => { @@ -308,7 +308,7 @@ describe('ReadonlyRecord', () => { pipe( { b: append('b'), a: append('a') }, - _.traverseWithIndex(IO.applicativeIO)((_, io) => io) + _.traverseWithIndex(IO.Applicative)((_, io) => io) )() assert.deepStrictEqual(log, ['a', 'b']) }) @@ -368,7 +368,7 @@ describe('ReadonlyRecord', () => { it('fromFoldableMap', () => { const zipObject = (keys: ReadonlyArray, values: ReadonlyArray): _.ReadonlyRecord => - _.fromFoldableMap(getLastSemigroup(), A.foldableArray)(A.zip(keys, values), identity) + _.fromFoldableMap(getLastSemigroup(), A.Foldable)(A.zip(keys, values), identity) assert.deepStrictEqual(zipObject(['a', 'b'], [1, 2, 3]), { a: 1, b: 2 }) @@ -384,7 +384,7 @@ describe('ReadonlyRecord', () => { ] assert.deepStrictEqual( - _.fromFoldableMap(getLastSemigroup(), A.foldableArray)(users, (user) => [user.id, user]), + _.fromFoldableMap(getLastSemigroup(), A.Foldable)(users, (user) => [user.id, user]), { id1: { id: 'id1', name: 'name3' }, id2: { id: 'id2', name: 'name2' } diff --git a/test/ReadonlyTuple.ts b/test/ReadonlyTuple.ts index 3c43cba09..5be60e080 100644 --- a/test/ReadonlyTuple.ts +++ b/test/ReadonlyTuple.ts @@ -66,13 +66,13 @@ describe('ReadonlyTuple', () => { }) it('traverse', () => { - const traverse = _.traverse(O.applicativeOption)((n: number) => (n > 1 ? O.some(n) : O.none)) + const traverse = _.traverse(O.Applicative)((n: number) => (n > 1 ? O.some(n) : O.none)) assert.deepStrictEqual(traverse([2, 'a']), O.some([2, 'a'])) assert.deepStrictEqual(traverse([1, 'a']), O.none) }) it('sequence', () => { - const sequence = _.sequence(O.applicativeOption) + const sequence = _.sequence(O.Applicative) assert.deepStrictEqual(sequence([O.some(1), 'a']), O.some([1, 'a'])) assert.deepStrictEqual(sequence([O.none, 'a']), O.none) }) diff --git a/test/Record.ts b/test/Record.ts index 69e075db3..1844fc514 100644 --- a/test/Record.ts +++ b/test/Record.ts @@ -195,32 +195,32 @@ describe('ReadonlyRecord', () => { it('traverse', () => { assert.deepStrictEqual( - _.traverse(O.applicativeOption)((n: number) => (n <= 2 ? O.some(n) : O.none))({ a: 1, b: 2 }), + _.traverse(O.Applicative)((n: number) => (n <= 2 ? O.some(n) : O.none))({ a: 1, b: 2 }), O.some({ a: 1, b: 2 }) ) assert.deepStrictEqual( - _.traverse(O.applicativeOption)((n: number) => (n >= 2 ? O.some(n) : O.none))({ a: 1, b: 2 }), + _.traverse(O.Applicative)((n: number) => (n >= 2 ? O.some(n) : O.none))({ a: 1, b: 2 }), O.none ) assert.deepStrictEqual( - _.traversableRecord.traverse(O.applicativeOption)({ a: 1, b: 2 }, (n: number) => (n <= 2 ? O.some(n) : O.none)), + _.Traversable.traverse(O.Applicative)({ a: 1, b: 2 }, (n: number) => (n <= 2 ? O.some(n) : O.none)), O.some({ a: 1, b: 2 }) ) assert.deepStrictEqual( - _.traversableRecord.traverse(O.applicativeOption)({ a: 1, b: 2 }, (n: number) => (n >= 2 ? O.some(n) : O.none)), + _.Traversable.traverse(O.Applicative)({ a: 1, b: 2 }, (n: number) => (n >= 2 ? O.some(n) : O.none)), O.none ) }) it('sequence', () => { - const sequence = _.sequence(O.applicativeOption) + const sequence = _.sequence(O.Applicative) assert.deepStrictEqual(sequence({ a: O.some(1), b: O.some(2) }), O.some({ a: 1, b: 2 })) assert.deepStrictEqual(sequence({ a: O.none, b: O.some(2) }), O.none) }) it('traverseWithIndex', () => { - const traverseWithIndex = _.traverseWithIndex(O.applicativeOption)( + const traverseWithIndex = _.traverseWithIndex(O.Applicative)( (k, n: number): O.Option => (k !== 'a' ? O.some(n) : O.none) ) assert.deepStrictEqual(pipe({ a: 1, b: 2 }, traverseWithIndex), O.none) @@ -228,13 +228,13 @@ describe('ReadonlyRecord', () => { }) it('wither', async () => { - const wither = _.wither(T.applicativeTaskPar)((n: number) => T.of(p(n) ? O.some(n + 1) : O.none)) + const wither = _.wither(T.ApplicativePar)((n: number) => T.of(p(n) ? O.some(n + 1) : O.none)) assert.deepStrictEqual(await pipe({}, wither)(), {}) assert.deepStrictEqual(await pipe({ a: 1, b: 3 }, wither)(), { b: 4 }) }) it('wilt', async () => { - const wilt = _.wilt(T.applicativeTaskPar)((n: number) => T.of(p(n) ? right(n + 1) : left(n - 1))) + const wilt = _.wilt(T.ApplicativePar)((n: number) => T.of(p(n) ? right(n + 1) : left(n - 1))) assert.deepStrictEqual(await pipe({}, wilt)(), { left: {}, right: {} }) assert.deepStrictEqual(await pipe({ a: 1, b: 3 }, wilt)(), { left: { a: 0 }, right: { b: 4 } }) }) @@ -269,11 +269,11 @@ describe('ReadonlyRecord', () => { it('fromFoldable', () => { const First = getFirstSemigroup() - assert.deepStrictEqual(_.fromFoldable(First, A.foldableArray)([['a', 1]]), { a: 1 }) + assert.deepStrictEqual(_.fromFoldable(First, A.Foldable)([['a', 1]]), { a: 1 }) assert.deepStrictEqual( _.fromFoldable( First, - A.foldableArray + A.Foldable )([ ['a', 1], ['a', 2] @@ -286,7 +286,7 @@ describe('ReadonlyRecord', () => { assert.deepStrictEqual( _.fromFoldable( Last, - A.foldableArray + A.Foldable )([ ['a', 1], ['a', 2] @@ -298,7 +298,7 @@ describe('ReadonlyRecord', () => { }) it('toUnfoldable', () => { - assert.deepStrictEqual(_.toUnfoldable(A.unfoldableArray)({ a: 1 }), [['a', 1]]) + assert.deepStrictEqual(_.toUnfoldable(A.Unfoldable)({ a: 1 }), [['a', 1]]) }) it('traverseWithIndex should sort the keys', () => { @@ -310,7 +310,7 @@ describe('ReadonlyRecord', () => { pipe( { b: append('b'), a: append('a') }, - _.traverseWithIndex(IO.applicativeIO)((_, io) => io) + _.traverseWithIndex(IO.Applicative)((_, io) => io) )() assert.deepStrictEqual(log, ['a', 'b']) }) @@ -371,7 +371,7 @@ describe('ReadonlyRecord', () => { it('fromFoldableMap', () => { // tslint:disable-next-line: readonly-array const zipObject = (keys: Array, values: Array): Record => - _.fromFoldableMap(getLastSemigroup(), A.foldableArray)(A.zip(keys, values), identity) + _.fromFoldableMap(getLastSemigroup(), A.Foldable)(A.zip(keys, values), identity) assert.deepStrictEqual(zipObject(['a', 'b'], [1, 2, 3]), { a: 1, b: 2 }) @@ -388,7 +388,7 @@ describe('ReadonlyRecord', () => { ] assert.deepStrictEqual( - _.fromFoldableMap(getLastSemigroup(), A.foldableArray)(users, (user) => [user.id, user]), + _.fromFoldableMap(getLastSemigroup(), A.Foldable)(users, (user) => [user.id, user]), { id1: { id: 'id1', name: 'name3' }, id2: { id: 'id2', name: 'name2' } diff --git a/test/StateReaderTaskEither.ts b/test/StateReaderTaskEither.ts index de8aee6c2..e45f62afa 100644 --- a/test/StateReaderTaskEither.ts +++ b/test/StateReaderTaskEither.ts @@ -144,7 +144,7 @@ describe('StateReaderTaskEither', () => { // ------------------------------------------------------------------------------------- it('applicativeStateReaderTaskEither', async () => { - await assertSeq(_.applicativeStateReaderTaskEither, { fromTask: _.fromTask }, (fa) => fa(null)(null)()) + await assertSeq(_.Applicative, { fromTask: _.fromTask }, (fa) => fa(null)(null)()) }) // ------------------------------------------------------------------------------------- @@ -170,7 +170,7 @@ describe('StateReaderTaskEither', () => { append('start 2'), _.chain(() => append('end 2')) ) - const sequence = A.sequence(_.applicativeStateReaderTaskEither) + const sequence = A.sequence(_.Applicative) assert.deepStrictEqual(await sequence([t1, t2])({})({})(), E.right([[2, 4], {}])) assert.deepStrictEqual(log, ['start 1', 'end 1', 'start 2', 'end 2']) }) diff --git a/test/Strong.ts b/test/Strong.ts index 1d6265a79..dbb3ccd83 100644 --- a/test/Strong.ts +++ b/test/Strong.ts @@ -6,14 +6,14 @@ describe('Strong', () => { it('splitStrong', () => { const ab = (s: string) => s.length const cd = (n: number) => n >= 2 - assert.deepStrictEqual(splitStrong({ ...R.strongReader, ...R.categoryReader })(ab, cd)(['foo', 2]), [3, true]) - assert.deepStrictEqual(splitStrong({ ...R.strongReader, ...R.categoryReader })(ab, cd)(['a', 1]), [1, false]) + assert.deepStrictEqual(splitStrong({ ...R.Strong, ...R.Category })(ab, cd)(['foo', 2]), [3, true]) + assert.deepStrictEqual(splitStrong({ ...R.Strong, ...R.Category })(ab, cd)(['a', 1]), [1, false]) }) it('fanout', () => { const ab = (s: string) => s.length const ac = (s: string) => s === s.toLowerCase() - assert.deepStrictEqual(fanout({ ...R.strongReader, ...R.categoryReader })(ab, ac)('foo'), [3, true]) - assert.deepStrictEqual(fanout({ ...R.strongReader, ...R.categoryReader })(ab, ac)('A'), [1, false]) + assert.deepStrictEqual(fanout({ ...R.Strong, ...R.Category })(ab, ac)('foo'), [3, true]) + assert.deepStrictEqual(fanout({ ...R.Strong, ...R.Category })(ab, ac)('A'), [1, false]) }) }) diff --git a/test/Task.ts b/test/Task.ts index 3c6d48f44..cba683f76 100644 --- a/test/Task.ts +++ b/test/Task.ts @@ -66,11 +66,11 @@ describe('Task', () => { // ------------------------------------------------------------------------------------- it('applicativeTaskSeq', async () => { - await assertSeq(_.applicativeTaskSeq, { fromTask: _.fromTask }, (fa) => fa()) + await assertSeq(_.ApplicativeSeq, { fromTask: _.fromTask }, (fa) => fa()) }) it('applicativeTaskPar', async () => { - await assertPar(_.applicativeTaskPar, { fromTask: _.fromTask }, (fa) => fa()) + await assertPar(_.ApplicativePar, { fromTask: _.fromTask }, (fa) => fa()) }) describe('getRaceMonoid', () => { diff --git a/test/TaskEither.ts b/test/TaskEither.ts index fbac274cb..c49b294e3 100644 --- a/test/TaskEither.ts +++ b/test/TaskEither.ts @@ -95,7 +95,7 @@ describe('TaskEither', () => { // ------------------------------------------------------------------------------------- it('getApplicativeTaskValidation', async () => { - const A = _.getApplicativeTaskValidation(T.applicativeTaskPar, semigroupString) + const A = _.getApplicativeTaskValidation(T.ApplicativePar, semigroupString) assert.deepStrictEqual(await sequenceT(A)(_.left('a'), _.left('b'))(), E.left('ab')) const AV = _.getTaskValidation(semigroupString) assert.deepStrictEqual(await sequenceT(AV)(_.left('a'), _.left('b'))(), E.left('ab')) @@ -185,11 +185,11 @@ describe('TaskEither', () => { }) it('applicativeTaskEitherSeq', async () => { - await assertSeq(_.applicativeTaskEitherSeq, { fromTask: _.fromTask }, (fa) => fa()) + await assertSeq(_.ApplicativeSeq, { fromTask: _.fromTask }, (fa) => fa()) }) it('applicativeTaskEitherPar', async () => { - await assertPar(_.applicativeTaskEitherPar, { fromTask: _.fromTask }, (fa) => fa()) + await assertPar(_.ApplicativePar, { fromTask: _.fromTask }, (fa) => fa()) }) // ------------------------------------------------------------------------------------- diff --git a/test/TaskThese.ts b/test/TaskThese.ts index 91bfcc3e6..bd027a718 100644 --- a/test/TaskThese.ts +++ b/test/TaskThese.ts @@ -39,11 +39,11 @@ describe('TaskThese', () => { describe('getApplicative', () => { it('Par', async () => { - await assertSeq(_.getApplicative(T.applicativeTaskSeq, semigroupString), { fromTask: _.fromTask }, (fa) => fa()) + await assertSeq(_.getApplicative(T.ApplicativeSeq, semigroupString), { fromTask: _.fromTask }, (fa) => fa()) }) it('Seq', async () => { - await assertPar(_.getApplicative(T.applicativeTaskPar, semigroupString), { fromTask: _.fromTask }, (fa) => fa()) + await assertPar(_.getApplicative(T.ApplicativePar, semigroupString), { fromTask: _.fromTask }, (fa) => fa()) }) }) diff --git a/test/These.ts b/test/These.ts index 7387efcdb..52fab25f3 100644 --- a/test/These.ts +++ b/test/These.ts @@ -70,7 +70,7 @@ describe('These', () => { }) it('traverse', () => { - const traverse = _.traverse(O.applicativeOption)((n: number) => (n > 1 ? O.some(n) : O.none)) + const traverse = _.traverse(O.Applicative)((n: number) => (n > 1 ? O.some(n) : O.none)) assert.deepStrictEqual(pipe(_.left('a'), traverse), O.some(_.left('a'))) assert.deepStrictEqual(pipe(_.right(2), traverse), O.some(_.right(2))) assert.deepStrictEqual(pipe(_.right(1), traverse), O.none) @@ -78,14 +78,14 @@ describe('These', () => { assert.deepStrictEqual( pipe( _.both('a', 1), - _.traverse(O.applicativeOption)((n) => (n >= 2 ? O.some(n) : O.none)) + _.traverse(O.Applicative)((n) => (n >= 2 ? O.some(n) : O.none)) ), O.none ) }) it('sequence', () => { - const sequence = _.sequence(O.applicativeOption) + const sequence = _.sequence(O.Applicative) assert.deepStrictEqual(sequence(_.left('a')), O.some(_.left('a'))) assert.deepStrictEqual(sequence(_.right(O.some(1))), O.some(_.right(1))) assert.deepStrictEqual(sequence(_.right(O.none)), O.none) diff --git a/test/Traversable.ts b/test/Traversable.ts index 071ea96e4..3b61b6359 100644 --- a/test/Traversable.ts +++ b/test/Traversable.ts @@ -9,20 +9,20 @@ export type ArrayOptionURI = typeof ArrayOptionURI describe('Traversable', () => { it('getTraversableComposition', () => { - const T = getTraversableComposition(A.traversableArray, O.traversableOption) + const T = getTraversableComposition(A.Traversable, O.Traversable) assert.deepStrictEqual( - T.traverse(O.applicativeOption)([O.some(1), O.some(2)], (n: number) => (n <= 2 ? O.some(n * 2) : O.none)), + T.traverse(O.Applicative)([O.some(1), O.some(2)], (n: number) => (n <= 2 ? O.some(n * 2) : O.none)), O.some([O.some(2), O.some(4)]) ) assert.deepStrictEqual( - T.traverse(O.applicativeOption)([O.some(1), O.some(3)], (n: number) => (n <= 2 ? O.some(n * 2) : O.none)), + T.traverse(O.Applicative)([O.some(1), O.some(3)], (n: number) => (n <= 2 ? O.some(n * 2) : O.none)), O.none ) assert.deepStrictEqual( - T.sequence(O.applicativeOption)([O.some(O.some(1)), O.some(O.some(2))]), + T.sequence(O.Applicative)([O.some(O.some(1)), O.some(O.some(2))]), O.some([O.some(1), O.some(2)]) ) - assert.deepStrictEqual(T.sequence(O.applicativeOption)([O.some(O.some(1)), O.none]), O.some([O.some(1), O.none])) - assert.deepStrictEqual(T.sequence(O.applicativeOption)([O.some(O.some(1)), O.some(O.none)]), O.none) + assert.deepStrictEqual(T.sequence(O.Applicative)([O.some(O.some(1)), O.none]), O.some([O.some(1), O.none])) + assert.deepStrictEqual(T.sequence(O.Applicative)([O.some(O.some(1)), O.some(O.none)]), O.none) }) }) diff --git a/test/Tree.ts b/test/Tree.ts index 539a78caf..facc987ba 100644 --- a/test/Tree.ts +++ b/test/Tree.ts @@ -11,12 +11,12 @@ describe('Tree', () => { describe('pipeables', () => { it('traverse', () => { const fa = _.make('a', [_.make('b'), _.make('c')]) - assert.deepStrictEqual(pipe(fa, _.traverse(O.applicativeOption)(O.some)), O.some(fa)) + assert.deepStrictEqual(pipe(fa, _.traverse(O.Applicative)(O.some)), O.some(fa)) }) it('sequence', () => { assert.deepStrictEqual( - _.sequence(O.applicativeOption)(_.make(O.some('a'), [_.make(O.some('b')), _.make(O.some('c'))])), + _.sequence(O.Applicative)(_.make(O.some('a'), [_.make(O.some('b')), _.make(O.some('c'))])), O.some(_.make('a', [_.make('b'), _.make('c')])) ) }) @@ -164,7 +164,7 @@ describe('Tree', () => { }) it('unfoldTreeM', () => { - const fa = _.unfoldTreeM(I.monadIdentity)(1, (b) => [b, b < 3 ? [b + 1, b + 2] : []]) + const fa = _.unfoldTreeM(I.Monad)(1, (b) => [b, b < 3 ? [b + 1, b + 2] : []]) const expected = _.make(1, [_.make(2, [_.make(3), _.make(4)]), _.make(3)]) assert.deepStrictEqual(fa, expected) }) diff --git a/test/pipeable.ts b/test/pipeable.ts index 4e7ff8a84..52972bd61 100644 --- a/test/pipeable.ts +++ b/test/pipeable.ts @@ -19,31 +19,31 @@ describe('pipeable', () => { }) it('Contravariant', () => { - const { contramap } = pipeable(C.contravariantConst) + const { contramap } = pipeable(C.Contravariant) assert.deepStrictEqual(contramap((s: string) => s.length * 2)(C.make(1)), 1) }) it('FunctorWithIndex', () => { - const { mapWithIndex } = pipeable(A.functorWithIndexArray) + const { mapWithIndex } = pipeable(A.Functor) assert.deepStrictEqual(mapWithIndex((i, n: number) => n * 2 + i)([1, 2, 3]), [2, 5, 8]) }) it('Apply', () => { - const { ap, apFirst, apSecond } = pipeable(A.applicativeArray) + const { ap, apFirst, apSecond } = pipeable(A.Applicative) assert.deepStrictEqual(ap([1, 2, 3])([(n) => n * 2]), [2, 4, 6]) assert.deepStrictEqual(apFirst([2])([1]), [1]) assert.deepStrictEqual(apSecond([2])([1]), [2]) }) it('Chain', () => { - const { chain, chainFirst, flatten } = pipeable(A.monadArray) + const { chain, chainFirst, flatten } = pipeable(A.Monad) assert.deepStrictEqual(chain((n: number) => [n * 2])([1, 2, 3]), [2, 4, 6]) assert.deepStrictEqual(chainFirst((n: number) => [n * 2])([1, 2, 3]), [1, 2, 3]) assert.deepStrictEqual(flatten([[1], [2], [3]]), [1, 2, 3]) }) it('Bifunctor', () => { - const { bimap, mapLeft } = pipeable(E.bifunctorEither) + const { bimap, mapLeft } = pipeable(E.Bifunctor) assert.deepStrictEqual( bimap( (s: string) => s.length, @@ -63,32 +63,32 @@ describe('pipeable', () => { }) it('Extend', () => { - const { extend, duplicate } = pipeable(A.extendArray) + const { extend, duplicate } = pipeable(A.Extend) assert.deepStrictEqual(extend((as: ReadonlyArray) => fold(monoidSum)(as))([1, 2, 3]), [6, 5, 3]) assert.deepStrictEqual(duplicate([1, 2, 3]), [[1, 2, 3], [2, 3], [3]]) }) it('Foldable', () => { - const { reduce, foldMap, reduceRight } = pipeable(A.foldableArray) + const { reduce, foldMap, reduceRight } = pipeable(A.Foldable) assert.deepStrictEqual(reduce(0, (acc, n: number) => acc + n)([1, 2, 3]), 6) assert.deepStrictEqual(foldMap(monoidSum)((n: number) => n)([1, 2, 3]), 6) assert.deepStrictEqual(reduceRight(0, (n: number, acc) => -acc + n)([1, 2, 3]), 2) }) it('FoldableWithIndex', () => { - const { reduceWithIndex, foldMapWithIndex, reduceRightWithIndex } = pipeable(A.foldableWithIndexArray) + const { reduceWithIndex, foldMapWithIndex, reduceRightWithIndex } = pipeable(A.FoldableWithIndex) assert.deepStrictEqual(reduceWithIndex(0, (i, acc, n: number) => acc + n + i)([1, 2, 3]), 9) assert.deepStrictEqual(foldMapWithIndex(monoidSum)((i, n: number) => n + i)([1, 2, 3]), 9) assert.deepStrictEqual(reduceRightWithIndex(0, (i, n: number, acc) => -acc + n + i)([1, 2, 3]), 3) }) it('Alt', () => { - const { alt } = pipeable(A.altArray) + const { alt } = pipeable(A.Alt) assert.deepStrictEqual(alt(() => [4, 5, 6])([1, 2, 3]), [1, 2, 3, 4, 5, 6]) }) it('Filterable', () => { - const { filter, filterMap, partition, partitionMap } = pipeable(A.filterableArray) + const { filter, filterMap, partition, partitionMap } = pipeable(A.Filterable) assert.deepStrictEqual(filter(O.isSome)([O.some(1), O.none, O.some(2)]), [O.some(1), O.some(2)]) assert.deepStrictEqual(filterMap((a: O.Option) => a)([O.some(1), O.none, O.some(2)]), [1, 2]) assert.deepStrictEqual(partition(O.isSome)([O.some(1), O.none, O.some(2)]), { @@ -103,7 +103,7 @@ describe('pipeable', () => { it('FilterableWithIndex', () => { const { filterWithIndex, filterMapWithIndex, partitionWithIndex, partitionMapWithIndex } = pipeable( - A.filterableWithIndexArray + A.FilterableWithIndex ) assert.deepStrictEqual( filterWithIndex((i, a: O.Option) => i > 1 && O.isSome(a))([O.some(1), O.none, O.some(2)]), @@ -135,7 +135,7 @@ describe('pipeable', () => { }) it('Profunctor', () => { - const { promap } = pipeable(R.profunctorReader) + const { promap } = pipeable(R.Profunctor) const f = promap( (s: string) => s + 'a', (n: number) => n > 2 @@ -145,7 +145,7 @@ describe('pipeable', () => { }) it('Semigroupoid', () => { - const { compose } = pipeable(R.categoryReader) + const { compose } = pipeable(R.Category) assert.deepStrictEqual(compose((s: string) => s.length)((n) => n * 2)('aa'), 4) }) }) From fc87090fda1d4abfcbab8fc954e617e865f03035 Mon Sep 17 00:00:00 2001 From: gcanti Date: Sat, 11 Jul 2020 09:20:31 +0200 Subject: [PATCH 096/106] add v3 comments --- src/Either.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Either.ts b/src/Either.ts index f8d920cfc..c09bc8608 100644 --- a/src/Either.ts +++ b/src/Either.ts @@ -175,6 +175,7 @@ export interface JsonRecord { */ export interface JsonArray extends ReadonlyArray {} +// TODO curry in v3 /** * Converts a JavaScript Object Notation (JSON) string into an object. * @@ -191,6 +192,7 @@ export function parseJSON(s: string, onError: (reason: unknown) => E): Either return tryCatch(() => JSON.parse(s), onError) } +// TODO curry in v3 /** * Converts a JavaScript value to a JavaScript Object Notation (JSON) string. * From a48a3dfa11d57c6cfeaba013ec665b46a7233977 Mon Sep 17 00:00:00 2001 From: gcanti Date: Tue, 21 Jul 2020 14:57:42 +0200 Subject: [PATCH 097/106] fix `FunctorWithIndex` instance name, fix `Functor` instance name --- CHANGELOG.md | 7 +++++++ docs/modules/ReadonlyArray.ts.md | 24 ++++++++++++------------ package.json | 2 +- src/Array.ts | 2 +- src/ReadonlyArray.ts | 4 ++-- src/ReadonlyNonEmptyArray.ts | 4 ++-- test/Compactable.ts | 2 +- test/Filterable.ts | 2 +- test/Functor.ts | 2 +- test/FunctorWithIndex.ts | 2 +- test/ReadonlyArray.ts | 2 +- test/Store.ts | 2 +- test/pipeable.ts | 4 ++-- 13 files changed, 33 insertions(+), 26 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1d1809170..df797f7b4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,13 @@ **Note**: Gaps between patch versions are faulty/broken releases. **Note**: A feature tagged as Experimental is in a high state of flux, you're at risk of it changing without notice. +# 2.7.1 + +- **Bug Fix** + - `ReadonlyArray` + - fix `FunctorWithIndex` instance name (@gcanti) + - fix `Functor` instance name (@gcanti) + # 2.7.0 - **Bug Fix** diff --git a/docs/modules/ReadonlyArray.ts.md b/docs/modules/ReadonlyArray.ts.md index 8ef7f126c..f38238da1 100644 --- a/docs/modules/ReadonlyArray.ts.md +++ b/docs/modules/ReadonlyArray.ts.md @@ -108,6 +108,7 @@ Added in v2.5.0 - [Foldable](#foldable-1) - [FoldableWithIndex](#foldablewithindex-1) - [Functor](#functor-1) + - [FunctorWithIndex](#functorwithindex-1) - [Monad](#monad-1) - [Traversable](#traversable-1) - [TraversableWithIndex](#traversablewithindex-1) @@ -115,7 +116,6 @@ Added in v2.5.0 - [URI (type alias)](#uri-type-alias) - [Unfoldable](#unfoldable-1) - [Witherable](#witherable) - - [functorArray](#functorarray) - [getEq](#geteq) - [getMonoid](#getmonoid) - [getOrd](#getord) @@ -1324,7 +1324,17 @@ Added in v2.7.0 **Signature** ```ts -export declare const Functor: FunctorWithIndex1<'ReadonlyArray', number> +export declare const Functor: Functor1<'ReadonlyArray'> +``` + +Added in v2.7.0 + +## FunctorWithIndex + +**Signature** + +```ts +export declare const FunctorWithIndex: FunctorWithIndex1<'ReadonlyArray', number> ``` Added in v2.7.0 @@ -1399,16 +1409,6 @@ export declare const Witherable: Witherable1<'ReadonlyArray'> Added in v2.7.0 -## functorArray - -**Signature** - -```ts -export declare const functorArray: Functor1<'ReadonlyArray'> -``` - -Added in v2.7.0 - ## getEq Derives an `Eq` over the `ReadonlyArray` of a given element type from the `Eq` of that type. The derived `Eq` defines two diff --git a/package.json b/package.json index b92767da1..b7e8b4e77 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fp-ts", - "version": "2.7.0", + "version": "2.7.1", "description": "Functional programming in TypeScript", "files": [ "lib", diff --git a/src/Array.ts b/src/Array.ts index bf961b03c..0afb47098 100644 --- a/src/Array.ts +++ b/src/Array.ts @@ -980,7 +980,7 @@ export const of: (a: A) => Array = RA.of as any const map_: Monad1['map'] = RA.Monad.map as any const ap_: Monad1['ap'] = RA.Monad.ap as any const chain_: Monad1['chain'] = RA.Monad.chain as any -const mapWithIndex_: FunctorWithIndex1['mapWithIndex'] = RA.Functor.mapWithIndex as any +const mapWithIndex_: FunctorWithIndex1['mapWithIndex'] = RA.FunctorWithIndex.mapWithIndex as any const filter_: Filterable1['filter'] = RA.Filterable.filter as any const filterMap_: Filterable1['filterMap'] = RA.Filterable.filterMap as any const partition_: Filterable1['partition'] = RA.Filterable.partition as any diff --git a/src/ReadonlyArray.ts b/src/ReadonlyArray.ts index 96b5a02d9..d4e1c074b 100644 --- a/src/ReadonlyArray.ts +++ b/src/ReadonlyArray.ts @@ -1948,7 +1948,7 @@ declare module './HKT' { * @category instances * @since 2.7.0 */ -export const functorArray: Functor1 = { +export const Functor: Functor1 = { URI, map: map_ } @@ -1957,7 +1957,7 @@ export const functorArray: Functor1 = { * @category instances * @since 2.7.0 */ -export const Functor: FunctorWithIndex1 = { +export const FunctorWithIndex: FunctorWithIndex1 = { URI, map: map_, mapWithIndex: mapWithIndex_ diff --git a/src/ReadonlyNonEmptyArray.ts b/src/ReadonlyNonEmptyArray.ts index df29a6168..c2ddcd6cd 100644 --- a/src/ReadonlyNonEmptyArray.ts +++ b/src/ReadonlyNonEmptyArray.ts @@ -376,8 +376,8 @@ export const unzip: ( // non-pipeables // ------------------------------------------------------------------------------------- -const map_: Functor1['map'] = RA.functorArray.map as any -const mapWithIndex_: FunctorWithIndex1['mapWithIndex'] = RA.Functor.mapWithIndex as any +const map_: Functor1['map'] = RA.Functor.map as any +const mapWithIndex_: FunctorWithIndex1['mapWithIndex'] = RA.FunctorWithIndex.mapWithIndex as any const ap_: Apply1['ap'] = RA.Applicative.ap as any const chain_: Monad1['chain'] = RA.Monad.chain as any const extend_: Extend1['extend'] = RA.Extend.extend as any diff --git a/test/Compactable.ts b/test/Compactable.ts index fd83fa560..c204fc25f 100644 --- a/test/Compactable.ts +++ b/test/Compactable.ts @@ -6,7 +6,7 @@ import { left, right } from '../src/Either' describe('Compactable', () => { it('getCompactableComposition', () => { - const C = getCompactableComposition(A.functorArray, { ...A.functorArray, ...A.Compactable }) + const C = getCompactableComposition(A.Functor, { ...A.Functor, ...A.Compactable }) assert.deepStrictEqual( C.compact([ [some(1), none], diff --git a/test/Filterable.ts b/test/Filterable.ts index a204aaf39..6a5a6fdf3 100644 --- a/test/Filterable.ts +++ b/test/Filterable.ts @@ -6,7 +6,7 @@ import { right, left } from '../src/Either' describe('Filterable', () => { it('getFilterableComposition', () => { - const F = getFilterableComposition(A.functorArray, A.Filterable) + const F = getFilterableComposition(A.Functor, A.Filterable) assert.deepStrictEqual( F.filter( [ diff --git a/test/Functor.ts b/test/Functor.ts index 9d04836c4..9b69b7d2d 100644 --- a/test/Functor.ts +++ b/test/Functor.ts @@ -5,7 +5,7 @@ import * as option from '../src/Option' describe('Functor', () => { it('getFunctorComposition', () => { - const arrayOption = getFunctorComposition(A.functorArray, option.Functor) + const arrayOption = getFunctorComposition(A.Functor, option.Functor) const double = (a: number) => a * 2 assert.deepStrictEqual(arrayOption.map([option.some(1)], double), [option.some(2)]) }) diff --git a/test/FunctorWithIndex.ts b/test/FunctorWithIndex.ts index ae736b273..27ba828fe 100644 --- a/test/FunctorWithIndex.ts +++ b/test/FunctorWithIndex.ts @@ -4,7 +4,7 @@ import { getFunctorWithIndexComposition } from '../src/FunctorWithIndex' describe('FunctorWithIndex', () => { it('getFunctorComposition', () => { - const arrayOfArray = getFunctorWithIndexComposition(A.Functor, A.Functor) + const arrayOfArray = getFunctorWithIndexComposition(A.FunctorWithIndex, A.FunctorWithIndex) const f = ([i, j]: readonly [number, number], a: string) => a + i + j assert.deepStrictEqual( arrayOfArray.mapWithIndex( diff --git a/test/ReadonlyArray.ts b/test/ReadonlyArray.ts index cf2009865..c766ffb59 100644 --- a/test/ReadonlyArray.ts +++ b/test/ReadonlyArray.ts @@ -920,7 +920,7 @@ describe('ReadonlyArray', () => { readonly bar: () => number } const f = (a: number, x?: Foo) => (x !== undefined ? `${a}${x.bar()}` : `${a}`) - assert.deepStrictEqual(_.functorArray.map([1, 2], f), ['1', '2']) + assert.deepStrictEqual(_.Functor.map([1, 2], f), ['1', '2']) assert.deepStrictEqual(pipe([1, 2], _.map(f)), ['1', '2']) }) diff --git a/test/Store.ts b/test/Store.ts index a71cab7e9..a562221a2 100644 --- a/test/Store.ts +++ b/test/Store.ts @@ -80,7 +80,7 @@ describe('Store', () => { assert.deepStrictEqual( pipe( wa, - _.experiment(A.functorArray)((s) => [s, s + 'a']) + _.experiment(A.Functor)((s) => [s, s + 'a']) ), [1, 2] ) diff --git a/test/pipeable.ts b/test/pipeable.ts index 52972bd61..0a12077d1 100644 --- a/test/pipeable.ts +++ b/test/pipeable.ts @@ -14,7 +14,7 @@ describe('pipeable', () => { }) it('Functor', () => { - const { map } = pipeable(A.functorArray) + const { map } = pipeable(A.Functor) assert.deepStrictEqual(map((n: number) => n * 2)([1, 2, 3]), [2, 4, 6]) }) @@ -24,7 +24,7 @@ describe('pipeable', () => { }) it('FunctorWithIndex', () => { - const { mapWithIndex } = pipeable(A.Functor) + const { mapWithIndex } = pipeable(A.FunctorWithIndex) assert.deepStrictEqual(mapWithIndex((i, n: number) => n * 2 + i)([1, 2, 3]), [2, 5, 8]) }) From fedefedae8ab22db789f615781cbcb561f0bd5d0 Mon Sep 17 00:00:00 2001 From: gcanti Date: Tue, 21 Jul 2020 15:08:00 +0200 Subject: [PATCH 098/106] relax `sort` signature --- CHANGELOG.md | 5 +++++ docs/modules/Array.ts.md | 2 +- docs/modules/ReadonlyArray.ts.md | 2 +- src/Array.ts | 2 +- src/ReadonlyArray.ts | 5 ++--- test/Array.ts | 17 +++++++++++++++++ test/ReadonlyArray.ts | 16 ++++++++++++++++ 7 files changed, 43 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index df797f7b4..1ad9ec52f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,11 @@ high state of flux, you're at risk of it changing without notice. - `ReadonlyArray` - fix `FunctorWithIndex` instance name (@gcanti) - fix `Functor` instance name (@gcanti) +- **Polish** + - `Array` + - relax `sort` signature (@gcanti) + - `ReadonlyArray` + - relax `sort` signature (@gcanti) # 2.7.0 diff --git a/docs/modules/Array.ts.md b/docs/modules/Array.ts.md index ca0ae615e..ee81bd300 100644 --- a/docs/modules/Array.ts.md +++ b/docs/modules/Array.ts.md @@ -841,7 +841,7 @@ Sort the elements of an array in increasing order, creating a new array **Signature** ```ts -export declare const sort: (O: Ord) => (as: A[]) => A[] +export declare const sort: (O: Ord) => (as: A[]) => A[] ``` **Example** diff --git a/docs/modules/ReadonlyArray.ts.md b/docs/modules/ReadonlyArray.ts.md index f38238da1..4e611f87c 100644 --- a/docs/modules/ReadonlyArray.ts.md +++ b/docs/modules/ReadonlyArray.ts.md @@ -841,7 +841,7 @@ Sort the elements of an array in increasing order, creating a new array **Signature** ```ts -export declare function sort(O: Ord): (as: ReadonlyArray) => ReadonlyArray +export declare const sort: (O: Ord) => (as: readonly A[]) => readonly A[] ``` **Example** diff --git a/src/Array.ts b/src/Array.ts index 0afb47098..362ffbc61 100644 --- a/src/Array.ts +++ b/src/Array.ts @@ -676,7 +676,7 @@ export const lefts: (as: Array>) => Array = RA.lefts as an * @category combinators * @since 2.0.0 */ -export const sort: (O: Ord) => (as: Array) => Array = RA.sort as any +export const sort: (O: Ord) => (as: Array) => Array = RA.sort as any /** * Apply a function to pairs of elements at the same index in two arrays, collecting the results in a new array. If one diff --git a/src/ReadonlyArray.ts b/src/ReadonlyArray.ts index d4e1c074b..a518d6ece 100644 --- a/src/ReadonlyArray.ts +++ b/src/ReadonlyArray.ts @@ -973,9 +973,8 @@ export function lefts(as: ReadonlyArray>): ReadonlyArray { * @category combinators * @since 2.5.0 */ -export function sort(O: Ord): (as: ReadonlyArray) => ReadonlyArray { - return (as) => (isEmpty(as) ? as : as.slice().sort(O.compare)) -} +export const sort = (O: Ord) => (as: ReadonlyArray): ReadonlyArray => + isEmpty(as) ? as : as.slice().sort(O.compare) // TODO: curry and make data-last in v3 /** diff --git a/test/Array.ts b/test/Array.ts index 319dc0db3..a14ee555c 100644 --- a/test/Array.ts +++ b/test/Array.ts @@ -599,6 +599,23 @@ describe('Array', () => { it('sort', () => { assert.deepStrictEqual(_.sort(Ord.ordNumber)([3, 2, 1]), [1, 2, 3]) + assert.strictEqual(_.sort(Ord.ordNumber)(_.empty), _.empty) + const byName = pipe( + Ord.ordString, + Ord.contramap((x: { readonly name: string }) => x.name) + ) + assert.deepStrictEqual( + _.sort(byName)([ + { name: 'b', age: 0 }, + { name: 'a', age: 1 }, + { name: 'c', age: 2 } + ]), + [ + { name: 'a', age: 1 }, + { name: 'b', age: 0 }, + { name: 'c', age: 2 } + ] + ) }) it('zipWith', () => { diff --git a/test/ReadonlyArray.ts b/test/ReadonlyArray.ts index c766ffb59..1924642ff 100644 --- a/test/ReadonlyArray.ts +++ b/test/ReadonlyArray.ts @@ -596,6 +596,22 @@ describe('ReadonlyArray', () => { it('sort', () => { assert.deepStrictEqual(_.sort(Ord.ordNumber)([3, 2, 1]), [1, 2, 3]) assert.strictEqual(_.sort(Ord.ordNumber)(_.empty), _.empty) + const byName = pipe( + Ord.ordString, + Ord.contramap((x: { readonly name: string }) => x.name) + ) + assert.deepStrictEqual( + _.sort(byName)([ + { name: 'b', age: 0 }, + { name: 'a', age: 1 }, + { name: 'c', age: 2 } + ]), + [ + { name: 'a', age: 1 }, + { name: 'b', age: 0 }, + { name: 'c', age: 2 } + ] + ) }) it('zipWith', () => { From 21a9c083ae779c569ef885cc800b06ce11cd1ecb Mon Sep 17 00:00:00 2001 From: gcanti Date: Tue, 21 Jul 2020 15:15:42 +0200 Subject: [PATCH 099/106] export `mapWithIndex` from Map and ReadonlyMap --- CHANGELOG.md | 4 ++++ docs/modules/Map.ts.md | 16 +++++++++++++++- docs/modules/ReadonlyMap.ts.md | 14 ++++++++++++++ src/Map.ts | 8 +++++++- src/ReadonlyMap.ts | 8 ++++++++ test/ReadonlyMap.ts | 22 ++++++++++++---------- 6 files changed, 60 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1ad9ec52f..feea88a2a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,8 +23,12 @@ high state of flux, you're at risk of it changing without notice. - **Polish** - `Array` - relax `sort` signature (@gcanti) + - `Map` + - export `mapWithIndex` (@gcanti) - `ReadonlyArray` - relax `sort` signature (@gcanti) + - `ReadonlyMap` + - export `mapWithIndex` (@gcanti) # 2.7.0 diff --git a/docs/modules/Map.ts.md b/docs/modules/Map.ts.md index e56b6507f..ba725df2a 100644 --- a/docs/modules/Map.ts.md +++ b/docs/modules/Map.ts.md @@ -22,6 +22,8 @@ Added in v2.0.0 - [partitionMap](#partitionmap) - [Functor](#functor) - [map](#map) +- [FunctorWithIndex](#functorwithindex) + - [mapWithIndex](#mapwithindex) - [combinators](#combinators) - [deleteAt](#deleteat) - [insertAt](#insertat) @@ -142,11 +144,23 @@ use the type constructor `F` to represent some computational context. **Signature** ```ts -export declare const map: (f: (a: A) => B) => (fa: Map) => Map +export declare const map: (f: (a: A) => B) => (fa: Map) => Map ``` Added in v2.0.0 +# FunctorWithIndex + +## mapWithIndex + +**Signature** + +```ts +export declare const mapWithIndex: (f: (k: K, a: A) => B) => (fa: Map) => Map +``` + +Added in v2.7.1 + # combinators ## deleteAt diff --git a/docs/modules/ReadonlyMap.ts.md b/docs/modules/ReadonlyMap.ts.md index c92295016..de76c18f6 100644 --- a/docs/modules/ReadonlyMap.ts.md +++ b/docs/modules/ReadonlyMap.ts.md @@ -22,6 +22,8 @@ Added in v2.5.0 - [partitionMap](#partitionmap) - [Functor](#functor) - [map](#map) +- [FunctorWithIndex](#functorwithindex) + - [mapWithIndex](#mapwithindex) - [combinators](#combinators) - [deleteAt](#deleteat) - [insertAt](#insertat) @@ -154,6 +156,18 @@ export declare const map: (f: (a: A) => B) => (fa: ReadonlyMap) = Added in v2.5.0 +# FunctorWithIndex + +## mapWithIndex + +**Signature** + +```ts +export declare const mapWithIndex: (f: (k: K, a: A) => B) => (fa: ReadonlyMap) => ReadonlyMap +``` + +Added in v2.7.1 + # combinators ## deleteAt diff --git a/src/Map.ts b/src/Map.ts index cc42b583b..bb6c07481 100644 --- a/src/Map.ts +++ b/src/Map.ts @@ -277,7 +277,13 @@ export const filterMap: (f: (a: A) => Option) => (fa: Map) => * @category Functor * @since 2.0.0 */ -export const map: (f: (a: A) => B) => (fa: Map) => Map = RM.map as any +export const map: (f: (a: A) => B) => (fa: Map) => Map = RM.map as any + +/** + * @category FunctorWithIndex + * @since 2.7.1 + */ +export const mapWithIndex: (f: (k: K, a: A) => B) => (fa: Map) => Map = RM.mapWithIndex as any /** * @category Filterable diff --git a/src/ReadonlyMap.ts b/src/ReadonlyMap.ts index 350a9017a..cabcdb23d 100644 --- a/src/ReadonlyMap.ts +++ b/src/ReadonlyMap.ts @@ -654,6 +654,14 @@ export const filterMap: (f: (a: A) => Option) => (fa: ReadonlyMap(f: (a: A) => B) => (fa: ReadonlyMap) => ReadonlyMap = (f) => (fa) => map_(fa, f) +/** + * @category FunctorWithIndex + * @since 2.7.1 + */ +export const mapWithIndex: (f: (k: K, a: A) => B) => (fa: ReadonlyMap) => ReadonlyMap = (f) => ( + fa +) => mapWithIndex_(fa, f) + /** * @category Filterable * @since 2.5.0 diff --git a/test/ReadonlyMap.ts b/test/ReadonlyMap.ts index 2902ec828..2d96877d9 100644 --- a/test/ReadonlyMap.ts +++ b/test/ReadonlyMap.ts @@ -791,16 +791,6 @@ describe('ReadonlyMap', () => { assert.deepStrictEqual(log, ['a', 'b']) }) - it('mapWithIndex', () => { - const mapWithIndex = W.mapWithIndex - const aa1 = new Map([[{ id: 'aa' }, 1]]) - const aa3 = new Map([[{ id: 'aa' }, 3]]) - assert.deepStrictEqual( - mapWithIndex(aa1, (k, a) => a + k.id.length), - aa3 - ) - }) - it('reduce', () => { const d1 = new Map([ [{ id: 'k1' }, 'a'], @@ -1134,4 +1124,16 @@ describe('ReadonlyMap', () => { assert.deepStrictEqual(bs, as) assert.notStrictEqual(bs, as) }) + + it('mapWithIndex', () => { + const aa1 = new Map([[{ id: 'aa' }, 1]]) + const aa3 = new Map([[{ id: 'aa' }, 3]]) + assert.deepStrictEqual( + pipe( + aa1, + _.mapWithIndex((k, a) => a + k.id.length) + ), + aa3 + ) + }) }) From 3b347bb37812a470bdd36fe81a34974291526b98 Mon Sep 17 00:00:00 2001 From: gcanti Date: Wed, 22 Jul 2020 08:32:06 +0200 Subject: [PATCH 100/106] upgrade to typescript@3.9.7 --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4673e3a49..5161958b0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "fp-ts", - "version": "2.7.0", + "version": "2.7.1", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -6811,9 +6811,9 @@ "dev": true }, "typescript": { - "version": "3.9.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.2.tgz", - "integrity": "sha512-q2ktq4n/uLuNNShyayit+DTobV2ApPEo/6so68JaD5ojvc/6GClBipedB9zNWYxRSAlZXAe405Rlijzl6qDiSw==", + "version": "3.9.7", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.7.tgz", + "integrity": "sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==", "dev": true }, "unc-path-regex": { diff --git a/package.json b/package.json index b7e8b4e77..236f722b5 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,7 @@ "tslint": "5.11.0", "tslint-config-standard": "8.0.1", "tslint-immutable": "^6.0.1", - "typescript": "^3.9.2" + "typescript": "^3.9.7" }, "tags": [ "typescript", From d86047d234dba7418a39f1795b0b419ad2a8a085 Mon Sep 17 00:00:00 2001 From: gcanti Date: Wed, 22 Jul 2020 15:46:58 +0200 Subject: [PATCH 101/106] relax sortBy signature in Array, ReadonlyArray --- CHANGELOG.md | 5 ++++- docs/modules/Array.ts.md | 2 +- docs/modules/ReadonlyArray.ts.md | 2 +- dtslint/ts3.5/Array.ts | 29 +++++++++++++++++++++++++++++ dtslint/ts3.5/ReadonlyArray.ts | 29 +++++++++++++++++++++++++++++ src/Array.ts | 2 +- src/ReadonlyArray.ts | 4 ++-- 7 files changed, 67 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index feea88a2a..e4f5c78a7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,7 +11,8 @@ > - [Experimental] > - [Deprecation] -**Note**: Gaps between patch versions are faulty/broken releases. **Note**: A feature tagged as Experimental is in a +**Note**: Gaps between patch versions are faulty/broken releases. +**Note**: A feature tagged as Experimental is in a high state of flux, you're at risk of it changing without notice. # 2.7.1 @@ -23,10 +24,12 @@ high state of flux, you're at risk of it changing without notice. - **Polish** - `Array` - relax `sort` signature (@gcanti) + - relax `sortBy` signature (@gcanti) - `Map` - export `mapWithIndex` (@gcanti) - `ReadonlyArray` - relax `sort` signature (@gcanti) + - relax `sortBy` signature (@gcanti) - `ReadonlyMap` - export `mapWithIndex` (@gcanti) diff --git a/docs/modules/Array.ts.md b/docs/modules/Array.ts.md index ee81bd300..0d4ad42be 100644 --- a/docs/modules/Array.ts.md +++ b/docs/modules/Array.ts.md @@ -863,7 +863,7 @@ etc... **Signature** ```ts -export declare const sortBy: (ords: Ord[]) => (as: A[]) => A[] +export declare const sortBy: (ords: Ord[]) => (as: A[]) => A[] ``` **Example** diff --git a/docs/modules/ReadonlyArray.ts.md b/docs/modules/ReadonlyArray.ts.md index 4e611f87c..0fea5e05f 100644 --- a/docs/modules/ReadonlyArray.ts.md +++ b/docs/modules/ReadonlyArray.ts.md @@ -863,7 +863,7 @@ etc... **Signature** ```ts -export declare function sortBy(ords: ReadonlyArray>): (as: ReadonlyArray) => ReadonlyArray +export declare function sortBy(ords: ReadonlyArray>): (as: ReadonlyArray) => ReadonlyArray ``` **Example** diff --git a/dtslint/ts3.5/Array.ts b/dtslint/ts3.5/Array.ts index 320bf974e..ab2f8d416 100644 --- a/dtslint/ts3.5/Array.ts +++ b/dtslint/ts3.5/Array.ts @@ -1,6 +1,7 @@ import * as _ from '../../src/Array' import { pipe } from '../../src/pipeable' import { eqNumber } from '../../src/Eq' +import { Ord } from '../../src/Ord' declare const us: Array declare const ns: Array @@ -133,3 +134,31 @@ _.zip(['a', 'b']) // $ExpectType (as: A[]) => [A, string][] _.cons(0, [1, 2]) // $ExpectType NonEmptyArray _.cons(0) // $ExpectType (tail: number[]) => NonEmptyArray + +// +// sort +// + +declare const ord1: Ord<{ readonly a: string }> +interface X1 { + readonly a: string + readonly b: number +} +declare const x1s: Array + +_.sort(ord1)(x1s) // $ExpectType X1[] + +// +// sortBy +// + +declare const ord2: Ord +declare const ord3: Ord +interface X2 { + readonly a: string + readonly b: number + readonly c: boolean +} +declare const x2s: Array + +_.sortBy([ord2, ord3])(x2s) // $ExpectType X2[] diff --git a/dtslint/ts3.5/ReadonlyArray.ts b/dtslint/ts3.5/ReadonlyArray.ts index cc6ffc525..d11f4b1ee 100644 --- a/dtslint/ts3.5/ReadonlyArray.ts +++ b/dtslint/ts3.5/ReadonlyArray.ts @@ -1,6 +1,7 @@ import * as _ from '../../src/ReadonlyArray' import { pipe } from '../../src/pipeable' import { eqNumber } from '../../src/Eq' +import { Ord } from '../../src/Ord' declare const rus: ReadonlyArray declare const rns: ReadonlyArray @@ -124,3 +125,31 @@ _.zip(['a', 'b']) // $ExpectType (as: readonly A[]) => readonly (readonly [A, _.cons(0, [1, 2]) // $ExpectType ReadonlyNonEmptyArray _.cons(0) // $ExpectType (tail: readonly number[]) => ReadonlyNonEmptyArray + +// +// sort +// + +declare const ord1: Ord<{ readonly a: string }> +interface X1 { + readonly a: string + readonly b: number +} +declare const x1s: ReadonlyArray + +_.sort(ord1)(x1s) // $ExpectType ReadonlyArray + +// +// sortBy +// + +declare const ord2: Ord +declare const ord3: Ord +interface X2 { + readonly a: string + readonly b: number + readonly c: boolean +} +declare const x2s: ReadonlyArray + +_.sortBy([ord2, ord3])(x2s) // $ExpectType ReadonlyArray diff --git a/src/Array.ts b/src/Array.ts index 362ffbc61..eced21821 100644 --- a/src/Array.ts +++ b/src/Array.ts @@ -801,7 +801,7 @@ export const uniq: (E: Eq) => (as: Array) => Array = RA.uniq as any * @category combinators * @since 2.0.0 */ -export const sortBy: (ords: Array>) => (as: Array) => Array = RA.sortBy as any +export const sortBy: (ords: Array>) => (as: Array) => Array = RA.sortBy as any /** * A useful recursion pattern for processing an array to produce a new array, often used for "chopping" up the input diff --git a/src/ReadonlyArray.ts b/src/ReadonlyArray.ts index a518d6ece..9325e27f0 100644 --- a/src/ReadonlyArray.ts +++ b/src/ReadonlyArray.ts @@ -1170,8 +1170,8 @@ export function uniq(E: Eq): (as: ReadonlyArray) => ReadonlyArray { * @category combinators * @since 2.5.0 */ -export function sortBy(ords: ReadonlyArray>): (as: ReadonlyArray) => ReadonlyArray { - const M = getOrdMonoid() +export function sortBy(ords: ReadonlyArray>): (as: ReadonlyArray) => ReadonlyArray { + const M = getOrdMonoid() return sort(ords.reduce(M.concat, M.empty)) } From fb2c02ff11d7bd9b7b1ebb2b1adbc5e01028474e Mon Sep 17 00:00:00 2001 From: Peter Murphy Date: Wed, 22 Jul 2020 22:22:31 -0400 Subject: [PATCH 102/106] =?UTF-8?q?Change=20"Whitherable"=20=E2=86=92=20"W?= =?UTF-8?q?itherable"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/modules/Array.ts.md | 6 +++--- docs/modules/Option.ts.md | 6 +++--- docs/modules/ReadonlyArray.ts.md | 6 +++--- docs/modules/ReadonlyRecord.ts.md | 6 +++--- docs/modules/Record.ts.md | 6 +++--- src/Array.ts | 4 ++-- src/Option.ts | 4 ++-- src/ReadonlyArray.ts | 4 ++-- src/ReadonlyRecord.ts | 4 ++-- src/Record.ts | 4 ++-- 10 files changed, 25 insertions(+), 25 deletions(-) diff --git a/docs/modules/Array.ts.md b/docs/modules/Array.ts.md index 0d4ad42be..e8bf11962 100644 --- a/docs/modules/Array.ts.md +++ b/docs/modules/Array.ts.md @@ -59,7 +59,7 @@ Added in v2.0.0 - [traverseWithIndex](#traversewithindex) - [Unfoldable](#unfoldable) - [unfold](#unfold) -- [Whitherable](#whitherable) +- [Witherable](#witherable) - [wilt](#wilt) - [wither](#wither) - [combinators](#combinators) @@ -124,7 +124,7 @@ Added in v2.0.0 - [URI](#uri) - [URI (type alias)](#uri-type-alias) - [Unfoldable](#unfoldable-1) - - [Witherable](#witherable) + - [Witherable](#witherable-1) - [array](#array) - [getEq](#geteq) - [getMonoid](#getmonoid) @@ -545,7 +545,7 @@ export declare const unfold: (b: B, f: (b: B) => Option<[A, B]>) => A[] Added in v2.6.6 -# Whitherable +# Witherable ## wilt diff --git a/docs/modules/Option.ts.md b/docs/modules/Option.ts.md index 902d8ed21..4bff4cbb5 100644 --- a/docs/modules/Option.ts.md +++ b/docs/modules/Option.ts.md @@ -59,7 +59,7 @@ Added in v2.0.0 - [Traversable](#traversable) - [sequence](#sequence) - [traverse](#traverse) -- [Whitherable](#whitherable) +- [Witherable](#witherable) - [wilt](#wilt) - [wither](#wither) - [combinators](#combinators) @@ -96,7 +96,7 @@ Added in v2.0.0 - [Traversable](#traversable-1) - [URI](#uri) - [URI (type alias)](#uri-type-alias) - - [Witherable](#witherable) + - [Witherable](#witherable-1) - [getApplyMonoid](#getapplymonoid) - [getApplySemigroup](#getapplysemigroup) - [getEq](#geteq) @@ -427,7 +427,7 @@ export declare const traverse: PipeableTraverse1<'Option'> Added in v2.6.3 -# Whitherable +# Witherable ## wilt diff --git a/docs/modules/ReadonlyArray.ts.md b/docs/modules/ReadonlyArray.ts.md index 0fea5e05f..0d544051e 100644 --- a/docs/modules/ReadonlyArray.ts.md +++ b/docs/modules/ReadonlyArray.ts.md @@ -61,7 +61,7 @@ Added in v2.5.0 - [traverseWithIndex](#traversewithindex) - [Unfoldable](#unfoldable) - [unfold](#unfold) -- [Whitherable](#whitherable) +- [Witherable](#witherable) - [wilt](#wilt) - [wither](#wither) - [combinators](#combinators) @@ -115,7 +115,7 @@ Added in v2.5.0 - [URI](#uri) - [URI (type alias)](#uri-type-alias) - [Unfoldable](#unfoldable-1) - - [Witherable](#witherable) + - [Witherable](#witherable-1) - [getEq](#geteq) - [getMonoid](#getmonoid) - [getOrd](#getord) @@ -564,7 +564,7 @@ export declare const unfold: (b: B, f: (b: B) => Option) Added in v2.6.6 -# Whitherable +# Witherable ## wilt diff --git a/docs/modules/ReadonlyRecord.ts.md b/docs/modules/ReadonlyRecord.ts.md index d02db74d4..d33fbf84f 100644 --- a/docs/modules/ReadonlyRecord.ts.md +++ b/docs/modules/ReadonlyRecord.ts.md @@ -24,7 +24,7 @@ Added in v2.5.0 - [foldMap](#foldmap) - [reduce](#reduce) - [reduceRight](#reduceright) -- [Whitherable](#whitherable) +- [Witherable](#witherable) - [wilt](#wilt) - [wither](#wither) - [combinators](#combinators) @@ -52,7 +52,7 @@ Added in v2.5.0 - [TraversableWithIndex](#traversablewithindex) - [URI](#uri) - [URI (type alias)](#uri-type-alias) - - [Witherable](#witherable) + - [Witherable](#witherable-1) - [getEq](#geteq) - [getMonoid](#getmonoid) - [getShow](#getshow) @@ -200,7 +200,7 @@ export declare const reduceRight: (b: B, f: (a: A, b: B) => B) => (fa: Rea Added in v2.5.0 -# Whitherable +# Witherable ## wilt diff --git a/docs/modules/Record.ts.md b/docs/modules/Record.ts.md index fde041a1d..416d2da60 100644 --- a/docs/modules/Record.ts.md +++ b/docs/modules/Record.ts.md @@ -24,7 +24,7 @@ Added in v2.0.0 - [foldMap](#foldmap) - [reduce](#reduce) - [reduceRight](#reduceright) -- [Whitherable](#whitherable) +- [Witherable](#witherable) - [wilt](#wilt) - [wither](#wither) - [instances](#instances) @@ -39,7 +39,7 @@ Added in v2.0.0 - [TraversableWithIndex](#traversablewithindex) - [URI](#uri) - [URI (type alias)](#uri-type-alias) - - [Witherable](#witherable) + - [Witherable](#witherable-1) - [record](#record) - [utils](#utils) - [collect](#collect) @@ -189,7 +189,7 @@ export declare const reduceRight: (b: B, f: (a: A, b: B) => B) => (fa: Rec Added in v2.0.0 -# Whitherable +# Witherable ## wilt diff --git a/src/Array.ts b/src/Array.ts index eced21821..df752016d 100644 --- a/src/Array.ts +++ b/src/Array.ts @@ -1233,13 +1233,13 @@ export const sequence: Traversable1['sequence'] = RA.sequence as any export const traverseWithIndex: PipeableTraverseWithIndex1 = RA.traverseWithIndex as any /** - * @category Whitherable + * @category Witherable * @since 2.6.5 */ export const wither: PipeableWither1 = RA.wither as any /** - * @category Whitherable + * @category Witherable * @since 2.6.5 */ export const wilt: PipeableWilt1 = RA.wilt as any diff --git a/src/Option.ts b/src/Option.ts index 80434e9ef..e724de45b 100644 --- a/src/Option.ts +++ b/src/Option.ts @@ -645,7 +645,7 @@ export const sequence: Traversable1['sequence'] = (F: ApplicativeHKT) } /** - * @category Whitherable + * @category Witherable * @since 2.6.5 */ export const wither: PipeableWither1 = ( @@ -656,7 +656,7 @@ export const wither: PipeableWither1 = ( } /** - * @category Whitherable + * @category Witherable * @since 2.6.5 */ export const wilt: PipeableWilt1 = ( diff --git a/src/ReadonlyArray.ts b/src/ReadonlyArray.ts index 9325e27f0..933da0f93 100644 --- a/src/ReadonlyArray.ts +++ b/src/ReadonlyArray.ts @@ -1877,7 +1877,7 @@ export const traverseWithIndex: PipeableTraverseWithIndex1 = ( } /** - * @category Whitherable + * @category Witherable * @since 2.6.5 */ export const wither: PipeableWither1 = ( @@ -1888,7 +1888,7 @@ export const wither: PipeableWither1 = ( } /** - * @category Whitherable + * @category Witherable * @since 2.6.5 */ export const wilt: PipeableWilt1 = ( diff --git a/src/ReadonlyRecord.ts b/src/ReadonlyRecord.ts index 7b1a18d62..7ba7d7af6 100644 --- a/src/ReadonlyRecord.ts +++ b/src/ReadonlyRecord.ts @@ -523,7 +523,7 @@ export function sequence( } /** - * @category Whitherable + * @category Witherable * @since 2.6.5 */ export const wither: PipeableWither1 = ( @@ -534,7 +534,7 @@ export const wither: PipeableWither1 = ( } /** - * @category Whitherable + * @category Witherable * @since 2.6.5 */ export const wilt: PipeableWilt1 = ( diff --git a/src/Record.ts b/src/Record.ts index d7debe063..d4576679f 100644 --- a/src/Record.ts +++ b/src/Record.ts @@ -329,13 +329,13 @@ export function sequence(F: Applicative): (ta: Record } /** - * @category Whitherable + * @category Witherable * @since 2.6.5 */ export const wither: PipeableWither1 = RR.wither as any /** - * @category Whitherable + * @category Witherable * @since 2.6.5 */ export const wilt: PipeableWilt1 = RR.wilt as any From af24087b06c087a079bf4a3361c962a3c732fad9 Mon Sep 17 00:00:00 2001 From: StefanoMagrassi <1291271+StefanoMagrassi@users.noreply.github.com> Date: Fri, 12 Jun 2020 18:42:38 +0200 Subject: [PATCH 103/106] flatten exported modules paths on release --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 236f722b5..48f13a012 100644 --- a/package.json +++ b/package.json @@ -46,6 +46,7 @@ "@types/node": "^12.6.8", "@types/prettier": "1.10.0", "benchmark": "2.1.4", + "chalk": "^4.1.0", "docs-ts": "^0.5.1", "doctoc": "^1.4.0", "dtslint": "github:gcanti/dtslint", From 7342405db24d655b9115a31aa7b4c18eb2a945b2 Mon Sep 17 00:00:00 2001 From: StefanoMagrassi <1291271+StefanoMagrassi@users.noreply.github.com> Date: Mon, 15 Jun 2020 12:26:17 +0200 Subject: [PATCH 104/106] add smoke tests for release and remove some noise in scripts --- package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/package.json b/package.json index 48f13a012..236f722b5 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,6 @@ "@types/node": "^12.6.8", "@types/prettier": "1.10.0", "benchmark": "2.1.4", - "chalk": "^4.1.0", "docs-ts": "^0.5.1", "doctoc": "^1.4.0", "dtslint": "github:gcanti/dtslint", From bb110559413a08250c2e463f73df8255fee64112 Mon Sep 17 00:00:00 2001 From: StefanoMagrassi <1291271+StefanoMagrassi@users.noreply.github.com> Date: Tue, 28 Jul 2020 09:25:41 +0200 Subject: [PATCH 105/106] rebase on upstream master --- package-lock.json | 14232 +++++++++++++++++++++++++++++++------------- package.json | 9 +- 2 files changed, 10100 insertions(+), 4141 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5161958b0..520706217 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,6 +13,25 @@ "@babel/highlight": "^7.0.0" } }, + "@babel/compat-data": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.10.5.tgz", + "integrity": "sha512-mPVoWNzIpYJHbWje0if7Ck36bpbtTvIxOi9+6WSK9wjGEXearAqlwBoTQvVjsAY2VIwgcs8V940geY3okzRCEw==", + "dev": true, + "requires": { + "browserslist": "^4.12.0", + "invariant": "^2.2.4", + "semver": "^5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, "@babel/core": { "version": "7.8.7", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.8.7.tgz", @@ -105,162 +124,473 @@ } } }, - "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "@babel/helper-annotate-as-pure": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", + "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.5.tgz", + "integrity": "sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "dev": true + } } }, - "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", + "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/helper-explode-assignable-expression": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.5.tgz", + "integrity": "sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "dev": true + } } }, - "@babel/helper-plugin-utils": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz", - "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==", - "dev": true + "@babel/helper-builder-react-jsx": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.10.4.tgz", + "integrity": "sha512-5nPcIZ7+KKDxT1427oBivl9V9YTal7qk0diccnh7RrcgrT/pGFOjgGw1dgryyx1GvHEpXVfoDF6Ak3rTiWh8Rg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.5.tgz", + "integrity": "sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "dev": true + } + } }, - "@babel/helper-split-export-declaration": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", - "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", + "@babel/helper-builder-react-jsx-experimental": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.10.5.tgz", + "integrity": "sha512-Buewnx6M4ttG+NLkKyt7baQn7ScC/Td+e99G914fRU8fGIUivDDgVIQeDHFa5e4CRSJQt58WpNHhsAZgtzVhsg==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-module-imports": "^7.10.4", + "@babel/types": "^7.10.5" + }, + "dependencies": { + "@babel/types": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.5.tgz", + "integrity": "sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "dev": true + } } }, - "@babel/helpers": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.8.4.tgz", - "integrity": "sha512-VPbe7wcQ4chu4TDQjimHv/5tj73qz88o12EPkO2ValS2QiQS/1F2SsjyIGNnAD0vF/nZS6Cf9i+vW6HIlnaR8w==", + "@babel/helper-compilation-targets": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.4.tgz", + "integrity": "sha512-a3rYhlsGV0UHNDvrtOXBg8/OpfV0OKTkxKPzIplS1zpx7CygDcWWxckxZeDd3gzPzC4kUT0A4nVFDK0wGMh4MQ==", "dev": true, "requires": { - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.8.4", - "@babel/types": "^7.8.3" + "@babel/compat-data": "^7.10.4", + "browserslist": "^4.12.0", + "invariant": "^2.2.4", + "levenary": "^1.1.1", + "semver": "^5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } } }, - "@babel/highlight": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", - "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "@babel/helper-create-class-features-plugin": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.5.tgz", + "integrity": "sha512-0nkdeijB7VlZoLT3r/mY3bUkw3T8WG/hNw+FATs/6+pG2039IJWjTYL0VTISqsNHMUTEnwbVnc89WIJX9Qed0A==", "dev": true, "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^4.0.0" + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-member-expression-to-functions": "^7.10.5", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4" }, "dependencies": { + "@babel/code-frame": { + "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.10.4" + } + }, + "@babel/helper-function-name": { + "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.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-get-function-arity": { + "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-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-split-export-declaration": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz", + "integrity": "sha512-pySBTeoUff56fL5CBU2hWm9TesA4r/rOkI9DyJLvvgz09MB9YtfIYe3iBriVaYNaPe+Alua0vBIOVOLs2buWhg==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/highlight": { + "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", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.5.tgz", + "integrity": "sha512-wfryxy4bE1UivvQKSQDU4/X6dr+i8bctjUjj8Zyt3DQy7NtPizJXT8M52nqpNKL+nq2PW8lxk4ZqLj0fD4B4hQ==", + "dev": true + }, + "@babel/template": { + "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.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/types": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.5.tgz", + "integrity": "sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, "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 + }, + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "dev": true } } }, - "@babel/parser": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.8.tgz", - "integrity": "sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA==", - "dev": true - }, - "@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==", + "@babel/helper-create-regexp-features-plugin": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz", + "integrity": "sha512-2/hu58IEPKeoLF45DBwx3XFqsbCXmkdAay4spVr2x0jYgRxrSNp+ePwvSsy9g6YSaNDcKIQVPXk1Ov8S2edk2g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-regex": "^7.10.4", + "regexpu-core": "^4.7.0" } }, - "@babel/template": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", - "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "@babel/helper-define-map": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", + "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", "dev": true, "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6" + "@babel/helper-function-name": "^7.10.4", + "@babel/types": "^7.10.5", + "lodash": "^4.17.19" }, "dependencies": { "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "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.8.3" + "@babel/highlight": "^7.10.4" + } + }, + "@babel/helper-function-name": { + "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.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-get-function-arity": { + "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/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "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.10.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.5.tgz", + "integrity": "sha512-wfryxy4bE1UivvQKSQDU4/X6dr+i8bctjUjj8Zyt3DQy7NtPizJXT8M52nqpNKL+nq2PW8lxk4ZqLj0fD4B4hQ==", + "dev": true + }, + "@babel/template": { + "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.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/types": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.5.tgz", + "integrity": "sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, "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 + }, + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "dev": true } } }, - "@babel/traverse": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.6.tgz", - "integrity": "sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A==", + "@babel/helper-explode-assignable-expression": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.4.tgz", + "integrity": "sha512-4K71RyRQNPRrR85sr5QY4X3VwG4wtVoXZB9+L3r1Gp38DhELyHCtovqydRi7c1Ovb17eRGiQ/FD5s8JdU0Uy5A==", "dev": true, "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.8.6", - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" }, "dependencies": { "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "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.8.3" + "@babel/highlight": "^7.10.4" + } + }, + "@babel/generator": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.5.tgz", + "integrity": "sha512-3vXxr3FEW7E7lJZiWQ3bM4+v/Vyr9C+hpolQ8BGFr9Y8Ri2tFLWTixmwKBafDujO1WVah4fhZBeU1bieKdghig==", + "dev": true, + "requires": { + "@babel/types": "^7.10.5", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "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.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-get-function-arity": { + "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-split-export-declaration": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz", + "integrity": "sha512-pySBTeoUff56fL5CBU2hWm9TesA4r/rOkI9DyJLvvgz09MB9YtfIYe3iBriVaYNaPe+Alua0vBIOVOLs2buWhg==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" } }, "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "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.10.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.5.tgz", + "integrity": "sha512-wfryxy4bE1UivvQKSQDU4/X6dr+i8bctjUjj8Zyt3DQy7NtPizJXT8M52nqpNKL+nq2PW8lxk4ZqLj0fD4B4hQ==", + "dev": true + }, + "@babel/template": { + "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.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/traverse": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.5.tgz", + "integrity": "sha512-yc/fyv2gUjPqzTz0WHeRJH2pv7jA9kA7mBX2tXl/x5iOE81uaVPuGPtaYk7wmkx4b67mQ7NqI8rmT2pF47KYKQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.10.5", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4", + "@babel/parser": "^7.10.5", + "@babel/types": "^7.10.5", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "@babel/types": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.5.tgz", + "integrity": "sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", @@ -276,1310 +606,2077 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "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 + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true } } }, - "@babel/types": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", - "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", + "@babel/helper-function-name": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", + "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "@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" - }, - "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 - } + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" } }, - "@dsherret/to-absolute-glob": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@dsherret/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", - "integrity": "sha1-H2R13IvZdM6gei2vOGSzF7HdMyw=", + "@babel/helper-get-function-arity": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", "dev": true, "requires": { - "is-absolute": "^1.0.0", - "is-negated-glob": "^1.0.0" + "@babel/types": "^7.8.3" } }, - "@jest/console": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz", - "integrity": "sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==", + "@babel/helper-hoist-variables": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", + "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", "dev": true, "requires": { - "@jest/source-map": "^24.9.0", - "chalk": "^2.0.1", - "slash": "^2.0.0" + "@babel/types": "^7.10.4" }, "dependencies": { - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "@babel/types": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.5.tgz", + "integrity": "sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", "dev": true } } }, - "@jest/environment": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.9.0.tgz", - "integrity": "sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ==", - "dev": true, - "requires": { - "@jest/fake-timers": "^24.9.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "jest-mock": "^24.9.0" - } - }, - "@jest/fake-timers": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz", - "integrity": "sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==", - "dev": true, - "requires": { - "@jest/types": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-mock": "^24.9.0" - } - }, - "@jest/reporters": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.9.0.tgz", - "integrity": "sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw==", + "@babel/helper-member-expression-to-functions": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.5.tgz", + "integrity": "sha512-HiqJpYD5+WopCXIAbQDG0zye5XYVvcO9w/DHp5GsaGkRUaamLj2bEtu6i8rnGGprAhHM3qidCMgp71HF4endhA==", "dev": true, "requires": { - "@jest/environment": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "glob": "^7.1.2", - "istanbul-lib-coverage": "^2.0.2", - "istanbul-lib-instrument": "^3.0.1", - "istanbul-lib-report": "^2.0.4", - "istanbul-lib-source-maps": "^3.0.1", - "istanbul-reports": "^2.2.6", - "jest-haste-map": "^24.9.0", - "jest-resolve": "^24.9.0", - "jest-runtime": "^24.9.0", - "jest-util": "^24.9.0", - "jest-worker": "^24.6.0", - "node-notifier": "^5.4.2", - "slash": "^2.0.0", - "source-map": "^0.6.0", - "string-length": "^2.0.0" + "@babel/types": "^7.10.5" }, "dependencies": { - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "@babel/types": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.5.tgz", + "integrity": "sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", "dev": true } } }, - "@jest/source-map": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz", - "integrity": "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==", + "@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": { - "callsites": "^3.0.0", - "graceful-fs": "^4.1.15", - "source-map": "^0.6.0" + "@babel/types": "^7.10.4" }, "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==", + "@babel/types": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.5.tgz", + "integrity": "sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", "dev": true } } }, - "@jest/test-result": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz", - "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==", - "dev": true, - "requires": { - "@jest/console": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/istanbul-lib-coverage": "^2.0.0" - } - }, - "@jest/test-sequencer": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz", - "integrity": "sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A==", - "dev": true, - "requires": { - "@jest/test-result": "^24.9.0", - "jest-haste-map": "^24.9.0", - "jest-runner": "^24.9.0", - "jest-runtime": "^24.9.0" - } - }, - "@jest/transform": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.9.0.tgz", - "integrity": "sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ==", + "@babel/helper-module-transforms": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.10.5.tgz", + "integrity": "sha512-4P+CWMJ6/j1W915ITJaUkadLObmCRRSC234uctJfn/vHrsLNxsR8dwlcXv9ZhJWzl77awf+mWXSZEKt5t0OnlA==", "dev": true, "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^24.9.0", - "babel-plugin-istanbul": "^5.1.0", - "chalk": "^2.0.1", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.1.15", - "jest-haste-map": "^24.9.0", - "jest-regex-util": "^24.9.0", - "jest-util": "^24.9.0", - "micromatch": "^3.1.10", - "pirates": "^4.0.1", - "realpath-native": "^1.1.0", - "slash": "^2.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "2.4.1" + "@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.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.5", + "lodash": "^4.17.19" }, "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==", + "@babel/code-frame": { + "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.10.4" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz", + "integrity": "sha512-pySBTeoUff56fL5CBU2hWm9TesA4r/rOkI9DyJLvvgz09MB9YtfIYe3iBriVaYNaPe+Alua0vBIOVOLs2buWhg==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/highlight": { + "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", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.5.tgz", + "integrity": "sha512-wfryxy4bE1UivvQKSQDU4/X6dr+i8bctjUjj8Zyt3DQy7NtPizJXT8M52nqpNKL+nq2PW8lxk4ZqLj0fD4B4hQ==", "dev": true }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "@babel/template": { + "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.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/types": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.5.tgz", + "integrity": "sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "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 + }, + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", "dev": true } } }, - "@jest/types": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", - "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - } - }, - "@nodelib/fs.scandir": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", - "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==", + "@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": { - "@nodelib/fs.stat": "2.0.3", - "run-parallel": "^1.1.9" + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.5.tgz", + "integrity": "sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "dev": true + } } }, - "@nodelib/fs.stat": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", - "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", + "@babel/helper-plugin-utils": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz", + "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==", "dev": true }, - "@nodelib/fs.walk": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz", - "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==", + "@babel/helper-regex": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.5.tgz", + "integrity": "sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg==", "dev": true, "requires": { - "@nodelib/fs.scandir": "2.1.3", - "fastq": "^1.6.0" + "lodash": "^4.17.19" + }, + "dependencies": { + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "dev": true + } } }, - "@textlint/ast-node-types": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-4.2.1.tgz", - "integrity": "sha512-Pqg1LTJpF929Ovi/lCaPqlyz8yDwBFbQulC0jyQcbRAoTxYS4AZMc48Ug2yk0so5hISQXKrlAxyVBmBVl9EKGA==", - "dev": true - }, - "@textlint/markdown-to-ast": { - "version": "6.0.9", - "resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-6.0.9.tgz", - "integrity": "sha512-hfAWBvTeUGh5t5kTn2U3uP3qOSM1BSrxzl1jF3nn0ywfZXpRBZr5yRjXnl4DzIYawCtZOshmRi/tI3/x4TE1jQ==", + "@babel/helper-remap-async-to-generator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.4.tgz", + "integrity": "sha512-86Lsr6NNw3qTNl+TBcF1oRZMaVzJtbWTyTko+CQL/tvNvcGYEFKbLXDPxtW0HKk3McNOk4KzY55itGWCAGK5tg==", "dev": true, "requires": { - "@textlint/ast-node-types": "^4.0.3", - "debug": "^2.1.3", - "remark-frontmatter": "^1.2.0", - "remark-parse": "^5.0.0", - "structured-source": "^3.0.2", - "traverse": "^0.6.6", - "unified": "^6.1.6" - } - }, - "@ts-morph/common": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.1.1.tgz", - "integrity": "sha512-8TLlC85CXgKNoTeqoXtrscPmKDbQCBfwZJ4hqli/QI4STa7sD2H6UqI9LSg8uBV5FYaD0QSdj/mtrCDrELvF+Q==", - "dev": true, - "requires": { - "@dsherret/to-absolute-glob": "^2.0.2", - "fs-extra": "^8.1.0", - "glob-parent": "^5.1.0", - "globby": "^10.0.1", - "is-negated-glob": "^1.0.0", - "multimatch": "^4.0.0", - "typescript": "~3.7.2" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-wrap-function": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" }, "dependencies": { - "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==", + "@babel/code-frame": { + "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": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "@babel/highlight": "^7.10.4" } }, - "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==", + "@babel/generator": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.5.tgz", + "integrity": "sha512-3vXxr3FEW7E7lJZiWQ3bM4+v/Vyr9C+hpolQ8BGFr9Y8Ri2tFLWTixmwKBafDujO1WVah4fhZBeU1bieKdghig==", + "dev": true, + "requires": { + "@babel/types": "^7.10.5", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "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.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-get-function-arity": { + "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-split-export-declaration": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz", + "integrity": "sha512-pySBTeoUff56fL5CBU2hWm9TesA4r/rOkI9DyJLvvgz09MB9YtfIYe3iBriVaYNaPe+Alua0vBIOVOLs2buWhg==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/highlight": { + "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", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.5.tgz", + "integrity": "sha512-wfryxy4bE1UivvQKSQDU4/X6dr+i8bctjUjj8Zyt3DQy7NtPizJXT8M52nqpNKL+nq2PW8lxk4ZqLj0fD4B4hQ==", "dev": true }, - "typescript": { - "version": "3.7.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.5.tgz", - "integrity": "sha512-/P5lkRXkWHNAbcJIiHPfRoKqyd7bsyCma1hZNUGfn20qm64T6ZBlrzprymeu918H+mB/0rIg2gGK/BXkhhYgBw==", + "@babel/template": { + "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.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/traverse": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.5.tgz", + "integrity": "sha512-yc/fyv2gUjPqzTz0WHeRJH2pv7jA9kA7mBX2tXl/x5iOE81uaVPuGPtaYk7wmkx4b67mQ7NqI8rmT2pF47KYKQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.10.5", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4", + "@babel/parser": "^7.10.5", + "@babel/types": "^7.10.5", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "@babel/types": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.5.tgz", + "integrity": "sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "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" + } + }, + "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 + }, + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "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 + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true } } }, - "@types/babel__core": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.6.tgz", - "integrity": "sha512-tTnhWszAqvXnhW7m5jQU9PomXSiKXk2sFxpahXvI20SZKu9ylPi8WtIxueZ6ehDWikPT0jeFujMj3X4ZHuf3Tg==", - "dev": true, - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "@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==", + "@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.0.0" + "@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" + }, + "dependencies": { + "@babel/code-frame": { + "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.10.4" + } + }, + "@babel/generator": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.5.tgz", + "integrity": "sha512-3vXxr3FEW7E7lJZiWQ3bM4+v/Vyr9C+hpolQ8BGFr9Y8Ri2tFLWTixmwKBafDujO1WVah4fhZBeU1bieKdghig==", + "dev": true, + "requires": { + "@babel/types": "^7.10.5", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "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.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-get-function-arity": { + "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-split-export-declaration": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz", + "integrity": "sha512-pySBTeoUff56fL5CBU2hWm9TesA4r/rOkI9DyJLvvgz09MB9YtfIYe3iBriVaYNaPe+Alua0vBIOVOLs2buWhg==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/highlight": { + "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", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.5.tgz", + "integrity": "sha512-wfryxy4bE1UivvQKSQDU4/X6dr+i8bctjUjj8Zyt3DQy7NtPizJXT8M52nqpNKL+nq2PW8lxk4ZqLj0fD4B4hQ==", + "dev": true + }, + "@babel/template": { + "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.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/traverse": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.5.tgz", + "integrity": "sha512-yc/fyv2gUjPqzTz0WHeRJH2pv7jA9kA7mBX2tXl/x5iOE81uaVPuGPtaYk7wmkx4b67mQ7NqI8rmT2pF47KYKQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.10.5", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4", + "@babel/parser": "^7.10.5", + "@babel/types": "^7.10.5", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "@babel/types": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.5.tgz", + "integrity": "sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "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" + } + }, + "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 + }, + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "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 + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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==", + "@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/parser": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/code-frame": { + "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.10.4" + } + }, + "@babel/highlight": { + "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", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.5.tgz", + "integrity": "sha512-wfryxy4bE1UivvQKSQDU4/X6dr+i8bctjUjj8Zyt3DQy7NtPizJXT8M52nqpNKL+nq2PW8lxk4ZqLj0fD4B4hQ==", + "dev": true + }, + "@babel/template": { + "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.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/types": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.5.tgz", + "integrity": "sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "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 + }, + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "dev": true + } } }, - "@types/babel__traverse": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.9.tgz", - "integrity": "sha512-jEFQ8L1tuvPjOI8lnpaf73oCJe+aoxL6ygqSy6c8LcW98zaC+4mzWuQIRCEvKeCOu+lbqdXcg4Uqmm1S8AP1tw==", + "@babel/helper-split-export-declaration": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", "dev": true, "requires": { - "@babel/types": "^7.3.0" + "@babel/types": "^7.8.3" } }, - "@types/benchmark": { - "version": "1.0.31", - "resolved": "https://registry.npmjs.org/@types/benchmark/-/benchmark-1.0.31.tgz", - "integrity": "sha1-LdNRTpM5bzYrpVUafJ/w2kBcHTg=", + "@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 }, - "@types/glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-VgNIkxK+j7Nz5P7jvUZlRvhuPSmsEfS03b0alKcq5V/STUKAa3Plemsn5mrQUO7am6OErJ4rhGEGJbACclrtRA==", + "@babel/helper-wrap-function": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz", + "integrity": "sha512-6py45WvEF0MhiLrdxtRjKjufwLL1/ob2qDJgg5JgNdojBAZSAKnAjkyOCNug6n+OBl4VW76XjvgSFTdaMcW0Ug==", "dev": true, "requires": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "@types/istanbul-lib-coverage": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", - "integrity": "sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg==", - "dev": true + "@babel/helper-function-name": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/code-frame": { + "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.10.4" + } + }, + "@babel/generator": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.5.tgz", + "integrity": "sha512-3vXxr3FEW7E7lJZiWQ3bM4+v/Vyr9C+hpolQ8BGFr9Y8Ri2tFLWTixmwKBafDujO1WVah4fhZBeU1bieKdghig==", + "dev": true, + "requires": { + "@babel/types": "^7.10.5", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "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.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-get-function-arity": { + "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-split-export-declaration": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz", + "integrity": "sha512-pySBTeoUff56fL5CBU2hWm9TesA4r/rOkI9DyJLvvgz09MB9YtfIYe3iBriVaYNaPe+Alua0vBIOVOLs2buWhg==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/highlight": { + "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", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.5.tgz", + "integrity": "sha512-wfryxy4bE1UivvQKSQDU4/X6dr+i8bctjUjj8Zyt3DQy7NtPizJXT8M52nqpNKL+nq2PW8lxk4ZqLj0fD4B4hQ==", + "dev": true + }, + "@babel/template": { + "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.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/traverse": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.5.tgz", + "integrity": "sha512-yc/fyv2gUjPqzTz0WHeRJH2pv7jA9kA7mBX2tXl/x5iOE81uaVPuGPtaYk7wmkx4b67mQ7NqI8rmT2pF47KYKQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.10.5", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4", + "@babel/parser": "^7.10.5", + "@babel/types": "^7.10.5", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "@babel/types": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.5.tgz", + "integrity": "sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "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" + } + }, + "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 + }, + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "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 + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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==", + "@babel/helpers": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.8.4.tgz", + "integrity": "sha512-VPbe7wcQ4chu4TDQjimHv/5tj73qz88o12EPkO2ValS2QiQS/1F2SsjyIGNnAD0vF/nZS6Cf9i+vW6HIlnaR8w==", "dev": true, "requires": { - "@types/istanbul-lib-coverage": "*" + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.4", + "@babel/types": "^7.8.3" } }, - "@types/istanbul-reports": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz", - "integrity": "sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA==", + "@babel/highlight": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", + "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", "dev": true, "requires": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "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 + } } }, - "@types/jest": { - "version": "22.2.2", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-22.2.2.tgz", - "integrity": "sha1-r+Xay9ANZTJfUtoO0+duJZYprJ0=", - "dev": true - }, - "@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/node": { - "version": "12.6.8", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.6.8.tgz", - "integrity": "sha512-aX+gFgA5GHcDi89KG5keey2zf0WfZk/HAQotEamsK2kbey+8yGKcson0hbK8E+v0NArlCJQCqMP161YhV6ZXLg==", - "dev": true - }, - "@types/prettier": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-1.10.0.tgz", - "integrity": "sha1-Wr8ewKbpBP4kkMwgaPNqOOSmPEI=", - "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==", + "@babel/parser": { + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.8.tgz", + "integrity": "sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA==", "dev": true }, - "@types/yargs": { - "version": "13.0.8", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.8.tgz", - "integrity": "sha512-XAvHLwG7UQ+8M4caKIH0ZozIOYay5fQkAgyIXegXT9jPtdIGdhga+sUEdAr1CiG46aB+c64xQEYyEzlwWVTNzA==", + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.5.tgz", + "integrity": "sha512-cNMCVezQbrRGvXJwm9fu/1sJj9bHdGAgKodZdLqOQIpfoH3raqmRPBM17+lh7CzhiKRRBrGtZL9WcjxSoGYUSg==", "dev": true, "requires": { - "@types/yargs-parser": "*" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.10.4", + "@babel/plugin-syntax-async-generators": "^7.8.0" + }, + "dependencies": { + "@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 + } } }, - "@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 - }, - "abab": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.3.tgz", - "integrity": "sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg==", - "dev": true - }, - "acorn": { - "version": "5.7.4", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", - "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", - "dev": true - }, - "acorn-globals": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", - "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", + "@babel/plugin-proposal-class-properties": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.4.tgz", + "integrity": "sha512-vhwkEROxzcHGNu2mzUC0OFFNXdZ4M23ib8aRRcJSsW8BZK9pQMD7QB7csl97NBbgGZO7ZyHUyKDnxzOaP4IrCg==", "dev": true, "requires": { - "acorn": "^6.0.1", - "acorn-walk": "^6.0.1" + "@babel/helper-create-class-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" }, "dependencies": { - "acorn": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", - "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", + "@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 } } }, - "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 - }, - "ajv": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", - "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "@babel/plugin-proposal-dynamic-import": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.4.tgz", + "integrity": "sha512-up6oID1LeidOOASNXgv/CFbgBqTuKJ0cJjz6An5tWD+NVBNlp3VNSBxv2ZdU7SYl3NxJC7agAQDApZusV6uFwQ==", "dev": true, "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-dynamic-import": "^7.8.0" + }, + "dependencies": { + "@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 + } } }, - "anchor-markdown-header": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/anchor-markdown-header/-/anchor-markdown-header-0.5.7.tgz", - "integrity": "sha1-BFBj125qH5zTJ6V6ASaqD97Dcac=", + "@babel/plugin-proposal-json-strings": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz", + "integrity": "sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw==", "dev": true, "requires": { - "emoji-regex": "~6.1.0" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.0" + }, + "dependencies": { + "@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 + } } }, - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true - }, - "ansi-red": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz", - "integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=", + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz", + "integrity": "sha512-wq5n1M3ZUlHl9sqT2ok1T2/MTt6AXE0e1Lz4WzWBr95LsAZ5qDXe4KnFuauYyEyLiohvXFMdbsOTMyLZs91Zlw==", "dev": true, "requires": { - "ansi-wrap": "0.1.0" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + }, + "dependencies": { + "@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 + } } }, - "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.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "@babel/plugin-proposal-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.4.tgz", + "integrity": "sha512-73/G7QoRoeNkLZFxsoCCvlg4ezE4eM+57PnOqgaPOozd5myfj7p0muD1mRVJvbUWbOzD+q3No2bWbaKy+DJ8DA==", "dev": true, "requires": { - "color-convert": "^1.9.0" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "dependencies": { + "@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 + } } }, - "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 + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.4.tgz", + "integrity": "sha512-6vh4SqRuLLarjgeOf4EaROJAHjvu9Gl+/346PbDH9yWbJyfnJ/ah3jmYKYtswEyCoWZiidvVHjHshd4WgjB9BA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.10.4" + }, + "dependencies": { + "@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 + } + } }, - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz", + "integrity": "sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g==", "dev": true, "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + }, + "dependencies": { + "@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 + } } }, - "arg": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz", - "integrity": "sha1-WDxRgZlBngA3q7dAYsN/hRnldfA=", - "dev": true - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=", + "@babel/plugin-proposal-optional-chaining": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.10.4.tgz", + "integrity": "sha512-ZIhQIEeavTgouyMSdZRap4VPPHqJJ3NEs2cuHs5p0erH+iz6khB0qfgU8g7UuJkG88+fBMy23ZiU+nuHvekJeQ==", "dev": true, "requires": { - "sprintf-js": "~1.0.2" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" + }, + "dependencies": { + "@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 + } } }, - "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 - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=", - "dev": true - }, - "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 + "@babel/plugin-proposal-private-methods": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.4.tgz", + "integrity": "sha512-wh5GJleuI8k3emgTg5KkJK6kHNsGEr0uBTDBuQUBJwckk9xs1ez79ioheEVVxMLyPscB0LfkbVHslQqIzWV6Bw==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@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 + } + } }, - "array-differ": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", - "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", - "dev": true + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz", + "integrity": "sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@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 + } + } }, - "array-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", - "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" + } }, - "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 + "@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" + }, + "dependencies": { + "@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 + } + } }, - "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 + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } }, - "arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", - "dev": true + "@babel/plugin-syntax-flow": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.10.4.tgz", + "integrity": "sha512-yxQsX1dJixF4qEEdzVbst3SZQ58Nrooz8NV9Z9GL4byTE25BvJgl5lf0RECUf0fh28rZBb/RYTWn/eeKwCMrZQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@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 + } + } }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "@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": { - "safer-buffer": "~2.1.0" + "@babel/helper-plugin-utils": "^7.8.0" } }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true + "@babel/plugin-syntax-jsx": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.4.tgz", + "integrity": "sha512-KCg9mio9jwiARCB7WAcQ7Y1q+qicILjoK8LP/VkPkEKaf5dkaZZK1EcTe91a3JJlZ3qy6L5s9X52boEYi8DM9g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@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 + } + } }, - "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 + "@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" + } }, - "astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "dev": true + "@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" + }, + "dependencies": { + "@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 + } + } }, - "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 + "@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" + } }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true + "@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" + } }, - "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 + "@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" + } }, - "autolinker": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/autolinker/-/autolinker-0.28.1.tgz", - "integrity": "sha1-BlK0kYgYefB3XazgzcoyM5QqTkc=", + "@babel/plugin-syntax-top-level-await": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz", + "integrity": "sha512-ni1brg4lXEmWyafKr0ccFWkJG0CeMt4WV1oyeBW6EFObF4oOHclbkj5cARxAPQyAQ2UTuplJyK4nfkXIMMFvsQ==", "dev": true, "requires": { - "gulp-header": "^1.7.1" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@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 + } } }, - "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 + "@babel/plugin-transform-arrow-functions": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz", + "integrity": "sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@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 + } + } }, - "aws4": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", - "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==", - "dev": true + "@babel/plugin-transform-async-to-generator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz", + "integrity": "sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.10.4" + }, + "dependencies": { + "@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-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz", + "integrity": "sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA==", "dev": true, "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" + "@babel/helper-plugin-utils": "^7.10.4" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "@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 - }, - "chalk": { - "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + } + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.5.tgz", + "integrity": "sha512-6Ycw3hjpQti0qssQcA6AMSFDHeNJ++R6dIMnpRqUjFeBBTmTDPa8zgF90OVfTvAo11mXZTlVUViY1g8ffrURLg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@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-jest": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.9.0.tgz", - "integrity": "sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw==", + "@babel/plugin-transform-classes": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz", + "integrity": "sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA==", "dev": true, "requires": { - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/babel__core": "^7.1.0", - "babel-plugin-istanbul": "^5.1.0", - "babel-preset-jest": "^24.9.0", - "chalk": "^2.4.2", - "slash": "^2.0.0" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-define-map": "^7.10.4", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4", + "globals": "^11.1.0" }, "dependencies": { - "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==", + "@babel/code-frame": { + "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": { - "color-convert": "^1.9.0" + "@babel/highlight": "^7.10.4" } }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "@babel/helper-function-name": { + "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": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" } }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "@babel/helper-get-function-arity": { + "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-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 }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "@babel/helper-split-export-declaration": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz", + "integrity": "sha512-pySBTeoUff56fL5CBU2hWm9TesA4r/rOkI9DyJLvvgz09MB9YtfIYe3iBriVaYNaPe+Alua0vBIOVOLs2buWhg==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/highlight": { + "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", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.5.tgz", + "integrity": "sha512-wfryxy4bE1UivvQKSQDU4/X6dr+i8bctjUjj8Zyt3DQy7NtPizJXT8M52nqpNKL+nq2PW8lxk4ZqLj0fD4B4hQ==", "dev": true }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "@babel/template": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/types": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.5.tgz", + "integrity": "sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" } + }, + "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 + }, + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "dev": true } } }, - "babel-plugin-istanbul": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz", - "integrity": "sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==", + "@babel/plugin-transform-computed-properties": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz", + "integrity": "sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "find-up": "^3.0.0", - "istanbul-lib-instrument": "^3.3.0", - "test-exclude": "^5.2.3" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@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-plugin-jest-hoist": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz", - "integrity": "sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw==", + "@babel/plugin-transform-destructuring": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz", + "integrity": "sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA==", "dev": true, "requires": { - "@types/babel__traverse": "^7.0.6" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@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-preset-jest": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz", - "integrity": "sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg==", + "@babel/plugin-transform-dotall-regex": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz", + "integrity": "sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA==", "dev": true, "requires": { - "@babel/plugin-syntax-object-rest-spread": "^7.0.0", - "babel-plugin-jest-hoist": "^24.9.0" + "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@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 + } } }, - "bail": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.3.tgz", - "integrity": "sha512-1X8CnjFVQ+a+KW36uBNMTU5s8+v5FzeqrP7hTG5aTb4aPreSbZJlhwPon9VKMuEVgV++JM+SQrALY3kr7eswdg==", - "dev": true + "@babel/plugin-transform-duplicate-keys": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz", + "integrity": "sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@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 + } + } }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz", + "integrity": "sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@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 + } + } }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha1-e95c7RRbbVUakNuH+DxVi060io8=", + "@babel/plugin-transform-flow-strip-types": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.10.4.tgz", + "integrity": "sha512-XTadyuqNst88UWBTdLjM+wEY7BFnY2sYtPyAidfC7M/QaZnSuIZpMvLxqGT7phAcnGyWh/XQFLKcGf04CnvxSQ==", "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" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-flow": "^7.10.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=", + "@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/plugin-transform-for-of": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz", + "integrity": "sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@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/plugin-transform-function-name": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz", + "integrity": "sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@babel/code-frame": { + "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": { - "is-descriptor": "^1.0.0" + "@babel/highlight": "^7.10.4" } }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "@babel/helper-function-name": { + "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": { - "kind-of": "^6.0.0" + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" } }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "@babel/helper-get-function-arity": { + "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": { - "kind-of": "^6.0.0" + "@babel/types": "^7.10.4" } }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "@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/highlight": { + "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": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" } }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "@babel/parser": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.5.tgz", + "integrity": "sha512-wfryxy4bE1UivvQKSQDU4/X6dr+i8bctjUjj8Zyt3DQy7NtPizJXT8M52nqpNKL+nq2PW8lxk4ZqLj0fD4B4hQ==", "dev": true }, - "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==", + "@babel/template": { + "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.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/types": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.5.tgz", + "integrity": "sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "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 + }, + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", "dev": true } } }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "@babel/plugin-transform-literals": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz", + "integrity": "sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ==", "dev": true, "requires": { - "tweetnacl": "^0.14.3" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@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 + } } }, - "benchmark": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/benchmark/-/benchmark-2.1.4.tgz", - "integrity": "sha1-CfPeMckWQl1JjMLuVloOvzwqVik=", + "@babel/plugin-transform-member-expression-literals": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz", + "integrity": "sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw==", "dev": true, "requires": { - "lodash": "^4.17.4", - "platform": "^1.3.3" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@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 + } } }, - "bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "@babel/plugin-transform-modules-amd": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.5.tgz", + "integrity": "sha512-elm5uruNio7CTLFItVC/rIzKLfQ17+fX7EVz5W0TMgIHFo1zY0Ozzx+lgwhL4plzl8OzVn6Qasx5DeEFyoNiRw==", "dev": true, - "optional": true, "requires": { - "file-uri-to-path": "1.0.0" + "@babel/helper-module-transforms": "^7.10.5", + "@babel/helper-plugin-utils": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "dependencies": { + "@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 + } } }, - "boundary": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/boundary/-/boundary-1.0.1.tgz", - "integrity": "sha1-TWfcJgLAzBbdm85+v4fpSCkPWBI=", - "dev": true + "@babel/plugin-transform-modules-commonjs": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz", + "integrity": "sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-simple-access": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "dependencies": { + "@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 + } + } }, - "brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "@babel/plugin-transform-modules-systemjs": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.5.tgz", + "integrity": "sha512-f4RLO/OL14/FP1AEbcsWMzpbUz6tssRaeQg11RH1BP/XnPpRoVwgeYViMFacnkaw4k4wjRSjn3ip1Uw9TaXuMw==", "dev": true, "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "@babel/helper-hoist-variables": "^7.10.4", + "@babel/helper-module-transforms": "^7.10.5", + "@babel/helper-plugin-utils": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "dependencies": { + "@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 + } } }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "@babel/plugin-transform-modules-umd": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz", + "integrity": "sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA==", "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" + "@babel/helper-module-transforms": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" }, "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" - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "@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/plugin-transform-named-capturing-groups-regex": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz", + "integrity": "sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.10.4" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz", + "integrity": "sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@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/plugin-transform-object-super": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz", + "integrity": "sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4" + }, + "dependencies": { + "@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/plugin-transform-parameters": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.5.tgz", + "integrity": "sha512-xPHwUj5RdFV8l1wuYiu5S9fqWGM2DrYc24TMvUiRrPVm+SM3XeqU9BcokQX/kEUe+p2RBwy+yoiR1w/Blq6ubw==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@babel/helper-get-function-arity": { + "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": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "@babel/types": "^7.10.4" } }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "@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/types": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.5.tgz", + "integrity": "sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q==", "dev": true, "requires": { - "kind-of": "^3.0.2" + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" } }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", "dev": true } } }, - "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-resolve": { - "version": "1.11.3", - "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", - "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", + "@babel/plugin-transform-property-literals": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz", + "integrity": "sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g==", "dev": true, "requires": { - "resolve": "1.1.7" + "@babel/helper-plugin-utils": "^7.10.4" }, "dependencies": { - "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "@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 } } }, - "browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha1-uqVZ7hTO1zRSIputcyZGfGH6vWA=", - "dev": true - }, - "bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "@babel/plugin-transform-react-jsx": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.10.4.tgz", + "integrity": "sha512-L+MfRhWjX0eI7Js093MM6MacKU4M6dnCRa/QPDwYMxjljzSCzzlzKzj9Pk4P3OtrPcxr2N3znR419nr3Xw+65A==", "dev": true, "requires": { - "fast-json-stable-stringify": "2.x" + "@babel/helper-builder-react-jsx": "^7.10.4", + "@babel/helper-builder-react-jsx-experimental": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-jsx": "^7.10.4" + }, + "dependencies": { + "@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 + } } }, - "bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "@babel/plugin-transform-regenerator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz", + "integrity": "sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw==", "dev": true, "requires": { - "node-int64": "^0.4.0" + "regenerator-transform": "^0.14.2" } }, - "buffer-from": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz", - "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==", - "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 - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha1-Cn9GQWgxyLZi7jb+TnxZ129marI=", + "@babel/plugin-transform-reserved-words": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz", + "integrity": "sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ==", "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" + "@babel/helper-plugin-utils": "^7.10.4" }, "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "@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 } } }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, - "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==", + "@babel/plugin-transform-shorthand-properties": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz", + "integrity": "sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q==", "dev": true, "requires": { - "rsvp": "^4.8.4" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@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 + } } }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true - }, - "chalk": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.2.0.tgz", - "integrity": "sha1-R3s78vm4/Vyp5Cl0fjf3JO568kA=", + "@babel/plugin-transform-spread": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.10.4.tgz", + "integrity": "sha512-1e/51G/Ni+7uH5gktbWv+eCED9pP8ZpRhZB3jOaI3mmzfvJTWHkuyYTv0Z5PYtyM+Tr2Ccr9kUdQxn60fI5WuQ==", "dev": true, "requires": { - "ansi-styles": "^3.1.0", - "escape-string-regexp": "^1.0.5", - "supports-color": "^4.0.0" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@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 + } } }, - "character-entities": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.2.tgz", - "integrity": "sha512-sMoHX6/nBiy3KKfC78dnEalnpn0Az0oSNvqUWYTtYrhRI5iUIYsROU48G+E+kMFQzqXaJ8kHJZ85n7y6/PHgwQ==", - "dev": true - }, - "character-entities-legacy": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.2.tgz", - "integrity": "sha512-9NB2VbXtXYWdXzqrvAHykE/f0QJxzaKIpZ5QzNZrrgQ7Iyxr2vnfS8fCBNVW9nUEZE0lo57nxKRqnzY/dKrwlA==", - "dev": true - }, - "character-reference-invalid": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.2.tgz", - "integrity": "sha512-7I/xceXfKyUJmSAn/jw8ve/9DyOP7XxufNYLI9Px7CmsKgEUaZLUTax6nZxGQtaoiZCjpu6cHPj20xC/vqRReQ==", - "dev": 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 - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha1-+TNprouafOAv1B+q0MqDAzGQxGM=", + "@babel/plugin-transform-sticky-regex": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz", + "integrity": "sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ==", "dev": true, "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-regex": "^7.10.4" }, "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" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "@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 } } }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "@babel/plugin-transform-template-literals": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.5.tgz", + "integrity": "sha512-V/lnPGIb+KT12OQikDvgSuesRX14ck5FfJXt6+tXhdkJ+Vsd0lDCVtF6jcB4rNClYFzaB2jusZ+lNISDk2mMMw==", "dev": true, "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" }, "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "@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 - }, - "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" - } } } }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true - }, - "code-block-writer": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-10.1.0.tgz", - "integrity": "sha512-RG9hpXtWFeUWhuUav1YuP/vGcyncW+t90yJLk9fNZs1De2OuHTHKAKThVCokt29PYq5RoJ0QSZaIZ+rvPO23hA==", - "dev": true - }, - "coffee-script": { - "version": "1.12.7", - "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.12.7.tgz", - "integrity": "sha512-fLeEhqwymYat/MpTPUjSKHVYYl0ec2mOyALEMLmzr5i1isuG+6jfI2j2d5oBO3VIzgUXgBVIcOT9uH1TFxBckw==", - "dev": true - }, - "collapse-white-space": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.4.tgz", - "integrity": "sha512-YfQ1tAUZm561vpYD+5eyWN8+UsceQbSrqqlc/6zDY2gtAE+uZLSdkkovhnGpmCThsvKBFakq4EdY/FF93E8XIw==", - "dev": true - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "@babel/plugin-transform-typeof-symbol": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz", + "integrity": "sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA==", "dev": true, "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@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 + } } }, - "color-convert": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", - "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "@babel/plugin-transform-unicode-escapes": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.4.tgz", + "integrity": "sha512-y5XJ9waMti2J+e7ij20e+aH+fho7Wb7W8rNuu72aKRwCHFqQdhkdU2lo3uZ9tQuboEJcUFayXdARhcxLQ3+6Fg==", "dev": true, "requires": { - "color-name": "^1.1.1" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@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 + } } }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "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": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha1-9hmKqE5bg8RgVLlN3tv+1e6f8So=", - "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==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "concat-with-sourcemaps": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz", - "integrity": "sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==", - "dev": true, - "requires": { - "source-map": "^0.6.1" - } - }, - "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==", + "@babel/plugin-transform-unicode-regex": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz", + "integrity": "sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A==", "dev": true, "requires": { - "safe-buffer": "~5.1.1" + "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@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 + } } }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true - }, - "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=", - "dev": true - }, - "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" + "@babel/preset-env": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.10.4.tgz", + "integrity": "sha512-tcmuQ6vupfMZPrLrc38d0sF2OjLT3/bZ0dry5HchNCQbrokoQi4reXqclvkkAT5b+gWc23meVWpve5P/7+w/zw==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.10.4", + "@babel/helper-compilation-targets": "^7.10.4", + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-proposal-async-generator-functions": "^7.10.4", + "@babel/plugin-proposal-class-properties": "^7.10.4", + "@babel/plugin-proposal-dynamic-import": "^7.10.4", + "@babel/plugin-proposal-json-strings": "^7.10.4", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.4", + "@babel/plugin-proposal-numeric-separator": "^7.10.4", + "@babel/plugin-proposal-object-rest-spread": "^7.10.4", + "@babel/plugin-proposal-optional-catch-binding": "^7.10.4", + "@babel/plugin-proposal-optional-chaining": "^7.10.4", + "@babel/plugin-proposal-private-methods": "^7.10.4", + "@babel/plugin-proposal-unicode-property-regex": "^7.10.4", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-class-properties": "^7.10.4", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/plugin-syntax-top-level-await": "^7.10.4", + "@babel/plugin-transform-arrow-functions": "^7.10.4", + "@babel/plugin-transform-async-to-generator": "^7.10.4", + "@babel/plugin-transform-block-scoped-functions": "^7.10.4", + "@babel/plugin-transform-block-scoping": "^7.10.4", + "@babel/plugin-transform-classes": "^7.10.4", + "@babel/plugin-transform-computed-properties": "^7.10.4", + "@babel/plugin-transform-destructuring": "^7.10.4", + "@babel/plugin-transform-dotall-regex": "^7.10.4", + "@babel/plugin-transform-duplicate-keys": "^7.10.4", + "@babel/plugin-transform-exponentiation-operator": "^7.10.4", + "@babel/plugin-transform-for-of": "^7.10.4", + "@babel/plugin-transform-function-name": "^7.10.4", + "@babel/plugin-transform-literals": "^7.10.4", + "@babel/plugin-transform-member-expression-literals": "^7.10.4", + "@babel/plugin-transform-modules-amd": "^7.10.4", + "@babel/plugin-transform-modules-commonjs": "^7.10.4", + "@babel/plugin-transform-modules-systemjs": "^7.10.4", + "@babel/plugin-transform-modules-umd": "^7.10.4", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.10.4", + "@babel/plugin-transform-new-target": "^7.10.4", + "@babel/plugin-transform-object-super": "^7.10.4", + "@babel/plugin-transform-parameters": "^7.10.4", + "@babel/plugin-transform-property-literals": "^7.10.4", + "@babel/plugin-transform-regenerator": "^7.10.4", + "@babel/plugin-transform-reserved-words": "^7.10.4", + "@babel/plugin-transform-shorthand-properties": "^7.10.4", + "@babel/plugin-transform-spread": "^7.10.4", + "@babel/plugin-transform-sticky-regex": "^7.10.4", + "@babel/plugin-transform-template-literals": "^7.10.4", + "@babel/plugin-transform-typeof-symbol": "^7.10.4", + "@babel/plugin-transform-unicode-escapes": "^7.10.4", + "@babel/plugin-transform-unicode-regex": "^7.10.4", + "@babel/preset-modules": "^0.1.3", + "@babel/types": "^7.10.4", + "browserslist": "^4.12.0", + "core-js-compat": "^3.6.2", + "invariant": "^2.2.2", + "levenary": "^1.1.1", + "semver": "^5.5.0" }, "dependencies": { + "@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/types": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.5.tgz", + "integrity": "sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "dev": true + }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", @@ -1588,276 +2685,146 @@ } } }, - "cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - }, - "cssstyle": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz", - "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", + "@babel/preset-modules": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz", + "integrity": "sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg==", "dev": true, "requires": { - "cssom": "0.3.x" + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" } }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "@babel/runtime": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.5.tgz", + "integrity": "sha512-otddXKhdNn7d0ptoFRHtMLa8LqDxLYwTjB4nYgM1yy5N6gU/MUf8zqyyLltCH3yAVitBzmwK4us+DD0l/MauAg==", "dev": true, "requires": { - "assert-plus": "^1.0.0" + "regenerator-runtime": "^0.13.4" } }, - "data-urls": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", - "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "@babel/template": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", "dev": true, "requires": { - "abab": "^2.0.0", - "whatwg-mimetype": "^2.2.0", - "whatwg-url": "^7.0.0" + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" }, "dependencies": { - "whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", "dev": true, "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" + "@babel/highlight": "^7.8.3" + } + }, + "@babel/highlight": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", + "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" } + }, + "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 } } }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", - "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=", - "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-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 - }, - "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": "sha1-1Flono1lS6d+AqgX+HENcCyxbp0=", + "@babel/traverse": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.6.tgz", + "integrity": "sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A==", "dev": true, "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.8.6", + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" }, "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", "dev": true, "requires": { - "kind-of": "^6.0.0" + "@babel/highlight": "^7.8.3" } }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "@babel/highlight": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", + "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", "dev": true, "requires": { - "kind-of": "^6.0.0" + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" } }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "ms": "^2.1.1" } }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "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 }, - "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 - } - } - }, - "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 - }, - "detect-newline": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", - "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", - "dev": true - }, - "diacritics-map": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/diacritics-map/-/diacritics-map-0.1.0.tgz", - "integrity": "sha1-bfwP+dAQAKLt8oZTccrDFulJd68=", - "dev": true - }, - "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha1-gAwN0eCov7yVg1wgKtIg/jF+WhI=", - "dev": true - }, - "diff-sequences": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz", - "integrity": "sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==", - "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==", + "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 } } }, - "docs-ts": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/docs-ts/-/docs-ts-0.5.1.tgz", - "integrity": "sha512-zdBt4P6X7h577/Vku0YHAw/RR1+zpKklK+DOzed1HJltwAAciQG14qy18TzcMbVUFxrnT9OO4Y1K/lQLdX1i/Q==", + "@babel/types": { + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", + "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", "dev": true, "requires": { - "chalk": "^2.4.2", - "doctrine": "^3.0.0", - "fp-ts": "^2.6.2", - "fs-extra": "^7.0.1", - "glob": "^7.1.3", - "markdown-toc": "^1.2.0", - "rimraf": "^2.6.3", - "ts-morph": "^5.0.0", - "ts-node": "^8.0.2" - }, - "dependencies": { - "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": { - "color-convert": "^1.9.0" - } - }, - "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": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "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" - } - } + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" } }, - "doctoc": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/doctoc/-/doctoc-1.4.0.tgz", - "integrity": "sha512-8IAq3KdMkxhXCUF+xdZxdJxwuz8N2j25sMgqiu4U4JWluN9tRKMlAalxGASszQjlZaBprdD2YfXpL3VPWUD4eg==", + "@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": { - "@textlint/markdown-to-ast": "~6.0.9", - "anchor-markdown-header": "^0.5.5", - "htmlparser2": "~3.9.2", - "minimist": "~1.2.0", - "underscore": "~1.8.3", - "update-section": "^0.3.0" + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" }, "dependencies": { "minimist": { @@ -1868,2678 +2835,6842 @@ } } }, - "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" - } - }, - "dom-serializer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", - "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", + "@dsherret/to-absolute-glob": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@dsherret/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", + "integrity": "sha1-H2R13IvZdM6gei2vOGSzF7HdMyw=", "dev": true, "requires": { - "domelementtype": "^1.3.0", - "entities": "^1.1.1" + "is-absolute": "^1.0.0", + "is-negated-glob": "^1.0.0" } }, - "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "@iarna/toml": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", + "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==", "dev": true }, - "domexception": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", - "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "@jest/console": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz", + "integrity": "sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==", "dev": true, "requires": { - "webidl-conversions": "^4.0.2" + "@jest/source-map": "^24.9.0", + "chalk": "^2.0.1", + "slash": "^2.0.0" + }, + "dependencies": { + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + } } }, - "domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "@jest/environment": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.9.0.tgz", + "integrity": "sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ==", "dev": true, "requires": { - "domelementtype": "1" + "@jest/fake-timers": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0" } }, - "domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "@jest/fake-timers": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz", + "integrity": "sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==", "dev": true, "requires": { - "dom-serializer": "0", - "domelementtype": "1" + "@jest/types": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-mock": "^24.9.0" } }, - "dtslint": { - "version": "github:gcanti/dtslint#de9181e0f1069b16ea15da87f74d88ed9bc221b7", - "from": "github:gcanti/dtslint", + "@jest/reporters": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.9.0.tgz", + "integrity": "sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw==", "dev": true, "requires": { - "fs-extra": "^6.0.1", - "parsimmon": "^1.12.0", - "strip-json-comments": "^2.0.1", - "tslint": "^5.12.0", - "typescript": "^4.0.0-dev.20200512" + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.2", + "istanbul-lib-coverage": "^2.0.2", + "istanbul-lib-instrument": "^3.0.1", + "istanbul-lib-report": "^2.0.4", + "istanbul-lib-source-maps": "^3.0.1", + "istanbul-reports": "^2.2.6", + "jest-haste-map": "^24.9.0", + "jest-resolve": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.6.0", + "node-notifier": "^5.4.2", + "slash": "^2.0.0", + "source-map": "^0.6.0", + "string-length": "^2.0.0" }, "dependencies": { - "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": { - "color-convert": "^1.9.0" - } - }, - "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": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "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" - } - }, - "tslint": { - "version": "5.20.1", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.20.1.tgz", - "integrity": "sha512-EcMxhzCFt8k+/UP5r8waCf/lzmeSyVlqxqMEDQE7rWYiQky8KpIBz1JAoYXfROHrPZ1XXd43q8yQnULOLiBRQg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "builtin-modules": "^1.1.1", - "chalk": "^2.3.0", - "commander": "^2.12.1", - "diff": "^4.0.1", - "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" - } - }, - "tsutils": { - "version": "2.29.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", - "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - } - }, - "typescript": { - "version": "4.0.0-dev.20200512", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.0-dev.20200512.tgz", - "integrity": "sha512-ZsVvhdxpQaA6KpjlT8wNNtweORzNsMtwgCo8viKWQmOvaU+BlMsd3MjD2LONQjFSiETCaw4uq0nNdyfKrCjjIw==", + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", "dev": true } } }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "@jest/source-map": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz", + "integrity": "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==", "dev": true, "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" + "callsites": "^3.0.0", + "graceful-fs": "^4.1.15", + "source-map": "^0.6.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 + } } }, - "emoji-regex": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-6.1.3.tgz", - "integrity": "sha1-7HmjlpsC0uzytyJUJ5v5m8eoOTI=", - "dev": true + "@jest/test-result": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz", + "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==", + "dev": true, + "requires": { + "@jest/console": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/istanbul-lib-coverage": "^2.0.0" + } }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "@jest/test-sequencer": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz", + "integrity": "sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A==", "dev": true, "requires": { - "once": "^1.4.0" + "@jest/test-result": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-runner": "^24.9.0", + "jest-runtime": "^24.9.0" } }, - "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", - "dev": true + "@jest/transform": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.9.0.tgz", + "integrity": "sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^24.9.0", + "babel-plugin-istanbul": "^5.1.0", + "chalk": "^2.0.1", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.1.15", + "jest-haste-map": "^24.9.0", + "jest-regex-util": "^24.9.0", + "jest-util": "^24.9.0", + "micromatch": "^3.1.10", + "pirates": "^4.0.1", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "2.4.1" + }, + "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 + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "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==", + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", "dev": true, "requires": { - "is-arrayish": "^0.2.1" + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" } }, - "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==", + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", + "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", "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" + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" } }, - "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==", + "@nodelib/fs.scandir": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", + "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==", "dev": true, "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "@nodelib/fs.stat": "2.0.3", + "run-parallel": "^1.1.9" } }, - "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=", + "@nodelib/fs.stat": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", + "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", "dev": true }, - "escodegen": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.1.tgz", - "integrity": "sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ==", + "@nodelib/fs.walk": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz", + "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==", "dev": true, "requires": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" + "@nodelib/fs.scandir": "2.1.3", + "fastq": "^1.6.0" + } + }, + "@parcel/fs": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-1.11.0.tgz", + "integrity": "sha512-86RyEqULbbVoeo8OLcv+LQ1Vq2PKBAvWTU9fCgALxuCTbbs5Ppcvll4Vr+Ko1AnmMzja/k++SzNAwJfeQXVlpA==", + "dev": true, + "requires": { + "@parcel/utils": "^1.11.0", + "mkdirp": "^0.5.1", + "rimraf": "^2.6.2" + } + }, + "@parcel/logger": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-1.11.1.tgz", + "integrity": "sha512-9NF3M6UVeP2udOBDILuoEHd8VrF4vQqoWHEafymO1pfSoOMfxrSJZw1MfyAAIUN/IFp9qjcpDCUbDZB+ioVevA==", + "dev": true, + "requires": { + "@parcel/workers": "^1.11.0", + "chalk": "^2.1.0", + "grapheme-breaker": "^0.3.2", + "ora": "^2.1.0", + "strip-ansi": "^4.0.0" }, "dependencies": { - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } } } }, - "esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "@parcel/utils": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-1.11.0.tgz", + "integrity": "sha512-cA3p4jTlaMeOtAKR/6AadanOPvKeg8VwgnHhOyfi0yClD0TZS/hi9xu12w4EzA/8NtHu0g6o4RDfcNjqN8l1AQ==", "dev": true }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true + "@parcel/watcher": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-1.12.1.tgz", + "integrity": "sha512-od+uCtCxC/KoNQAIE1vWx1YTyKYY+7CTrxBJPRh3cDWw/C0tCtlBMVlrbplscGoEpt6B27KhJDCv82PBxOERNA==", + "dev": true, + "requires": { + "@parcel/utils": "^1.11.0", + "chokidar": "^2.1.5" + } }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", - "dev": true + "@parcel/workers": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-1.11.0.tgz", + "integrity": "sha512-USSjRAAQYsZFlv43FUPdD+jEGML5/8oLF0rUzPQTtK4q9kvaXr49F5ZplyLz5lox78cLZ0TxN2bIDQ1xhOkulQ==", + "dev": true, + "requires": { + "@parcel/utils": "^1.11.0", + "physical-cpu-count": "^2.0.0" + } }, - "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==", + "@textlint/ast-node-types": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-4.2.1.tgz", + "integrity": "sha512-Pqg1LTJpF929Ovi/lCaPqlyz8yDwBFbQulC0jyQcbRAoTxYS4AZMc48Ug2yk0so5hISQXKrlAxyVBmBVl9EKGA==", "dev": true }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "@textlint/markdown-to-ast": { + "version": "6.0.9", + "resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-6.0.9.tgz", + "integrity": "sha512-hfAWBvTeUGh5t5kTn2U3uP3qOSM1BSrxzl1jF3nn0ywfZXpRBZr5yRjXnl4DzIYawCtZOshmRi/tI3/x4TE1jQ==", "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" + "@textlint/ast-node-types": "^4.0.3", + "debug": "^2.1.3", + "remark-frontmatter": "^1.2.0", + "remark-parse": "^5.0.0", + "structured-source": "^3.0.2", + "traverse": "^0.6.6", + "unified": "^6.1.6" } }, - "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=", + "@ts-morph/common": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.1.1.tgz", + "integrity": "sha512-8TLlC85CXgKNoTeqoXtrscPmKDbQCBfwZJ4hqli/QI4STa7sD2H6UqI9LSg8uBV5FYaD0QSdj/mtrCDrELvF+Q==", "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" + "@dsherret/to-absolute-glob": "^2.0.2", + "fs-extra": "^8.1.0", + "glob-parent": "^5.1.0", + "globby": "^10.0.1", + "is-negated-glob": "^1.0.0", + "multimatch": "^4.0.0", + "typescript": "~3.7.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=", + "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==", "dev": true, "requires": { - "is-descriptor": "^0.1.0" + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^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" - } + "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 + }, + "typescript": { + "version": "3.7.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.5.tgz", + "integrity": "sha512-/P5lkRXkWHNAbcJIiHPfRoKqyd7bsyCma1hZNUGfn20qm64T6ZBlrzprymeu918H+mB/0rIg2gGK/BXkhhYgBw==", + "dev": true } } }, - "expand-range": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "@types/babel__core": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.6.tgz", + "integrity": "sha512-tTnhWszAqvXnhW7m5jQU9PomXSiKXk2sFxpahXvI20SZKu9ylPi8WtIxueZ6ehDWikPT0jeFujMj3X4ZHuf3Tg==", "dev": true, "requires": { - "fill-range": "^2.1.0" + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" } }, - "expect": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-24.9.0.tgz", - "integrity": "sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q==", + "@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": { - "@jest/types": "^24.9.0", - "ansi-styles": "^3.2.0", - "jest-get-type": "^24.9.0", - "jest-matcher-utils": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-regex-util": "^24.9.0" + "@babel/types": "^7.0.0" } }, - "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=", + "@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": { - "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": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" } }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "@types/babel__traverse": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.9.tgz", + "integrity": "sha512-jEFQ8L1tuvPjOI8lnpaf73oCJe+aoxL6ygqSy6c8LcW98zaC+4mzWuQIRCEvKeCOu+lbqdXcg4Uqmm1S8AP1tw==", "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" - } - }, - "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 - } + "@babel/types": "^7.3.0" } }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "@types/benchmark": { + "version": "1.0.31", + "resolved": "https://registry.npmjs.org/@types/benchmark/-/benchmark-1.0.31.tgz", + "integrity": "sha1-LdNRTpM5bzYrpVUafJ/w2kBcHTg=", "dev": true }, - "fast-check": { - "version": "1.25.1", - "resolved": "https://registry.npmjs.org/fast-check/-/fast-check-1.25.1.tgz", - "integrity": "sha512-4lyIDY2YKpSiPXpceCQBTfDxLh/7/C3OHgvzToea3y1YAlv38Wz9mfIsu+MD4go0NX3ow/g98kEmlW00+CoH3w==", + "@types/glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", "dev": true, "requires": { - "pure-rand": "^2.0.0", - "tslib": "^2.0.0" - }, - "dependencies": { - "tslib": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.0.tgz", - "integrity": "sha512-lTqkx847PI7xEDYJntxZH89L2/aXInsyF2luSafe/+0fHOMjlBNXdH6th7f70qxLDhul7KZK0zC8V5ZIyHl0/g==", - "dev": true - } + "@types/minimatch": "*", + "@types/node": "*" } }, - "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "@types/istanbul-lib-coverage": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", + "integrity": "sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg==", "dev": true }, - "fast-glob": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.2.tgz", - "integrity": "sha512-UDV82o4uQyljznxwMxyVRJgZZt3O5wENYojjzbaGEGZgeOxkLFf+V4cnUD+krzb2F72E18RhamkMZ7AdeggF7A==", + "@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": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.0", - "merge2": "^1.3.0", - "micromatch": "^4.0.2", - "picomatch": "^2.2.1" - }, - "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" - } - }, - "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" - } - } + "@types/istanbul-lib-coverage": "*" } }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "@types/istanbul-reports": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz", + "integrity": "sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/jest": { + "version": "22.2.2", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-22.2.2.tgz", + "integrity": "sha1-r+Xay9ANZTJfUtoO0+duJZYprJ0=", "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=", + "@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 }, - "fastq": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.8.0.tgz", - "integrity": "sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } + "@types/node": { + "version": "12.6.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.6.8.tgz", + "integrity": "sha512-aX+gFgA5GHcDi89KG5keey2zf0WfZk/HAQotEamsK2kbey+8yGKcson0hbK8E+v0NArlCJQCqMP161YhV6ZXLg==", + "dev": true }, - "fault": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.2.tgz", - "integrity": "sha512-o2eo/X2syzzERAtN5LcGbiVQ0WwZSlN3qLtadwAz3X8Bu+XWD16dja/KMsjZLiQr+BLGPDnHGkc4yUJf1Xpkpw==", - "dev": true, - "requires": { - "format": "^0.2.2" - } + "@types/prettier": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-1.10.0.tgz", + "integrity": "sha1-Wr8ewKbpBP4kkMwgaPNqOOSmPEI=", + "dev": true }, - "fb-watchman": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", - "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "@types/q": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", + "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==", + "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": "13.0.8", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.8.tgz", + "integrity": "sha512-XAvHLwG7UQ+8M4caKIH0ZozIOYay5fQkAgyIXegXT9jPtdIGdhga+sUEdAr1CiG46aB+c64xQEYyEzlwWVTNzA==", "dev": true, "requires": { - "bser": "2.1.1" + "@types/yargs-parser": "*" } }, - "file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true, - "optional": true + "@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 }, - "fill-range": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", - "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", + "abab": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.3.tgz", + "integrity": "sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg==", + "dev": true + }, + "acorn": { + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", + "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", + "dev": true + }, + "acorn-globals": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", + "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", "dev": true, "requires": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^3.0.0", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + }, + "dependencies": { + "acorn": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", + "dev": true + } } }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "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 + }, + "ajv": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", "dev": true, "requires": { - "locate-path": "^3.0.0" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, - "for-in": { + "alphanum-sort": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", "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==", + "anchor-markdown-header": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/anchor-markdown-header/-/anchor-markdown-header-0.5.7.tgz", + "integrity": "sha1-BFBj125qH5zTJ6V6ASaqD97Dcac=", "dev": true, "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" + "emoji-regex": "~6.1.0" } }, - "format": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", - "integrity": "sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs=", - "dev": true - }, - "fp-ts": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-2.6.2.tgz", - "integrity": "sha512-RUm0iNcD7eMFZo6W1K10kqi0DyYX06lbbjyNgKwEWg1kPZw91ZXlkEx/9cII1x/jY4fHzh14+Hquk5sJnXBzQA==", + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", "dev": true }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "ansi-red": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz", + "integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=", "dev": true, "requires": { - "map-cache": "^0.2.2" + "ansi-wrap": "0.1.0" } }, - "fs-extra": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz", - "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==", + "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.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "color-convert": "^1.9.0" } }, - "fs.realpath": { + "ansi-to-html": { + "version": "0.6.14", + "resolved": "https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.6.14.tgz", + "integrity": "sha512-7ZslfB1+EnFSDO5Ju+ue5Y6It19DRnZXWv8jrGHgIlPna5Mh4jz7BV5jCbQneXNFurQcKoolaaAjHtgSBfOIuA==", + "dev": true, + "requires": { + "entities": "^1.1.2" + } + }, + "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 + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "arg": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz", + "integrity": "sha1-WDxRgZlBngA3q7dAYsN/hRnldfA=", + "dev": true + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "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 + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=", + "dev": true + }, + "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-differ": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", + "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", + "dev": true + }, + "array-equal": { "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/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", "dev": true }, - "fsevents": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.12.tgz", - "integrity": "sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q==", + "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 + }, + "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 + }, + "arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", "dev": true, - "optional": true, "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1", - "node-pre-gyp": "*" + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.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 + "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 + } + } + }, + "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": { + "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 }, - "are-we-there-yet": { - "version": "1.1.5", - "bundled": true, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", "dev": true, - "optional": true, "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" + "inherits": "2.0.1" } + } + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "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 + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "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==", + "dev": true + }, + "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 + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "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 + }, + "autolinker": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/autolinker/-/autolinker-0.28.1.tgz", + "integrity": "sha1-BlK0kYgYefB3XazgzcoyM5QqTkc=", + "dev": true, + "requires": { + "gulp-header": "^1.7.1" + } + }, + "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 + }, + "aws4": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", + "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==", + "dev": true + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, + "chalk": { + "version": "1.1.3", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, - "optional": true, "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, - "chownr": { - "version": "1.1.4", - "bundled": true, - "dev": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "babel-jest": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.9.0.tgz", + "integrity": "sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw==", + "dev": true, + "requires": { + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/babel__core": "^7.1.0", + "babel-plugin-istanbul": "^5.1.0", + "babel-preset-jest": "^24.9.0", + "chalk": "^2.4.2", + "slash": "^2.0.0" + }, + "dependencies": { + "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, - "optional": true + "requires": { + "color-convert": "^1.9.0" + } }, - "concat-map": { - "version": "0.0.1", - "bundled": 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==", "dev": true, - "optional": true + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true }, - "debug": { - "version": "3.2.6", - "bundled": true, + "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, - "optional": true, "requires": { - "ms": "^2.1.1" + "has-flag": "^3.0.0" } - }, - "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": { + } + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-istanbul": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz", + "integrity": "sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "find-up": "^3.0.0", + "istanbul-lib-instrument": "^3.3.0", + "test-exclude": "^5.2.3" + } + }, + "babel-plugin-jest-hoist": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz", + "integrity": "sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw==", + "dev": true, + "requires": { + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-preset-jest": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz", + "integrity": "sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg==", + "dev": true, + "requires": { + "@babel/plugin-syntax-object-rest-spread": "^7.0.0", + "babel-plugin-jest-hoist": "^24.9.0" + } + }, + "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": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + } + } + }, + "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": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + }, + "dependencies": { + "to-fast-properties": { "version": "1.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "fs-minipass": { - "version": "1.2.7", - "bundled": true, + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + } + } + }, + "babylon-walk": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/babylon-walk/-/babylon-walk-1.0.2.tgz", + "integrity": "sha1-OxWl3btIKni0zpwByLoYFwLZ1s4=", + "dev": true, + "requires": { + "babel-runtime": "^6.11.6", + "babel-types": "^6.15.0", + "lodash.clone": "^4.5.0" + } + }, + "bail": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.3.tgz", + "integrity": "sha512-1X8CnjFVQ+a+KW36uBNMTU5s8+v5FzeqrP7hTG5aTb4aPreSbZJlhwPon9VKMuEVgV++JM+SQrALY3kr7eswdg==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha1-e95c7RRbbVUakNuH+DxVi060io8=", + "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" + }, + "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, - "optional": true, "requires": { - "minipass": "^2.6.0" + "is-descriptor": "^1.0.0" } }, - "fs.realpath": { + "is-accessor-descriptor": { "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", "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" + "kind-of": "^6.0.0" } }, - "glob": { - "version": "7.1.6", - "bundled": true, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", "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" + "kind-of": "^6.0.0" } }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "iconv-lite": { - "version": "0.4.24", - "bundled": true, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", "dev": true, - "optional": true, "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, - "ignore-walk": { - "version": "3.0.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "bundled": true, - "dev": true, - "optional": true - }, - "ini": { - "version": "1.3.5", - "bundled": true, - "dev": true, - "optional": true + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, + "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 + } + } + }, + "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 + }, + "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": { + "tweetnacl": "^0.14.3" + } + }, + "benchmark": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/benchmark/-/benchmark-2.1.4.tgz", + "integrity": "sha1-CfPeMckWQl1JjMLuVloOvzwqVik=", + "dev": true, + "requires": { + "lodash": "^4.17.4", + "platform": "^1.3.3" + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bn.js": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.2.tgz", + "integrity": "sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA==", + "dev": true + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "boundary": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/boundary/-/boundary-1.0.1.tgz", + "integrity": "sha1-TWfcJgLAzBbdm85+v4fpSCkPWBI=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "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" + }, + "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, - "optional": true, "requires": { - "number-is-nan": "^1.0.0" + "is-extendable": "^0.1.0" } }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, - "optional": true, "requires": { - "brace-expansion": "^1.1.7" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" } }, - "minimist": { - "version": "1.2.5", - "bundled": true, - "dev": true, - "optional": true - }, - "minipass": { - "version": "2.9.0", - "bundled": 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, - "optional": true, "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" + "kind-of": "^3.0.2" } }, - "minizlib": { - "version": "1.3.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.9.0" - } + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "brfs": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/brfs/-/brfs-1.6.1.tgz", + "integrity": "sha512-OfZpABRQQf+Xsmju8XE9bDjs+uU4vLREGolP7bDgcpsI17QREyZ4Bl+2KLxxx1kCgA0fAIhKQBaBYh+PEcCqYQ==", + "dev": true, + "requires": { + "quote-stream": "^1.0.1", + "resolve": "^1.1.5", + "static-module": "^2.2.0", + "through2": "^2.0.0" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "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-resolve": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", + "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", + "dev": true, + "requires": { + "resolve": "1.1.7" + }, + "dependencies": { + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + } + } + }, + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha1-uqVZ7hTO1zRSIputcyZGfGH6vWA=", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "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" + } + }, + "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": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "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": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.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 + } + } + }, + "browserify-sign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.0.tgz", + "integrity": "sha512-hEZC1KEeYuoHRqhGhTy6gWrpJA3ZDjFWv0DE61643ZnOXAKJb3u7yWcrU0mMc9SwAqK1n7myPGndkp0dFG7NFA==", + "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.2", + "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 }, - "mkdirp": { - "version": "0.5.3", - "bundled": 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, - "optional": true, "requires": { - "minimist": "^1.2.5" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" } }, - "ms": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "needle": { - "version": "2.3.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "debug": "^3.2.6", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.14.0", - "bundled": true, + "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": { + "pako": "~1.0.5" + }, + "dependencies": { + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + } + } + }, + "browserslist": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.13.0.tgz", + "integrity": "sha512-MINatJ5ZNrLnQ6blGvePd/QOz9Xtu+Ne+x29iQSCHfkU5BugKVJwZKn/iiL8UbpIpa3JhviKjz+XxMo0m2caFQ==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001093", + "electron-to-chromium": "^1.3.488", + "escalade": "^3.0.1", + "node-releases": "^1.1.58" + } + }, + "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": { + "fast-json-stable-stringify": "2.x" + } + }, + "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": { + "node-int64": "^0.4.0" + } + }, + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-equal": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", + "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=", + "dev": true + }, + "buffer-from": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz", + "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==", + "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=", + "dev": true + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha1-Cn9GQWgxyLZi7jb+TnxZ129marI=", + "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" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", + "dev": true + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "dev": true, + "requires": { + "callsites": "^2.0.0" + }, + "dependencies": { + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + } + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "dev": true, + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001107", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001107.tgz", + "integrity": "sha512-86rCH+G8onCmdN4VZzJet5uPELII59cUzDphko3thQFgAQG1RNa+sVLDoALIhRYmflo5iSIzWY3vu1XTWtNMQQ==", + "dev": true + }, + "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": { + "rsvp": "^4.8.4" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chalk": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.2.0.tgz", + "integrity": "sha1-R3s78vm4/Vyp5Cl0fjf3JO568kA=", + "dev": true, + "requires": { + "ansi-styles": "^3.1.0", + "escape-string-regexp": "^1.0.5", + "supports-color": "^4.0.0" + } + }, + "character-entities": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.2.tgz", + "integrity": "sha512-sMoHX6/nBiy3KKfC78dnEalnpn0Az0oSNvqUWYTtYrhRI5iUIYsROU48G+E+kMFQzqXaJ8kHJZ85n7y6/PHgwQ==", + "dev": true + }, + "character-entities-legacy": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.2.tgz", + "integrity": "sha512-9NB2VbXtXYWdXzqrvAHykE/f0QJxzaKIpZ5QzNZrrgQ7Iyxr2vnfS8fCBNVW9nUEZE0lo57nxKRqnzY/dKrwlA==", + "dev": true + }, + "character-reference-invalid": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.2.tgz", + "integrity": "sha512-7I/xceXfKyUJmSAn/jw8ve/9DyOP7XxufNYLI9Px7CmsKgEUaZLUTax6nZxGQtaoiZCjpu6cHPj20xC/vqRReQ==", + "dev": true + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.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": { + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", "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.4.2" + "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" + } + } } }, - "nopt": { - "version": "4.0.3", - "bundled": 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 + } + } + }, + "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": { + "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": "sha1-+TNprouafOAv1B+q0MqDAzGQxGM=", + "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": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, - "optional": true, "requires": { - "abbrev": "1", - "osenv": "^0.1.4" + "is-descriptor": "^0.1.0" } }, - "npm-bundled": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npm-normalize-package-bin": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "npm-packlist": { - "version": "1.4.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "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", - "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, - "dev": true, - "optional": true, - "requires": { - "wrappy": "1" - } - }, - "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, - "dev": true, - "optional": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-spinners": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz", + "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==", + "dev": true + }, + "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" + }, + "dependencies": { + "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 }, - "rc": { - "version": "1.2.8", - "bundled": true, + "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, - "optional": true, "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" + "ansi-regex": "^4.1.0" } - }, - "readable-stream": { - "version": "2.3.7", - "bundled": true, + } + } + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "dev": true + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "coa": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "dev": true, + "requires": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + }, + "dependencies": { + "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, - "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" + "color-convert": "^1.9.0" } }, - "rimraf": { - "version": "2.7.1", - "bundled": 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==", "dev": true, - "optional": true, "requires": { - "glob": "^7.1.3" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, - "safe-buffer": { - "version": "5.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "bundled": true, - "dev": true, - "optional": true - }, - "semver": { - "version": "5.7.1", - "bundled": true, - "dev": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "optional": true + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true }, - "string-width": { - "version": "1.0.2", - "bundled": true, + "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, - "optional": true, "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "has-flag": "^3.0.0" } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, + } + } + }, + "code-block-writer": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-10.1.0.tgz", + "integrity": "sha512-RG9hpXtWFeUWhuUav1YuP/vGcyncW+t90yJLk9fNZs1De2OuHTHKAKThVCokt29PYq5RoJ0QSZaIZ+rvPO23hA==", + "dev": true + }, + "coffee-script": { + "version": "1.12.7", + "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.12.7.tgz", + "integrity": "sha512-fLeEhqwymYat/MpTPUjSKHVYYl0ec2mOyALEMLmzr5i1isuG+6jfI2j2d5oBO3VIzgUXgBVIcOT9uH1TFxBckw==", + "dev": true + }, + "collapse-white-space": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.4.tgz", + "integrity": "sha512-YfQ1tAUZm561vpYD+5eyWN8+UsceQbSrqqlc/6zDY2gtAE+uZLSdkkovhnGpmCThsvKBFakq4EdY/FF93E8XIw==", + "dev": true + }, + "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": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/color/-/color-3.1.2.tgz", + "integrity": "sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==", + "dev": true, + "requires": { + "color-convert": "^1.9.1", + "color-string": "^1.5.2" + } + }, + "color-convert": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "dev": true, + "requires": { + "color-name": "^1.1.1" + } + }, + "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-string": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", + "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", + "dev": true, + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "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": { + "delayed-stream": "~1.0.0" + } + }, + "command-exists": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", + "dev": true + }, + "commander": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", + "integrity": "sha1-9hmKqE5bg8RgVLlN3tv+1e6f8So=", + "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==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "concat-with-sourcemaps": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz", + "integrity": "sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==", + "dev": true, + "requires": { + "source-map": "^0.6.1" + } + }, + "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 + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "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" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "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 + }, + "core-js-compat": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.5.tgz", + "integrity": "sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng==", + "dev": true, + "requires": { + "browserslist": "^4.8.5", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true + } + } + }, + "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=", + "dev": true + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^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==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.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 + } + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://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": "https://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": "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" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "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" + } + }, + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", + "dev": true + }, + "css-declaration-sorter": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", + "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", + "dev": true, + "requires": { + "postcss": "^7.0.1", + "timsort": "^0.3.0" + } + }, + "css-modules-loader-core": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/css-modules-loader-core/-/css-modules-loader-core-1.1.0.tgz", + "integrity": "sha1-WQhmgpShvs0mGuCkziGwtVHyHRY=", + "dev": true, + "requires": { + "icss-replace-symbols": "1.1.0", + "postcss": "6.0.1", + "postcss-modules-extract-imports": "1.1.0", + "postcss-modules-local-by-default": "1.2.0", + "postcss-modules-scope": "1.1.0", + "postcss-modules-values": "1.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.1.tgz", + "integrity": "sha1-AA29H47vIXqjaLmiEsX8QLKo8/I=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", + "dev": true + }, + "css-selector-tokenizer": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz", + "integrity": "sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "fastparse": "^1.1.2" + } + }, + "css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "dev": true, + "requires": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + } + }, + "css-what": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.3.0.tgz", + "integrity": "sha512-pv9JPyatiPaQ6pf4OvD/dbfm0o5LviWmwxNWzblYf/1u9QZd0ihV+PMwy5jdQWQ3349kZmKEx9WXuSka2dM4cg==", + "dev": true + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "cssnano": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", + "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.7", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "cssnano-preset-default": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz", + "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==", + "dev": true, + "requires": { + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.1", + "postcss-colormin": "^4.0.3", + "postcss-convert-values": "^4.0.1", + "postcss-discard-comments": "^4.0.2", + "postcss-discard-duplicates": "^4.0.2", + "postcss-discard-empty": "^4.0.1", + "postcss-discard-overridden": "^4.0.1", + "postcss-merge-longhand": "^4.0.11", + "postcss-merge-rules": "^4.0.3", + "postcss-minify-font-values": "^4.0.2", + "postcss-minify-gradients": "^4.0.2", + "postcss-minify-params": "^4.0.2", + "postcss-minify-selectors": "^4.0.2", + "postcss-normalize-charset": "^4.0.1", + "postcss-normalize-display-values": "^4.0.2", + "postcss-normalize-positions": "^4.0.2", + "postcss-normalize-repeat-style": "^4.0.2", + "postcss-normalize-string": "^4.0.2", + "postcss-normalize-timing-functions": "^4.0.2", + "postcss-normalize-unicode": "^4.0.1", + "postcss-normalize-url": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.2", + "postcss-ordered-values": "^4.1.2", + "postcss-reduce-initial": "^4.0.3", + "postcss-reduce-transforms": "^4.0.2", + "postcss-svgo": "^4.0.2", + "postcss-unique-selectors": "^4.0.1" + } + }, + "cssnano-util-get-arguments": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", + "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", + "dev": true + }, + "cssnano-util-get-match": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", + "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", + "dev": true + }, + "cssnano-util-raw-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", + "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "cssnano-util-same-parent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", + "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", + "dev": true + }, + "csso": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.3.tgz", + "integrity": "sha512-NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ==", + "dev": true, + "requires": { + "css-tree": "1.0.0-alpha.39" + }, + "dependencies": { + "css-tree": { + "version": "1.0.0-alpha.39", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.39.tgz", + "integrity": "sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA==", + "dev": true, + "requires": { + "mdn-data": "2.0.6", + "source-map": "^0.6.1" + } + }, + "mdn-data": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.6.tgz", + "integrity": "sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA==", + "dev": true + } + } + }, + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, + "cssstyle": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz", + "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", + "dev": true, + "requires": { + "cssom": "0.3.x" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + }, + "dependencies": { + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + } + } + }, + "deasync": { + "version": "0.1.20", + "resolved": "https://registry.npmjs.org/deasync/-/deasync-0.1.20.tgz", + "integrity": "sha512-E1GI7jMI57hL30OX6Ht/hfQU8DO4AuB9m72WFm4c38GNbUD4Q03//XZaOIHZiY+H1xUaomcot5yk2q/qIZQkGQ==", + "dev": true, + "requires": { + "bindings": "^1.5.0", + "node-addon-api": "^1.7.1" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "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=", + "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-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 + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "requires": { + "clone": "^1.0.2" + }, + "dependencies": { + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "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": "sha1-1Flono1lS6d+AqgX+HENcCyxbp0=", + "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": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "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": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "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": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "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 + } + } + }, + "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 + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "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" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-newline": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", + "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", + "dev": true + }, + "diacritics-map": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/diacritics-map/-/diacritics-map-0.1.0.tgz", + "integrity": "sha1-bfwP+dAQAKLt8oZTccrDFulJd68=", + "dev": true + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha1-gAwN0eCov7yVg1wgKtIg/jF+WhI=", + "dev": true + }, + "diff-sequences": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz", + "integrity": "sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://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 + } + } + }, + "docs-ts": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/docs-ts/-/docs-ts-0.5.1.tgz", + "integrity": "sha512-zdBt4P6X7h577/Vku0YHAw/RR1+zpKklK+DOzed1HJltwAAciQG14qy18TzcMbVUFxrnT9OO4Y1K/lQLdX1i/Q==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "doctrine": "^3.0.0", + "fp-ts": "^2.6.2", + "fs-extra": "^7.0.1", + "glob": "^7.1.3", + "markdown-toc": "^1.2.0", + "rimraf": "^2.6.3", + "ts-morph": "^5.0.0", + "ts-node": "^8.0.2" + }, + "dependencies": { + "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": { + "color-convert": "^1.9.0" + } + }, + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "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" + } + } + } + }, + "doctoc": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/doctoc/-/doctoc-1.4.0.tgz", + "integrity": "sha512-8IAq3KdMkxhXCUF+xdZxdJxwuz8N2j25sMgqiu4U4JWluN9tRKMlAalxGASszQjlZaBprdD2YfXpL3VPWUD4eg==", + "dev": true, + "requires": { + "@textlint/markdown-to-ast": "~6.0.9", + "anchor-markdown-header": "^0.5.5", + "htmlparser2": "~3.9.2", + "minimist": "~1.2.0", + "underscore": "~1.8.3", + "update-section": "^0.3.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 + } + } + }, + "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" + } + }, + "dom-serializer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", + "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", + "dev": true, + "requires": { + "domelementtype": "^1.3.0", + "entities": "^1.1.1" + } + }, + "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 + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "dev": true, + "requires": { + "webidl-conversions": "^4.0.2" + } + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "dot-prop": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz", + "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==", + "dev": true, + "requires": { + "is-obj": "^2.0.0" + } + }, + "dotenv": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-5.0.1.tgz", + "integrity": "sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow==", + "dev": true + }, + "dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "dev": true + }, + "dtslint": { + "version": "github:gcanti/dtslint#de9181e0f1069b16ea15da87f74d88ed9bc221b7", + "from": "github:gcanti/dtslint", + "dev": true, + "requires": { + "fs-extra": "^6.0.1", + "parsimmon": "^1.12.0", + "strip-json-comments": "^2.0.1", + "tslint": "^5.12.0", + "typescript": "^4.0.0-dev.20200512" + }, + "dependencies": { + "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": { + "color-convert": "^1.9.0" + } + }, + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "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" + } + }, + "tslint": { + "version": "5.20.1", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.20.1.tgz", + "integrity": "sha512-EcMxhzCFt8k+/UP5r8waCf/lzmeSyVlqxqMEDQE7rWYiQky8KpIBz1JAoYXfROHrPZ1XXd43q8yQnULOLiBRQg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^4.0.1", + "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" + } + }, + "tsutils": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", + "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "typescript": { + "version": "4.0.0-dev.20200512", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.0-dev.20200512.tgz", + "integrity": "sha512-ZsVvhdxpQaA6KpjlT8wNNtweORzNsMtwgCo8viKWQmOvaU+BlMsd3MjD2LONQjFSiETCaw4uq0nNdyfKrCjjIw==", + "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" + } + }, + "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" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.510", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.510.tgz", + "integrity": "sha512-sLtGB0znXdmo6lM8hy5wTVo+fLqvIuO8hEpgc0DvPmFZqvBu/WB7AarEwhxVKjf3rVbws/rC8Xf+AlsOb36lJQ==", + "dev": true + }, + "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 + } + } + }, + "emoji-regex": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-6.1.3.tgz", + "integrity": "sha1-7HmjlpsC0uzytyJUJ5v5m8eoOTI=", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "envinfo": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.7.2.tgz", + "integrity": "sha512-k3Eh5bKuQnZjm49/L7H4cHzs2FlL5QjbTB3JrPxoTI8aJG7hVMe4uKyJxSYH4ahseby2waUwk5OaKX/nAsaYgg==", + "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.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", + "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", + "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" + } + }, + "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" + } + }, + "escalade": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.0.2.tgz", + "integrity": "sha512-gPYAU37hYCUhW5euPeR+Y74F7BL+IBsV93j5cvGriSaD1aG6MGsqsV1yamRdrWrb2j3aiZvb0X+UBOWpx3JWtQ==", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "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.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.1.tgz", + "integrity": "sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ==", + "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": { + "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 + } + } + }, + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "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.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "events": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz", + "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==", + "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" + } + }, + "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-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "^2.1.0" + } + }, + "expect": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-24.9.0.tgz", + "integrity": "sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "ansi-styles": "^3.2.0", + "jest-get-type": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-regex-util": "^24.9.0" + } + }, + "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": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=", + "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" + } + }, + "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 + } + } + }, + "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.2.4", + "resolved": "https://registry.npmjs.org/falafel/-/falafel-2.2.4.tgz", + "integrity": "sha512-0HXjo8XASWRmsS0X1EkhwEMZaD3Qvp7FfURwjLKjG1ghfRm/MGZl2r4cWUTv41KdNghTw4OUMmVtdGQp3+H+uQ==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "foreach": "^2.0.5", + "isarray": "^2.0.1", + "object-keys": "^1.0.6" + }, + "dependencies": { + "acorn": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.3.1.tgz", + "integrity": "sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA==", + "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 + } + } + }, + "fast-check": { + "version": "1.25.1", + "resolved": "https://registry.npmjs.org/fast-check/-/fast-check-1.25.1.tgz", + "integrity": "sha512-4lyIDY2YKpSiPXpceCQBTfDxLh/7/C3OHgvzToea3y1YAlv38Wz9mfIsu+MD4go0NX3ow/g98kEmlW00+CoH3w==", + "dev": true, + "requires": { + "pure-rand": "^2.0.0", + "tslib": "^2.0.0" + }, + "dependencies": { + "tslib": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.0.tgz", + "integrity": "sha512-lTqkx847PI7xEDYJntxZH89L2/aXInsyF2luSafe/+0fHOMjlBNXdH6th7f70qxLDhul7KZK0zC8V5ZIyHl0/g==", + "dev": true + } + } + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "dev": true + }, + "fast-glob": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.2.tgz", + "integrity": "sha512-UDV82o4uQyljznxwMxyVRJgZZt3O5wENYojjzbaGEGZgeOxkLFf+V4cnUD+krzb2F72E18RhamkMZ7AdeggF7A==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2", + "picomatch": "^2.2.1" + }, + "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" + } + }, + "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.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "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 + }, + "fastparse": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", + "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", + "dev": true + }, + "fastq": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.8.0.tgz", + "integrity": "sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "fault": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.2.tgz", + "integrity": "sha512-o2eo/X2syzzERAtN5LcGbiVQ0WwZSlN3qLtadwAz3X8Bu+XWD16dja/KMsjZLiQr+BLGPDnHGkc4yUJf1Xpkpw==", + "dev": true, + "requires": { + "format": "^0.2.2" + } + }, + "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" + } + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true + }, + "filesize": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", + "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==", + "dev": true + }, + "fill-range": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", + "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", + "dev": true, + "requires": { + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^3.0.0", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" + } + }, + "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" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "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" + } + }, + "format": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", + "integrity": "sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs=", + "dev": true + }, + "fp-ts": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-2.6.2.tgz", + "integrity": "sha512-RUm0iNcD7eMFZo6W1K10kqi0DyYX06lbbjyNgKwEWg1kPZw91ZXlkEx/9cII1x/jY4fHzh14+Hquk5sJnXBzQA==", + "dev": true + }, + "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" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "fs-extra": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz", + "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "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.12", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.12.tgz", + "integrity": "sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1", + "node-pre-gyp": "*" + }, + "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, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.4", + "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": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "3.2.6", + "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.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "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" + } + }, + "glob": { + "version": "7.1.6", + "bundled": true, + "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" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "bundled": true, + "dev": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true + }, + "minipass": { + "version": "2.9.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "mkdirp": { + "version": "0.5.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "ms": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.3.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.14.0", + "bundled": true, + "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.4.2" + } + }, + "nopt": { + "version": "4.0.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "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", + "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, + "dev": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "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, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "readable-stream": { + "version": "2.3.7", + "bundled": true, + "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" + } + }, + "rimraf": { + "version": "2.7.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.1", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.13", + "bundled": true, + "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" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "yallist": { + "version": "3.1.1", + "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 + }, + "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-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 + }, + "get-port": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=", + "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" + } + }, + "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.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" + } + }, + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", + "dev": true + }, + "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.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", + "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", + "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" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "grapheme-breaker": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/grapheme-breaker/-/grapheme-breaker-0.3.2.tgz", + "integrity": "sha1-W55reMODJFLSuiuxy4MPlidkEKw=", + "dev": true, + "requires": { + "brfs": "^1.2.0", + "unicode-trie": "^0.3.1" + } + }, + "gray-matter": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-2.1.1.tgz", + "integrity": "sha1-MELZrewqHe1qdwep7SOA+KF6Qw4=", + "dev": true, + "requires": { + "ansi-red": "^0.1.1", + "coffee-script": "^1.12.4", + "extend-shallow": "^2.0.1", + "js-yaml": "^3.8.1", + "toml": "^2.3.2" + }, + "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" + } + } + } + }, + "growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha1-8nNdwig2dPpnR4sQGBBZNVw2nl4=", + "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 + }, + "gulp-header": { + "version": "1.8.12", + "resolved": "https://registry.npmjs.org/gulp-header/-/gulp-header-1.8.12.tgz", + "integrity": "sha512-lh9HLdb53sC7XIZOYzTXM4lFuXElv3EVkSDhsd7DoJBj7hm+Ni7D3qYbb+Rr8DuM8nRanBvkVO9d7askreXGnQ==", + "dev": true, + "requires": { + "concat-with-sourcemaps": "*", + "lodash.template": "^4.4.0", + "through2": "^2.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.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, + "requires": { + "ajv": "^6.5.5", + "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-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "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 + }, + "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" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "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": { + "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" + } + } + } + }, + "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.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.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true + }, + "hex-color-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", + "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", + "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" + } + }, + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "dev": true + }, + "hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", + "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", + "dev": true + }, + "hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", + "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", + "dev": true + }, + "html-comment-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", + "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==", + "dev": true + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "dev": true, + "requires": { + "whatwg-encoding": "^1.0.1" + } + }, + "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 + }, + "html-tags": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-1.2.0.tgz", + "integrity": "sha1-x43mW1Zjqll5id0rerSSANfk25g=", + "dev": true + }, + "htmlnano": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/htmlnano/-/htmlnano-0.2.6.tgz", + "integrity": "sha512-HUY/99maFsWX2LRoGJpZ/8QRLCkyY0UU1El3wgLLFAHQlD3mCxCJJNcWJk5SBqaU49MLhIWVDW6cGBeuemvaPQ==", + "dev": true, + "requires": { + "cssnano": "^4.1.10", + "normalize-html-whitespace": "^1.0.0", + "posthtml": "^0.13.1", + "posthtml-render": "^1.2.2", + "purgecss": "^2.3.0", + "svgo": "^1.3.2", + "terser": "^4.8.0", + "uncss": "^0.17.3" + }, + "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 + }, + "posthtml": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.13.1.tgz", + "integrity": "sha512-8aJZ63WYL9YsAZVcrIn6U0dSYbna7hcTceZjnbH7dilg01t4t3JDx0UovbhGFscFJg/++qhECCjGEQuJAqD7dA==", + "dev": true, + "requires": { + "posthtml-parser": "^0.4.2", + "posthtml-render": "^1.2.2" + } + }, + "terser": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + } + } + } + }, + "htmlparser2": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", + "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", + "dev": true, + "requires": { + "domelementtype": "^1.3.0", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^2.0.2" + } + }, + "http-errors": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", + "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + } + } + }, + "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 + }, + "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" + } + }, + "icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", + "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.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "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 + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "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-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", + "dev": true + }, + "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" + } + }, + "is-alphabetical": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.2.tgz", + "integrity": "sha512-V0xN4BYezDHcBSKb1QHUFMlR4as/XEuCZBzMJUU4n7+Cbt33SmUnSol+pnXFvLxSHNq2CemUXNdaXV6Flg7+xg==", + "dev": true + }, + "is-alphanumerical": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.2.tgz", + "integrity": "sha512-pyfU/0kHdISIgslFfZN9nfY1Gk3MquQgUm1mJTjdkEPpkAKNWuBTSqFwewOpR7N351VkErCiyV71zX7mlQQqsg==", + "dev": true, + "requires": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + } + }, + "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": "sha1-76ouqdqg16suoTqXsritUf776L4=", + "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-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-color-stop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", + "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", + "dev": true, + "requires": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.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" + } + }, + "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-decimal": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.2.tgz", + "integrity": "sha512-TRzl7mOCchnhchN+f3ICUCzYvL9ul7R+TYOsZ8xia++knyZAJfv/uA1FvQXsAnYIl1T3B2X5E/J7Wb1QXiIBXg==", + "dev": true + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=", + "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": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0=", + "dev": true + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "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": "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-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-hexadecimal": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.2.tgz", + "integrity": "sha512-but/G3sapV3MNyqiDBLrOi4x8uCIw0RY3o/Vb5GT0sMFHrVV7731wFSVy41T5FO1og7G0gXLJh0MkgPRouko/A==", + "dev": true + }, + "is-html": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-html/-/is-html-1.1.0.tgz", + "integrity": "sha1-4E8cGNOUhRETlvmgJz6rUa8hhGQ=", + "dev": true, + "requires": { + "html-tags": "^1.0.0" + } + }, + "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": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "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": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "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-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-svg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", + "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", + "dev": true, + "requires": { + "html-comment-regex": "^1.1.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" + } + }, + "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-url": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", + "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", + "dev": true + }, + "is-whitespace-character": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.2.tgz", + "integrity": "sha512-SzM+T5GKUCtLhlHFKt2SDAX2RFzfS6joT91F2/WSi9LxgFdsnhfPK/UIA+JhRR2xuyLdrCys2PiFDrtn1fU5hQ==", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha1-0YUOuXkezRjmGCzhKjDzlmNLsZ0=", + "dev": true + }, + "is-word-character": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.2.tgz", + "integrity": "sha512-T3FlsX8rCHAH8e7RE7PfOPZVFQlcV3XRF9eOOBQ1uf70OxO7CjjSOjeImMPCADBdYWcStAbVbYvJ1m2D3tb+EA==", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "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": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "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": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", + "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", + "dev": true, + "requires": { + "@babel/generator": "^7.4.0", + "@babel/parser": "^7.4.3", + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.3", + "@babel/types": "^7.4.0", + "istanbul-lib-coverage": "^2.0.5", + "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 + } + } + }, + "istanbul-lib-report": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", + "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "supports-color": "^6.1.0" + }, + "dependencies": { + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", + "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "rimraf": "^2.6.3", + "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, - "optional": true, "requires": { - "safe-buffer": "~5.1.0" + "ms": "^2.1.1" } }, - "strip-ansi": { - "version": "3.0.1", - "bundled": 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 + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dev": true, - "optional": true, "requires": { - "ansi-regex": "^2.0.0" + "glob": "^7.1.3" } + } + } + }, + "istanbul-reports": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.7.tgz", + "integrity": "sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0" + } + }, + "jest": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-24.8.0.tgz", + "integrity": "sha512-o0HM90RKFRNWmAWvlyV8i5jGZ97pFwkeVoGvPW1EtLTgJc2+jcuqcbbqcSZLE/3f2S5pt0y2ZBETuhpWNl1Reg==", + "dev": true, + "requires": { + "import-local": "^2.0.0", + "jest-cli": "^24.8.0" + }, + "dependencies": { + "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 }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true }, - "tar": { - "version": "4.4.13", - "bundled": true, + "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 + }, + "jest-cli": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.9.0.tgz", + "integrity": "sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg==", "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" + "@jest/core": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "import-local": "^2.0.0", + "is-ci": "^2.0.0", + "jest-config": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "prompts": "^2.0.1", + "realpath-native": "^1.1.0", + "yargs": "^13.3.0" + }, + "dependencies": { + "@jest/core": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.9.0.tgz", + "integrity": "sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/reporters": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "graceful-fs": "^4.1.15", + "jest-changed-files": "^24.9.0", + "jest-config": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-resolve-dependencies": "^24.9.0", + "jest-runner": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "jest-watcher": "^24.9.0", + "micromatch": "^3.1.10", + "p-each-series": "^1.0.0", + "realpath-native": "^1.1.0", + "rimraf": "^2.5.4", + "slash": "^2.0.0", + "strip-ansi": "^5.0.0" + } + }, + "@jest/test-result": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz", + "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==", + "dev": true, + "requires": { + "@jest/console": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/istanbul-lib-coverage": "^2.0.0" + } + }, + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "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" + } + }, + "jest-config": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.9.0.tgz", + "integrity": "sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^24.9.0", + "@jest/types": "^24.9.0", + "babel-jest": "^24.9.0", + "chalk": "^2.0.1", + "glob": "^7.1.1", + "jest-environment-jsdom": "^24.9.0", + "jest-environment-node": "^24.9.0", + "jest-get-type": "^24.9.0", + "jest-jasmine2": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "micromatch": "^3.1.10", + "pretty-format": "^24.9.0", + "realpath-native": "^1.1.0" + } + }, + "jest-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz", + "integrity": "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==", + "dev": true, + "requires": { + "@jest/console": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/source-map": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "callsites": "^3.0.0", + "chalk": "^2.0.1", + "graceful-fs": "^4.1.15", + "is-ci": "^2.0.0", + "mkdirp": "^0.5.1", + "slash": "^2.0.0", + "source-map": "^0.6.0" + } + }, + "jest-validate": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.9.0.tgz", + "integrity": "sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "camelcase": "^5.3.1", + "chalk": "^2.0.1", + "jest-get-type": "^24.9.0", + "leven": "^3.1.0", + "pretty-format": "^24.9.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" + } + }, + "realpath-native": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz", + "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==", + "dev": true, + "requires": { + "util.promisify": "^1.0.0" + } + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "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.2" + } + } } }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true }, - "wide-align": { - "version": "1.1.3", - "bundled": true, + "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, - "optional": true, "requires": { - "string-width": "^1.0.2 || 2" + "ansi-regex": "^4.1.0" } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "yallist": { - "version": "3.1.1", - "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 + "jest-changed-files": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.9.0.tgz", + "integrity": "sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "execa": "^1.0.0", + "throat": "^4.0.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 + "jest-config": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.9.0.tgz", + "integrity": "sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^24.9.0", + "@jest/types": "^24.9.0", + "babel-jest": "^24.9.0", + "chalk": "^2.0.1", + "glob": "^7.1.1", + "jest-environment-jsdom": "^24.9.0", + "jest-environment-node": "^24.9.0", + "jest-get-type": "^24.9.0", + "jest-jasmine2": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "micromatch": "^3.1.10", + "pretty-format": "^24.9.0", + "realpath-native": "^1.1.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 + "jest-diff": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz", + "integrity": "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "diff-sequences": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + } }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "jest-docblock": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-24.9.0.tgz", + "integrity": "sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA==", "dev": true, "requires": { - "pump": "^3.0.0" + "detect-newline": "^2.1.0" } }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "jest-each": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.9.0.tgz", + "integrity": "sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "jest-get-type": "^24.9.0", + "jest-util": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "jest-environment-jsdom": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz", + "integrity": "sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA==", + "dev": true, + "requires": { + "@jest/environment": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-util": "^24.9.0", + "jsdom": "^11.5.1" + } + }, + "jest-environment-node": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.9.0.tgz", + "integrity": "sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA==", + "dev": true, + "requires": { + "@jest/environment": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-util": "^24.9.0" + } + }, + "jest-get-type": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", + "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==", "dev": true }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "jest-haste-map": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz", + "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==", "dev": true, "requires": { - "assert-plus": "^1.0.0" + "@jest/types": "^24.9.0", + "anymatch": "^2.0.0", + "fb-watchman": "^2.0.0", + "fsevents": "^1.2.7", + "graceful-fs": "^4.1.15", + "invariant": "^2.2.4", + "jest-serializer": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.9.0", + "micromatch": "^3.1.10", + "sane": "^4.0.3", + "walker": "^1.0.7" + }, + "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 + } } }, - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "jest-jasmine2": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz", + "integrity": "sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw==", "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" + "@babel/traverse": "^7.1.0", + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "co": "^4.6.0", + "expect": "^24.9.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "pretty-format": "^24.9.0", + "throat": "^4.0.0" + } + }, + "jest-leak-detector": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz", + "integrity": "sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA==", + "dev": true, + "requires": { + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "jest-matcher-utils": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz", + "integrity": "sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "jest-diff": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "jest-message-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz", + "integrity": "sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/stack-utils": "^1.0.1", + "chalk": "^2.0.1", + "micromatch": "^3.1.10", + "slash": "^2.0.0", + "stack-utils": "^1.0.1" + }, + "dependencies": { + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + } } }, - "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==", + "jest-mock": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz", + "integrity": "sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==", "dev": true, "requires": { - "is-glob": "^4.0.1" + "@jest/types": "^24.9.0" } }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "jest-pnp-resolver": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz", + "integrity": "sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ==", "dev": true }, - "globby": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", - "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", + "jest-regex-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.9.0.tgz", + "integrity": "sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA==", + "dev": true + }, + "jest-resolve": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.9.0.tgz", + "integrity": "sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ==", "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" + "@jest/types": "^24.9.0", + "browser-resolve": "^1.11.3", + "chalk": "^2.0.1", + "jest-pnp-resolver": "^1.2.1", + "realpath-native": "^1.1.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 + "jest-resolve-dependencies": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz", + "integrity": "sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-snapshot": "^24.9.0" + } }, - "gray-matter": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-2.1.1.tgz", - "integrity": "sha1-MELZrewqHe1qdwep7SOA+KF6Qw4=", + "jest-runner": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.9.0.tgz", + "integrity": "sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg==", "dev": true, "requires": { - "ansi-red": "^0.1.1", - "coffee-script": "^1.12.4", - "extend-shallow": "^2.0.1", - "js-yaml": "^3.8.1", - "toml": "^2.3.2" + "@jest/console": "^24.7.1", + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.4.2", + "exit": "^0.1.2", + "graceful-fs": "^4.1.15", + "jest-config": "^24.9.0", + "jest-docblock": "^24.3.0", + "jest-haste-map": "^24.9.0", + "jest-jasmine2": "^24.9.0", + "jest-leak-detector": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-resolve": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.6.0", + "source-map-support": "^0.5.6", + "throat": "^4.0.0" }, "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "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": { - "is-extendable": "^0.1.0" + "color-convert": "^1.9.0" + } + }, + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "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 + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "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" } } } }, - "growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha1-8nNdwig2dPpnR4sQGBBZNVw2nl4=", - "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 - }, - "gulp-header": { - "version": "1.8.12", - "resolved": "https://registry.npmjs.org/gulp-header/-/gulp-header-1.8.12.tgz", - "integrity": "sha512-lh9HLdb53sC7XIZOYzTXM4lFuXElv3EVkSDhsd7DoJBj7hm+Ni7D3qYbb+Rr8DuM8nRanBvkVO9d7askreXGnQ==", + "jest-runtime": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.9.0.tgz", + "integrity": "sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw==", "dev": true, "requires": { - "concat-with-sourcemaps": "*", - "lodash.template": "^4.4.0", - "through2": "^2.0.0" + "@jest/console": "^24.7.1", + "@jest/environment": "^24.9.0", + "@jest/source-map": "^24.3.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/yargs": "^13.0.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.1.15", + "jest-config": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "strip-bom": "^3.0.0", + "yargs": "^13.3.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 + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + } } }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "jest-serializer": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz", + "integrity": "sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==", "dev": true }, - "har-validator": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", - "dev": true, - "requires": { - "ajv": "^6.5.5", - "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==", + "jest-snapshot": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.9.0.tgz", + "integrity": "sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew==", "dev": true, "requires": { - "function-bind": "^1.1.1" + "@babel/types": "^7.0.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "expect": "^24.9.0", + "jest-diff": "^24.9.0", + "jest-get-type": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-resolve": "^24.9.0", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^24.9.0", + "semver": "^6.2.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 + } } }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "jest-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz", + "integrity": "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "@jest/console": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/source-map": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "callsites": "^3.0.0", + "chalk": "^2.0.1", + "graceful-fs": "^4.1.15", + "is-ci": "^2.0.0", + "mkdirp": "^0.5.1", + "slash": "^2.0.0", + "source-map": "^0.6.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 + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + } } }, - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", - "dev": true - }, - "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 - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "jest-validate": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.9.0.tgz", + "integrity": "sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==", "dev": true, "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" + "@jest/types": "^24.9.0", + "camelcase": "^5.3.1", + "chalk": "^2.0.1", + "jest-get-type": "^24.9.0", + "leven": "^3.1.0", + "pretty-format": "^24.9.0" }, "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true } } }, - "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=", + "jest-watcher": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.9.0.tgz", + "integrity": "sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw==", "dev": true, "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/yargs": "^13.0.0", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "jest-util": "^24.9.0", + "string-length": "^2.0.0" + } + }, + "jest-worker": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", + "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "dev": true, + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^6.1.0" }, "dependencies": { - "is-number": { + "has-flag": { "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" - } - } - } + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "has-flag": "^3.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 - }, - "hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", "dev": true }, - "html-encoding-sniffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", - "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "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": { - "whatwg-encoding": "^1.0.1" + "argparse": "^1.0.7", + "esprima": "^4.0.0" } }, - "html-escaper": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.0.tgz", - "integrity": "sha512-a4u9BeERWGu/S8JiWEAQcdrg9v4QArtP9keViQjGMdff20fBdd8waotXaNmODqBe6uZ3Nafi7K/ho4gCQHV3Ig==", + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", "dev": true }, - "htmlparser2": { - "version": "3.9.2", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", - "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", + "jsdom": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", + "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", "dev": true, "requires": { - "domelementtype": "^1.3.0", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^2.0.2" + "abab": "^2.0.0", + "acorn": "^5.5.3", + "acorn-globals": "^4.1.0", + "array-equal": "^1.0.0", + "cssom": ">= 0.3.2 < 0.4.0", + "cssstyle": "^1.0.0", + "data-urls": "^1.0.0", + "domexception": "^1.0.1", + "escodegen": "^1.9.1", + "html-encoding-sniffer": "^1.0.2", + "left-pad": "^1.3.0", + "nwsapi": "^2.0.7", + "parse5": "4.0.0", + "pn": "^1.1.0", + "request": "^2.87.0", + "request-promise-native": "^1.0.5", + "sax": "^1.2.4", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.3.4", + "w3c-hr-time": "^1.0.1", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.3", + "whatwg-mimetype": "^2.1.0", + "whatwg-url": "^6.4.1", + "ws": "^5.2.0", + "xml-name-validator": "^3.0.0" } }, - "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" - } + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "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" - } + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true }, - "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", "dev": true }, - "import-local": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", - "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", - "dev": true, - "requires": { - "pkg-dir": "^3.0.0", - "resolve-cwd": "^2.0.0" - } + "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 }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "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 }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "json5": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", + "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", "dev": true, "requires": { - "once": "^1.3.0", - "wrappy": "1" + "minimist": "^1.2.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 + } } }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", "dev": true, "requires": { - "loose-envify": "^1.0.0" + "graceful-fs": "^4.1.6" } }, - "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==", + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", "dev": true, "requires": { - "is-relative": "^1.0.0", - "is-windows": "^1.0.1" + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" } }, - "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=", + "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": { - "kind-of": "^3.0.2" + "is-buffer": "^1.1.5" } }, - "is-alphabetical": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.2.tgz", - "integrity": "sha512-V0xN4BYezDHcBSKb1QHUFMlR4as/XEuCZBzMJUU4n7+Cbt33SmUnSol+pnXFvLxSHNq2CemUXNdaXV6Flg7+xg==", + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "dev": true }, - "is-alphanumerical": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.2.tgz", - "integrity": "sha512-pyfU/0kHdISIgslFfZN9nfY1Gk3MquQgUm1mJTjdkEPpkAKNWuBTSqFwewOpR7N351VkErCiyV71zX7mlQQqsg==", + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", "dev": true, "requires": { - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0" + "set-getter": "^0.1.0" } }, - "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-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=", + "left-pad": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", + "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==", "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==", + "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 }, - "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "levenary": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", + "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", "dev": true, "requires": { - "ci-info": "^2.0.0" + "leven": "^3.1.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=", + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" } }, - "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-decimal": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.2.tgz", - "integrity": "sha512-TRzl7mOCchnhchN+f3ICUCzYvL9ul7R+TYOsZ8xia++knyZAJfv/uA1FvQXsAnYIl1T3B2X5E/J7Wb1QXiIBXg==", - "dev": true - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=", + "list-item": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/list-item/-/list-item-1.1.1.tgz", + "integrity": "sha1-DGXQDih8tmPMs8s4Sad+iewmilY=", "dev": true, "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "expand-range": "^1.8.1", + "extend-shallow": "^2.0.1", + "is-number": "^2.1.0", + "repeat-string": "^1.5.2" }, "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0=", - "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" + } } } }, - "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 + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } }, - "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 + "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" + } }, - "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=", + "lodash": { + "version": "4.17.14", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.14.tgz", + "integrity": "sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw==", "dev": true }, - "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==", + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", "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" - } + "lodash.clone": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz", + "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y=", + "dev": true }, - "is-hexadecimal": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.2.tgz", - "integrity": "sha512-but/G3sapV3MNyqiDBLrOi4x8uCIw0RY3o/Vb5GT0sMFHrVV7731wFSVy41T5FO1og7G0gXLJh0MkgPRouko/A==", + "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 }, - "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=", + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", "dev": true }, - "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "lodash.template": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", + "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", "dev": true, "requires": { - "kind-of": "^3.0.2" + "lodash._reinterpolate": "^3.0.0", + "lodash.templatesettings": "^4.0.0" } }, - "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": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=", + "lodash.templatesettings": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", + "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", "dev": true, "requires": { - "isobject": "^3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } + "lodash._reinterpolate": "^3.0.0" } }, - "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "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==", "dev": true, "requires": { - "has": "^1.0.3" + "chalk": "^2.0.1" } }, - "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==", + "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": { - "is-unc-path": "^1.0.0" + "js-tokens": "^3.0.0 || ^4.0.0" } }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "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==", + "magic-string": { + "version": "0.22.5", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz", + "integrity": "sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w==", "dev": true, "requires": { - "has-symbols": "^1.0.1" + "vlq": "^0.2.2" } }, - "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==", + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "dev": true, "requires": { - "unc-path-regex": "^0.1.2" + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } } }, - "is-whitespace-character": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.2.tgz", - "integrity": "sha512-SzM+T5GKUCtLhlHFKt2SDAX2RFzfS6joT91F2/WSi9LxgFdsnhfPK/UIA+JhRR2xuyLdrCys2PiFDrtn1fU5hQ==", - "dev": true - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha1-0YUOuXkezRjmGCzhKjDzlmNLsZ0=", + "make-error": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz", + "integrity": "sha1-7+ToH22yjK3WBccPKcgxtY73dsg=", "dev": true }, - "is-word-character": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.2.tgz", - "integrity": "sha512-T3FlsX8rCHAH8e7RE7PfOPZVFQlcV3XRF9eOOBQ1uf70OxO7CjjSOjeImMPCADBdYWcStAbVbYvJ1m2D3tb+EA==", - "dev": true + "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" + } }, - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", "dev": true }, - "isarray": { + "map-visit": { "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": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", "dev": true, "requires": { - "isarray": "1.0.0" + "object-visit": "^1.0.0" } }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "markdown-escapes": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.2.tgz", + "integrity": "sha512-lbRZ2mE3Q9RtLjxZBZ9+IMl68DKIXaVAhwvwn9pmjnPLS0h/6kyBMgNhqi1xFJ/2yv6cSyv0jbiZavZv93JkkA==", "dev": true }, - "istanbul-lib-coverage": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", - "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "markdown-link": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/markdown-link/-/markdown-link-0.1.1.tgz", + "integrity": "sha1-MsXGUZmmRXMWMi0eQinRNAfIx88=", "dev": true }, - "istanbul-lib-instrument": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", - "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", + "markdown-toc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/markdown-toc/-/markdown-toc-1.2.0.tgz", + "integrity": "sha512-eOsq7EGd3asV0oBfmyqngeEIhrbkc7XVP63OwcJBIhH2EpG2PzFcbZdhy1jutXSlRBBVMNXHvMtSr5LAxSUvUg==", "dev": true, "requires": { - "@babel/generator": "^7.4.0", - "@babel/parser": "^7.4.3", - "@babel/template": "^7.4.0", - "@babel/traverse": "^7.4.3", - "@babel/types": "^7.4.0", - "istanbul-lib-coverage": "^2.0.5", - "semver": "^6.0.0" + "concat-stream": "^1.5.2", + "diacritics-map": "^0.1.0", + "gray-matter": "^2.1.0", + "lazy-cache": "^2.0.2", + "list-item": "^1.1.1", + "markdown-link": "^0.1.1", + "minimist": "^1.2.0", + "mixin-deep": "^1.1.3", + "object.pick": "^1.2.0", + "remarkable": "^1.7.1", + "repeat-string": "^1.6.1", + "strip-color": "^0.1.0" }, "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true } } }, - "istanbul-lib-report": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", - "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", + "math-random": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz", + "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==", + "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": { - "istanbul-lib-coverage": "^2.0.5", - "make-dir": "^2.1.0", - "supports-color": "^6.1.0" - }, - "dependencies": { - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" } }, - "istanbul-lib-source-maps": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", - "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", + "mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", + "dev": true + }, + "merge-source-map": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz", + "integrity": "sha1-pd5GU42uhNQRTMXqArR3KmNGcB8=", "dev": true, "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^2.0.5", - "make-dir": "^2.1.0", - "rimraf": "^2.6.3", - "source-map": "^0.6.1" + "source-map": "^0.5.6" }, "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==", + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } } } }, - "istanbul-reports": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.7.tgz", - "integrity": "sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==", + "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.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "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": { - "html-escaper": "^2.0.0" + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "dependencies": { + "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 + } } }, - "jest": { - "version": "24.8.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-24.8.0.tgz", - "integrity": "sha512-o0HM90RKFRNWmAWvlyV8i5jGZ97pFwkeVoGvPW1EtLTgJc2+jcuqcbbqcSZLE/3f2S5pt0y2ZBETuhpWNl1Reg==", + "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": { - "import-local": "^2.0.0", - "jest-cli": "^24.8.0" + "bn.js": "^4.0.0", + "brorand": "^1.0.1" }, "dependencies": { - "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 - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "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 - }, - "jest-cli": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.9.0.tgz", - "integrity": "sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg==", - "dev": true, - "requires": { - "@jest/core": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "import-local": "^2.0.0", - "is-ci": "^2.0.0", - "jest-config": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "prompts": "^2.0.1", - "realpath-native": "^1.1.0", - "yargs": "^13.3.0" - }, - "dependencies": { - "@jest/core": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.9.0.tgz", - "integrity": "sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A==", - "dev": true, - "requires": { - "@jest/console": "^24.7.1", - "@jest/reporters": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "graceful-fs": "^4.1.15", - "jest-changed-files": "^24.9.0", - "jest-config": "^24.9.0", - "jest-haste-map": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-resolve": "^24.9.0", - "jest-resolve-dependencies": "^24.9.0", - "jest-runner": "^24.9.0", - "jest-runtime": "^24.9.0", - "jest-snapshot": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "jest-watcher": "^24.9.0", - "micromatch": "^3.1.10", - "p-each-series": "^1.0.0", - "realpath-native": "^1.1.0", - "rimraf": "^2.5.4", - "slash": "^2.0.0", - "strip-ansi": "^5.0.0" - } - }, - "@jest/test-result": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz", - "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==", - "dev": true, - "requires": { - "@jest/console": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/istanbul-lib-coverage": "^2.0.0" - } - }, - "@jest/types": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", - "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - } - }, - "exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", - "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" - } - }, - "jest-config": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.9.0.tgz", - "integrity": "sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ==", - "dev": true, - "requires": { - "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^24.9.0", - "@jest/types": "^24.9.0", - "babel-jest": "^24.9.0", - "chalk": "^2.0.1", - "glob": "^7.1.1", - "jest-environment-jsdom": "^24.9.0", - "jest-environment-node": "^24.9.0", - "jest-get-type": "^24.9.0", - "jest-jasmine2": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-resolve": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "micromatch": "^3.1.10", - "pretty-format": "^24.9.0", - "realpath-native": "^1.1.0" - } - }, - "jest-util": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz", - "integrity": "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==", - "dev": true, - "requires": { - "@jest/console": "^24.9.0", - "@jest/fake-timers": "^24.9.0", - "@jest/source-map": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "callsites": "^3.0.0", - "chalk": "^2.0.1", - "graceful-fs": "^4.1.15", - "is-ci": "^2.0.0", - "mkdirp": "^0.5.1", - "slash": "^2.0.0", - "source-map": "^0.6.0" - } - }, - "jest-validate": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.9.0.tgz", - "integrity": "sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==", - "dev": true, - "requires": { - "@jest/types": "^24.9.0", - "camelcase": "^5.3.1", - "chalk": "^2.0.1", - "jest-get-type": "^24.9.0", - "leven": "^3.1.0", - "pretty-format": "^24.9.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" - } - }, - "realpath-native": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz", - "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==", - "dev": true, - "requires": { - "util.promisify": "^1.0.0" - } - }, - "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "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.2" - } - } - } - }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "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 - }, - "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" - } } } }, - "jest-changed-files": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.9.0.tgz", - "integrity": "sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg==", + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "mime-db": { + "version": "1.43.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz", + "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==", + "dev": true + }, + "mime-types": { + "version": "2.1.26", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz", + "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==", "dev": true, "requires": { - "@jest/types": "^24.9.0", - "execa": "^1.0.0", - "throat": "^4.0.0" + "mime-db": "1.43.0" } }, - "jest-config": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.9.0.tgz", - "integrity": "sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ==", + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "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": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", "dev": true, "requires": { - "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^24.9.0", - "@jest/types": "^24.9.0", - "babel-jest": "^24.9.0", - "chalk": "^2.0.1", - "glob": "^7.1.1", - "jest-environment-jsdom": "^24.9.0", - "jest-environment-node": "^24.9.0", - "jest-get-type": "^24.9.0", - "jest-jasmine2": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-resolve": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "micromatch": "^3.1.10", - "pretty-format": "^24.9.0", - "realpath-native": "^1.1.0" + "brace-expansion": "^1.1.7" } }, - "jest-diff": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz", - "integrity": "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==", + "minimist": { + "version": "0.0.8", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "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==", "dev": true, "requires": { - "chalk": "^2.0.1", - "diff-sequences": "^24.9.0", - "jest-get-type": "^24.9.0", - "pretty-format": "^24.9.0" + "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" + } + } } }, - "jest-docblock": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-24.9.0.tgz", - "integrity": "sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA==", + "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": { - "detect-newline": "^2.1.0" + "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 + } } }, - "jest-each": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.9.0.tgz", - "integrity": "sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog==", + "mocha": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", + "integrity": "sha1-bYrlCPWRZ/lA8rWzxKYSrlDJCuY=", "dev": true, "requires": { - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "jest-get-type": "^24.9.0", - "jest-util": "^24.9.0", - "pretty-format": "^24.9.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", + "mkdirp": "0.5.1", + "supports-color": "5.4.0" + }, + "dependencies": { + "commander": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha1-30boZ9D8Kuxmo0ZitAapzK//Ww8=", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", + "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": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "supports-color": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha1-HGszdALCE3YF7+GfEP7DkPb6q1Q=", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, - "jest-environment-jsdom": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz", - "integrity": "sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA==", + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "multimatch": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-4.0.0.tgz", + "integrity": "sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ==", "dev": true, "requires": { - "@jest/environment": "^24.9.0", - "@jest/fake-timers": "^24.9.0", - "@jest/types": "^24.9.0", - "jest-mock": "^24.9.0", - "jest-util": "^24.9.0", - "jsdom": "^11.5.1" + "@types/minimatch": "^3.0.3", + "array-differ": "^3.0.0", + "array-union": "^2.1.0", + "arrify": "^2.0.1", + "minimatch": "^3.0.4" } }, - "jest-environment-node": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.9.0.tgz", - "integrity": "sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA==", + "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": { - "@jest/environment": "^24.9.0", - "@jest/fake-timers": "^24.9.0", - "@jest/types": "^24.9.0", - "jest-mock": "^24.9.0", - "jest-util": "^24.9.0" + "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" + }, + "dependencies": { + "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 + } } }, - "jest-get-type": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", - "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==", + "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 + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node-addon-api": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", + "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==", "dev": true }, - "jest-haste-map": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz", - "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==", - "dev": true, - "requires": { - "@jest/types": "^24.9.0", - "anymatch": "^2.0.0", - "fb-watchman": "^2.0.0", - "fsevents": "^1.2.7", - "graceful-fs": "^4.1.15", - "invariant": "^2.2.4", - "jest-serializer": "^24.9.0", - "jest-util": "^24.9.0", - "jest-worker": "^24.9.0", - "micromatch": "^3.1.10", - "sane": "^4.0.3", - "walker": "^1.0.7" + "node-forge": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.6.tgz", + "integrity": "sha512-sol30LUpz1jQFBjOKwbjxijiE3b6pjd74YwfD0fJOKPjF+fONKb2Yg8rYgS6+bK6VDl+/wfr4IYpC7jDzLUIfw==", + "dev": true + }, + "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-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" }, "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==", + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", "dev": true } } }, - "jest-jasmine2": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz", - "integrity": "sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw==", - "dev": true, - "requires": { - "@babel/traverse": "^7.1.0", - "@jest/environment": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "co": "^4.6.0", - "expect": "^24.9.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^24.9.0", - "jest-matcher-utils": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-runtime": "^24.9.0", - "jest-snapshot": "^24.9.0", - "jest-util": "^24.9.0", - "pretty-format": "^24.9.0", - "throat": "^4.0.0" - } + "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 }, - "jest-leak-detector": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz", - "integrity": "sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA==", + "node-notifier": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.3.tgz", + "integrity": "sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q==", "dev": true, "requires": { - "jest-get-type": "^24.9.0", - "pretty-format": "^24.9.0" + "growly": "^1.3.0", + "is-wsl": "^1.1.0", + "semver": "^5.5.0", + "shellwords": "^0.1.1", + "which": "^1.3.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } } }, - "jest-matcher-utils": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz", - "integrity": "sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA==", - "dev": true, - "requires": { - "chalk": "^2.0.1", - "jest-diff": "^24.9.0", - "jest-get-type": "^24.9.0", - "pretty-format": "^24.9.0" - } + "node-releases": { + "version": "1.1.60", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.60.tgz", + "integrity": "sha512-gsO4vjEdQaTusZAEebUWp2a5d7dF5DYoIpDG7WySnk7BuZDW+GPpHXoXXuYawRBr/9t5q54tirPz79kFIWg4dA==", + "dev": true }, - "jest-message-util": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz", - "integrity": "sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==", + "normalize-html-whitespace": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/normalize-html-whitespace/-/normalize-html-whitespace-1.0.0.tgz", + "integrity": "sha512-9ui7CGtOOlehQu0t/OhhlmDyc71mKVlv+4vF+me4iZLPrNtRL2xoquEdfZxasC/bdQi/Hr3iTrpyRKIG+ocabA==", + "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": { - "@babel/code-frame": "^7.0.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/stack-utils": "^1.0.1", - "chalk": "^2.0.1", - "micromatch": "^3.1.10", - "slash": "^2.0.0", - "stack-utils": "^1.0.1" + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" }, "dependencies": { - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", "dev": true + }, + "resolve": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", + "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } } } }, - "jest-mock": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz", - "integrity": "sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==", + "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": { - "@jest/types": "^24.9.0" + "remove-trailing-separator": "^1.0.1" } }, - "jest-pnp-resolver": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz", - "integrity": "sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ==", - "dev": true - }, - "jest-regex-util": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.9.0.tgz", - "integrity": "sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA==", + "normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", "dev": true }, - "jest-resolve": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.9.0.tgz", - "integrity": "sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ==", + "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": { - "@jest/types": "^24.9.0", - "browser-resolve": "^1.11.3", - "chalk": "^2.0.1", - "jest-pnp-resolver": "^1.2.1", - "realpath-native": "^1.1.0" + "path-key": "^2.0.0" } }, - "jest-resolve-dependencies": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz", - "integrity": "sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g==", + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", "dev": true, "requires": { - "@jest/types": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-snapshot": "^24.9.0" + "boolbase": "~1.0.0" } }, - "jest-runner": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.9.0.tgz", - "integrity": "sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg==", - "dev": true, - "requires": { - "@jest/console": "^24.7.1", - "@jest/environment": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "chalk": "^2.4.2", - "exit": "^0.1.2", - "graceful-fs": "^4.1.15", - "jest-config": "^24.9.0", - "jest-docblock": "^24.3.0", - "jest-haste-map": "^24.9.0", - "jest-jasmine2": "^24.9.0", - "jest-leak-detector": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-resolve": "^24.9.0", - "jest-runtime": "^24.9.0", - "jest-util": "^24.9.0", - "jest-worker": "^24.6.0", - "source-map-support": "^0.5.6", - "throat": "^4.0.0" - }, - "dependencies": { - "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": { - "color-convert": "^1.9.0" - } - }, - "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": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "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 - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "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 + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "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": { - "has-flag": "^3.0.0" + "is-descriptor": "^0.1.0" } } } }, - "jest-runtime": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.9.0.tgz", - "integrity": "sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw==", + "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==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", "dev": true, "requires": { - "@jest/console": "^24.7.1", - "@jest/environment": "^24.9.0", - "@jest/source-map": "^24.3.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/yargs": "^13.0.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.1.15", - "jest-config": "^24.9.0", - "jest-haste-map": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-mock": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-resolve": "^24.9.0", - "jest-snapshot": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "realpath-native": "^1.1.0", - "slash": "^2.0.0", - "strip-bom": "^3.0.0", - "yargs": "^13.3.0" + "isobject": "^3.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 - }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true } } }, - "jest-serializer": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz", - "integrity": "sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==", - "dev": true + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } }, - "jest-snapshot": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.9.0.tgz", - "integrity": "sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew==", + "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": { - "@babel/types": "^7.0.0", - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "expect": "^24.9.0", - "jest-diff": "^24.9.0", - "jest-get-type": "^24.9.0", - "jest-matcher-utils": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-resolve": "^24.9.0", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "pretty-format": "^24.9.0", - "semver": "^6.2.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 - } + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" } }, - "jest-util": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz", - "integrity": "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==", + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", "dev": true, "requires": { - "@jest/console": "^24.9.0", - "@jest/fake-timers": "^24.9.0", - "@jest/source-map": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "callsites": "^3.0.0", - "chalk": "^2.0.1", - "graceful-fs": "^4.1.15", - "is-ci": "^2.0.0", - "mkdirp": "^0.5.1", - "slash": "^2.0.0", - "source-map": "^0.6.0" + "isobject": "^3.0.1" }, "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 - }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true } } }, - "jest-validate": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.9.0.tgz", - "integrity": "sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==", + "object.values": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", + "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", "dev": true, "requires": { - "@jest/types": "^24.9.0", - "camelcase": "^5.3.1", - "chalk": "^2.0.1", - "jest-get-type": "^24.9.0", - "leven": "^3.1.0", - "pretty-format": "^24.9.0" - }, - "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - } + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" } }, - "jest-watcher": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.9.0.tgz", - "integrity": "sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw==", + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", "dev": true, "requires": { - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/yargs": "^13.0.0", - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.1", - "jest-util": "^24.9.0", - "string-length": "^2.0.0" + "ee-first": "1.1.1" } }, - "jest-worker": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", - "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { - "merge-stream": "^2.0.0", - "supports-color": "^6.1.0" + "wrappy": "1" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "opn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "dev": true, + "requires": { + "is-wsl": "^1.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" + } + }, + "ora": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-2.1.0.tgz", + "integrity": "sha512-hNNlAd3gfv/iPmsNxYoAPLvxg7HuPozww7fFonMZvL84tP6Ox5igfk5j/+a9rtJJwqMgKK+JgWsAQik5o0HTLA==", + "dev": true, + "requires": { + "chalk": "^2.3.1", + "cli-cursor": "^2.1.0", + "cli-spinners": "^1.1.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^4.0.0", + "wcwidth": "^1.0.1" }, "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "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==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "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" @@ -4547,101 +9678,180 @@ } } }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", "dev": true }, - "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "p-each-series": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz", + "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=", "dev": true, "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "p-reduce": "^1.0.0" } }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", "dev": true }, - "jsdom": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", - "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", + "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==", "dev": true, "requires": { - "abab": "^2.0.0", - "acorn": "^5.5.3", - "acorn-globals": "^4.1.0", - "array-equal": "^1.0.0", - "cssom": ">= 0.3.2 < 0.4.0", - "cssstyle": "^1.0.0", - "data-urls": "^1.0.0", - "domexception": "^1.0.1", - "escodegen": "^1.9.1", - "html-encoding-sniffer": "^1.0.2", - "left-pad": "^1.3.0", - "nwsapi": "^2.0.7", - "parse5": "4.0.0", - "pn": "^1.1.0", - "request": "^2.87.0", - "request-promise-native": "^1.0.5", - "sax": "^1.2.4", - "symbol-tree": "^3.2.2", - "tough-cookie": "^2.3.4", - "w3c-hr-time": "^1.0.1", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.3", - "whatwg-mimetype": "^2.1.0", - "whatwg-url": "^6.4.1", - "ws": "^5.2.0", - "xml-name-validator": "^3.0.0" + "p-try": "^2.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-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true + "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" + } }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "p-reduce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", + "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=", "dev": true }, - "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==", + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, - "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=", + "pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", "dev": true }, - "json5": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", - "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", + "parcel": { + "version": "1.12.4", + "resolved": "https://registry.npmjs.org/parcel/-/parcel-1.12.4.tgz", + "integrity": "sha512-qfc74e2/R4pCoU6L/ZZnK9k3iDS6ir4uHea0e9th9w52eehcAGf2ido/iABq9PBXdsIOe4NSY3oUm7Khe7+S3w==", "dev": true, "requires": { - "minimist": "^1.2.0" + "@babel/code-frame": "^7.0.0", + "@babel/core": "^7.4.4", + "@babel/generator": "^7.4.4", + "@babel/parser": "^7.4.4", + "@babel/plugin-transform-flow-strip-types": "^7.4.4", + "@babel/plugin-transform-modules-commonjs": "^7.4.4", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/preset-env": "^7.4.4", + "@babel/runtime": "^7.4.4", + "@babel/template": "^7.4.4", + "@babel/traverse": "^7.4.4", + "@babel/types": "^7.4.4", + "@iarna/toml": "^2.2.0", + "@parcel/fs": "^1.11.0", + "@parcel/logger": "^1.11.1", + "@parcel/utils": "^1.11.0", + "@parcel/watcher": "^1.12.1", + "@parcel/workers": "^1.11.0", + "ansi-to-html": "^0.6.4", + "babylon-walk": "^1.0.2", + "browserslist": "^4.1.0", + "chalk": "^2.1.0", + "clone": "^2.1.1", + "command-exists": "^1.2.6", + "commander": "^2.11.0", + "core-js": "^2.6.5", + "cross-spawn": "^6.0.4", + "css-modules-loader-core": "^1.1.0", + "cssnano": "^4.0.0", + "deasync": "^0.1.14", + "dotenv": "^5.0.0", + "dotenv-expand": "^5.1.0", + "envinfo": "^7.3.1", + "fast-glob": "^2.2.2", + "filesize": "^3.6.0", + "get-port": "^3.2.0", + "htmlnano": "^0.2.2", + "is-glob": "^4.0.0", + "is-url": "^1.2.2", + "js-yaml": "^3.10.0", + "json5": "^1.0.1", + "micromatch": "^3.0.4", + "mkdirp": "^0.5.1", + "node-forge": "^0.7.1", + "node-libs-browser": "^2.0.0", + "opn": "^5.1.0", + "postcss": "^7.0.11", + "postcss-value-parser": "^3.3.1", + "posthtml": "^0.11.2", + "posthtml-parser": "^0.4.0", + "posthtml-render": "^1.1.3", + "resolve": "^1.4.0", + "semver": "^5.4.1", + "serialize-to-js": "^3.0.0", + "serve-static": "^1.12.4", + "source-map": "0.6.1", + "terser": "^3.7.3", + "v8-compile-cache": "^2.0.0", + "ws": "^5.1.1" }, "dependencies": { + "@nodelib/fs.stat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", + "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", + "dev": true + }, + "fast-glob": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", + "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", + "dev": true, + "requires": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" + } + }, + "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" + } + } + } + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, "minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", @@ -4650,419 +9860,450 @@ } } }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "parse-asn1": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", + "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", "dev": true, "requires": { - "graceful-fs": "^4.1.6" + "asn1.js": "^4.0.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" } }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "parse-entities": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.2.1.tgz", + "integrity": "sha512-NBWYLQm1KSoDKk7GAHyioLTvCZ5QjdH/ASBBQTD3iLiAWJXS5bg1jEWI8nIJ+vgVvsceBVBcDGRWSo0KVQBvvg==", "dev": true, "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" } }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" } }, - "kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", "dev": true }, - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "dev": true, - "requires": { - "set-getter": "^0.1.0" - } - }, - "left-pad": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", - "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==", + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "dev": true }, - "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==", + "parsimmon": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/parsimmon/-/parsimmon-1.13.0.tgz", + "integrity": "sha512-5UIrOCW+gjbILkjKPgTgmq8LKf8TT3Iy7kN2VD7OtQ81facKn8B4gG1X94jWqXYZsxG2KbJhrv/Yq/5H6BQn7A==", "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" - } - }, - "list-item": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/list-item/-/list-item-1.1.1.tgz", - "integrity": "sha1-DGXQDih8tmPMs8s4Sad+iewmilY=", - "dev": true, - "requires": { - "expand-range": "^1.8.1", - "extend-shallow": "^2.0.1", - "is-number": "^2.1.0", - "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=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - } + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "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" - } + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "dev": true }, - "lodash": { - "version": "4.17.14", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.14.tgz", - "integrity": "sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw==", + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", "dev": true }, - "lodash._reinterpolate": { + "path-exists": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true }, - "lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "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=", "dev": true }, - "lodash.template": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", - "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", - "dev": true, - "requires": { - "lodash._reinterpolate": "^3.0.0", - "lodash.templatesettings": "^4.0.0" - } + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true }, - "lodash.templatesettings": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", - "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "dev": true, "requires": { - "lodash._reinterpolate": "^3.0.0" + "pify": "^3.0.0" } }, - "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==", + "pbkdf2": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", + "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", "dev": true, "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" } }, - "make-dir": { + "performance-now": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "dependencies": { - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true }, - "make-error": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz", - "integrity": "sha1-7+ToH22yjK3WBccPKcgxtY73dsg=", + "physical-cpu-count": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/physical-cpu-count/-/physical-cpu-count-2.0.0.tgz", + "integrity": "sha1-GN4vl+S/epVRrXURlCtUlverpmA=", "dev": true }, - "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" - } + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "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=", + "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": { - "object-visit": "^1.0.0" + "node-modules-regexp": "^1.0.0" } }, - "markdown-escapes": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.2.tgz", - "integrity": "sha512-lbRZ2mE3Q9RtLjxZBZ9+IMl68DKIXaVAhwvwn9pmjnPLS0h/6kyBMgNhqi1xFJ/2yv6cSyv0jbiZavZv93JkkA==", - "dev": true - }, - "markdown-link": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/markdown-link/-/markdown-link-0.1.1.tgz", - "integrity": "sha1-MsXGUZmmRXMWMi0eQinRNAfIx88=", - "dev": true - }, - "markdown-toc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/markdown-toc/-/markdown-toc-1.2.0.tgz", - "integrity": "sha512-eOsq7EGd3asV0oBfmyqngeEIhrbkc7XVP63OwcJBIhH2EpG2PzFcbZdhy1jutXSlRBBVMNXHvMtSr5LAxSUvUg==", + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", "dev": true, "requires": { - "concat-stream": "^1.5.2", - "diacritics-map": "^0.1.0", - "gray-matter": "^2.1.0", - "lazy-cache": "^2.0.2", - "list-item": "^1.1.1", - "markdown-link": "^0.1.1", - "minimist": "^1.2.0", - "mixin-deep": "^1.1.3", - "object.pick": "^1.2.0", - "remarkable": "^1.7.1", - "repeat-string": "^1.6.1", - "strip-color": "^0.1.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 - } + "find-up": "^3.0.0" } }, - "math-random": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz", - "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==", + "platform": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.4.tgz", + "integrity": "sha1-bw+xftqqSPIUQrOpdcBjEw8cPr0=", "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==", + "pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", "dev": true }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "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 }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", "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" + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "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": { + "color-convert": "^1.9.0" + } + }, + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.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" + } + } + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-calc": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.2.tgz", + "integrity": "sha512-rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ==", + "dev": true, + "requires": { + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" }, "dependencies": { - "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==", + "postcss-value-parser": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", "dev": true } } }, - "mime-db": { - "version": "1.43.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz", - "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==", - "dev": true + "postcss-colormin": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", + "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "color": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } }, - "mime-types": { - "version": "2.1.26", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz", - "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==", + "postcss-convert-values": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", + "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", "dev": true, "requires": { - "mime-db": "1.43.0" + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" } }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", + "postcss-discard-comments": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", + "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", "dev": true, "requires": { - "brace-expansion": "^1.1.7" + "postcss": "^7.0.0" } }, - "minimist": { - "version": "0.0.8", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true + "postcss-discard-duplicates": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", + "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", + "dev": true, + "requires": { + "postcss": "^7.0.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==", + "postcss-discard-empty": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", + "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", "dev": true, "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" + "postcss": "^7.0.0" + } + }, + "postcss-discard-overridden": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", + "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-merge-longhand": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", + "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", + "dev": true, + "requires": { + "css-color-names": "0.0.4", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" + } + }, + "postcss-merge-rules": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", + "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "cssnano-util-same-parent": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0", + "vendors": "^1.0.0" }, "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==", + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", "dev": true, "requires": { - "is-plain-object": "^2.0.4" + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" } } } }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "postcss-minify-font-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", + "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", "dev": true, "requires": { - "minimist": "^1.2.5" + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-minify-gradients": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", + "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "is-color-stop": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-minify-params": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", + "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "browserslist": "^4.0.0", + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "uniqs": "^2.0.0" + } + }, + "postcss-minify-selectors": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", + "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.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 + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } } } }, - "mocha": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", - "integrity": "sha1-bYrlCPWRZ/lA8rWzxKYSrlDJCuY=", + "postcss-modules-extract-imports": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz", + "integrity": "sha1-thTJcgvmgW6u41+zpfqh26agXds=", "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" + "postcss": "^6.0.1" }, "dependencies": { - "commander": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", - "integrity": "sha1-30boZ9D8Kuxmo0ZitAapzK//Ww8=", - "dev": true - }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=", + "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": { - "ms": "2.0.0" + "color-convert": "^1.9.0" } }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", + "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": { - "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.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, "has-flag": { @@ -5071,19 +10312,21 @@ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", "dev": true, "requires": { - "minimist": "0.0.8" + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" } }, "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha1-HGszdALCE3YF7+GfEP7DkPb6q1Q=", + "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" @@ -5091,448 +10334,377 @@ } } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "multimatch": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-4.0.0.tgz", - "integrity": "sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ==", - "dev": true, - "requires": { - "@types/minimatch": "^3.0.3", - "array-differ": "^3.0.0", - "array-union": "^2.1.0", - "arrify": "^2.0.1", - "minimatch": "^3.0.4" - } - }, - "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" - }, - "dependencies": { - "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 - } - } - }, - "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 - }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "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": "5.4.3", - "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.3.tgz", - "integrity": "sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q==", - "dev": true, - "requires": { - "growly": "^1.3.0", - "is-wsl": "^1.1.0", - "semver": "^5.5.0", - "shellwords": "^0.1.1", - "which": "^1.3.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "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==", + "postcss-modules-local-by-default": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", + "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", "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" + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" }, "dependencies": { - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "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": { + "color-convert": "^1.9.0" + } + }, + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, - "resolve": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", - "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", "dev": true, "requires": { - "path-parse": "^1.0.6" + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.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" } } } }, - "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" - } - }, - "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" - } - }, - "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-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "postcss-modules-scope": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", + "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", "dev": true, "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.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=", + "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": { - "is-descriptor": "^0.1.0" + "color-convert": "^1.9.0" + } + }, + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.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" } } } }, - "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==", - "dev": true - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "postcss-modules-values": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", + "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", "dev": true, "requires": { - "isobject": "^3.0.0" + "icss-replace-symbols": "^1.1.0", + "postcss": "^6.0.1" }, "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "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": { + "color-convert": "^1.9.0" + } + }, + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.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" + } } } }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "postcss-normalize-charset": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", + "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" + "postcss": "^7.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==", + "postcss-normalize-display-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", + "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", "dev": true, "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" } }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "postcss-normalize-positions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", + "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", "dev": true, "requires": { - "isobject": "^3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" } }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "postcss-normalize-repeat-style": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", + "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", "dev": true, "requires": { - "wrappy": "1" + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" } }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "postcss-normalize-string": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", + "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", "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" + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" } }, - "p-each-series": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz", - "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=", + "postcss-normalize-timing-functions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", + "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", "dev": true, "requires": { - "p-reduce": "^1.0.0" + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" } }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true + "postcss-normalize-unicode": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", + "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } }, - "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==", + "postcss-normalize-url": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", + "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", + "dev": true, + "requires": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-whitespace": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", + "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", "dev": true, "requires": { - "p-try": "^2.0.0" + "postcss": "^7.0.0", + "postcss-value-parser": "^3.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==", + "postcss-ordered-values": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", + "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", "dev": true, "requires": { - "p-limit": "^2.0.0" + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" } }, - "p-reduce": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", - "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=", - "dev": true - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "parse-entities": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.2.1.tgz", - "integrity": "sha512-NBWYLQm1KSoDKk7GAHyioLTvCZ5QjdH/ASBBQTD3iLiAWJXS5bg1jEWI8nIJ+vgVvsceBVBcDGRWSo0KVQBvvg==", + "postcss-reduce-initial": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", + "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", "dev": true, "requires": { - "character-entities": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "character-reference-invalid": "^1.0.0", - "is-alphanumerical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-hexadecimal": "^1.0.0" + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" } }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "postcss-reduce-transforms": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", + "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", "dev": true, "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" } }, - "parse5": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", - "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", - "dev": true - }, - "parsimmon": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/parsimmon/-/parsimmon-1.13.0.tgz", - "integrity": "sha512-5UIrOCW+gjbILkjKPgTgmq8LKf8TT3Iy7kN2VD7OtQ81facKn8B4gG1X94jWqXYZsxG2KbJhrv/Yq/5H6BQn7A==", - "dev": true - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true - }, - "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 - }, - "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=", - "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 - }, - "path-parse": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", - "dev": true - }, - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "postcss-selector-parser": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", + "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", "dev": true, "requires": { - "pify": "^3.0.0" + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" } }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true + "postcss-svgo": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz", + "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", + "dev": true, + "requires": { + "is-svg": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + } }, - "picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", - "dev": true + "postcss-unique-selectors": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", + "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.0" + } }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true }, - "pirates": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", - "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "posthtml": { + "version": "0.11.6", + "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.11.6.tgz", + "integrity": "sha512-C2hrAPzmRdpuL3iH0TDdQ6XCc9M7Dcc3zEW5BLerY65G4tWWszwv6nG/ksi6ul5i2mx22ubdljgktXCtNkydkw==", "dev": true, "requires": { - "node-modules-regexp": "^1.0.0" + "posthtml-parser": "^0.4.1", + "posthtml-render": "^1.1.5" } }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "posthtml-parser": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.4.2.tgz", + "integrity": "sha512-BUIorsYJTvS9UhXxPTzupIztOMVNPa/HtAm9KHni9z6qEfiJ1bpOBL5DfUOL9XAc3XkLIEzBzpph+Zbm4AdRAg==", "dev": true, "requires": { - "find-up": "^3.0.0" + "htmlparser2": "^3.9.2" } }, - "platform": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.4.tgz", - "integrity": "sha1-bw+xftqqSPIUQrOpdcBjEw8cPr0=", - "dev": true - }, - "pn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", - "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", - "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=", + "posthtml-render": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-1.2.2.tgz", + "integrity": "sha512-MbIXTWwAfJ9qET6Zl29UNwJcDJEEz9Zkr5oDhiujitJa7YBJwEpbkX2cmuklCDxubTMoRWpid3q8DrSyGnUUzQ==", "dev": true }, "prelude-ls": { @@ -5567,6 +10739,12 @@ } } }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, "process-nextick-args": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", @@ -5579,6 +10757,28 @@ "integrity": "sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ==", "dev": true }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "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 + } + } + }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -5601,12 +10801,69 @@ "integrity": "sha512-mk98aayyd00xbfHgE3uEmAUGzz3jCdm8Mkf5DUXUhc7egmOaGG2D7qhVlynGenNe9VaNJZvzO9hkc8myuTkDgw==", "dev": true }, + "purgecss": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-2.3.0.tgz", + "integrity": "sha512-BE5CROfVGsx2XIhxGuZAT7rTH9lLeQx/6M0P7DTXQH4IUc3BBzs9JUzt4yzGf3JrH9enkeq6YJBe9CTtkm1WmQ==", + "dev": true, + "requires": { + "commander": "^5.0.0", + "glob": "^7.0.0", + "postcss": "7.0.32", + "postcss-selector-parser": "^6.0.2" + }, + "dependencies": { + "commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true + } + } + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true + }, "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", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "quote-stream": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/quote-stream/-/quote-stream-1.0.2.tgz", + "integrity": "sha1-hJY/jJwmuULhU/7rU6rnRlK34LI=", + "dev": true, + "requires": { + "buffer-equal": "0.0.1", + "minimist": "^1.1.3", + "through2": "^2.0.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 + } + } + }, "randomatic": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", @@ -5632,6 +10889,31 @@ } } }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, "react-is": { "version": "16.13.0", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.0.tgz", @@ -5674,6 +10956,17 @@ "util-deprecate": "~1.0.1" } }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, "realpath-native": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz", @@ -5683,6 +10976,36 @@ "util.promisify": "^1.0.0" } }, + "regenerate": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.1.tgz", + "integrity": "sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "dev": true, + "requires": { + "regenerate": "^1.4.0" + } + }, + "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 + }, + "regenerator-transform": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + }, "regex-not": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", @@ -5693,6 +11016,43 @@ "safe-regex": "^1.1.0" } }, + "regexpu-core": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", + "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", + "dev": true, + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.2.0" + } + }, + "regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "dev": true + }, + "regjsparser": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", + "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, "remark-frontmatter": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-1.3.1.tgz", @@ -5858,6 +11218,16 @@ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", "dev": true }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, "ret": { "version": "0.1.15", "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", @@ -5870,6 +11240,18 @@ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true }, + "rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", + "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", + "dev": true + }, + "rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", + "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", + "dev": true + }, "rimraf": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", @@ -5879,6 +11261,16 @@ "glob": "^7.0.5" } }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, "rsvp": { "version": "4.8.5", "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", @@ -5943,12 +11335,68 @@ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", "dev": true }, - "semver": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "saxes": { + "version": "3.1.11", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", + "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", + "dev": true, + "requires": { + "xmlchars": "^2.1.1" + } + }, + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "dev": true + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "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 + } + } + }, + "serialize-to-js": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/serialize-to-js/-/serialize-to-js-3.1.1.tgz", + "integrity": "sha512-F+NGU0UHMBO4Q965tjw7rvieNVjlH6Lqi2emq/Lc9LUURYJbiCzmpi4Cy1OOjjVPtxu0c+NE85LU6968Wko5ZA==", "dev": true }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", @@ -5987,6 +11435,34 @@ } } }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shallow-copy": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz", + "integrity": "sha1-QV9CcC1z2BAzApLMXuhurhoRoXA=", + "dev": true + }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", @@ -6014,6 +11490,23 @@ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "dev": true, + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "dev": true + } + } + }, "sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", @@ -6239,6 +11732,12 @@ "tweetnacl": "~0.14.0" } }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, "stack-utils": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz", @@ -6251,6 +11750,15 @@ "integrity": "sha512-Qe8QntFrrpWTnHwvwj2FZTgv+PKIsp0B9VxLzLLbSpPXWOgRgc5LVj/aTiSfK1RqIeF9jeC1UeOH8Q8y60A7og==", "dev": true }, + "static-eval": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.1.0.tgz", + "integrity": "sha512-agtxZ/kWSsCkI5E4QifRwsaPs0P0JmZV6dkLz6ILYfFYQGn+5plctanRN+IC8dJRiFkyXHrwEE3W9Wmx67uDbw==", + "dev": true, + "requires": { + "escodegen": "^1.11.1" + } + }, "static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", @@ -6272,12 +11780,90 @@ } } }, + "static-module": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/static-module/-/static-module-2.2.5.tgz", + "integrity": "sha512-D8vv82E/Kpmz3TXHKG8PPsCPg+RAX6cbCOyvjM6x04qZtQ47EtJFVwRsdov3n5d6/6ynrOY9XB4JkaZwB2xoRQ==", + "dev": true, + "requires": { + "concat-stream": "~1.6.0", + "convert-source-map": "^1.5.1", + "duplexer2": "~0.1.4", + "escodegen": "~1.9.0", + "falafel": "^2.1.0", + "has": "^1.0.1", + "magic-string": "^0.22.4", + "merge-source-map": "1.0.4", + "object-inspect": "~1.4.0", + "quote-stream": "~1.0.2", + "readable-stream": "~2.3.3", + "shallow-copy": "~0.0.1", + "static-eval": "^2.0.0", + "through2": "~2.0.3" + }, + "dependencies": { + "escodegen": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.1.tgz", + "integrity": "sha512-6hTjO1NAWkHnDk3OqQ4YrCuwwmGHL9S3nPlzBOUG/R44rda3wLNrfvQ5fkSGjyhHFKM7ALPKcKGrwvCLe0lC7Q==", + "dev": true, + "requires": { + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + }, + "object-inspect": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.4.1.tgz", + "integrity": "sha512-wqdhLpfCUbEsoEwl3FXwGyv8ief1k/1aUdIPCqVnupM6e8l63BEJdiF/0swtn04/8p05tG/T0FrpTlfwvljOdw==", + "dev": true + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + }, "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", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "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==", + "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" + } + }, "string-length": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", @@ -6410,6 +11996,30 @@ "boundary": "^1.0.1" } }, + "stylehacks": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", + "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, "supports-color": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", @@ -6419,12 +12029,81 @@ "has-flag": "^2.0.0" } }, + "svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + }, + "dependencies": { + "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": { + "color-convert": "^1.9.0" + } + }, + "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": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "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" + } + } + } + }, "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 }, + "terser": { + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-3.17.0.tgz", + "integrity": "sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ==", + "dev": true, + "requires": { + "commander": "^2.19.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.10" + } + }, "test-exclude": { "version": "5.2.3", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz", @@ -6453,12 +12132,39 @@ "xtend": "~4.0.1" } }, + "timers-browserify": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", + "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", + "dev": true + }, + "tiny-inflate": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==", + "dev": true + }, "tmpl": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", "dev": true }, + "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", @@ -6507,6 +12213,12 @@ } } }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true + }, "toml": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/toml/-/toml-2.3.6.tgz", @@ -6780,6 +12492,12 @@ "tslib": "^1.8.1" } }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -6822,6 +12540,109 @@ "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", "dev": true }, + "uncss": { + "version": "0.17.3", + "resolved": "https://registry.npmjs.org/uncss/-/uncss-0.17.3.tgz", + "integrity": "sha512-ksdDWl81YWvF/X14fOSw4iu8tESDHFIeyKIeDrK6GEVTQvqJc1WlOEXqostNwOCi3qAj++4EaLsdAgPmUbEyog==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "glob": "^7.1.4", + "is-absolute-url": "^3.0.1", + "is-html": "^1.1.0", + "jsdom": "^14.1.0", + "lodash": "^4.17.15", + "postcss": "^7.0.17", + "postcss-selector-parser": "6.0.2", + "request": "^2.88.0" + }, + "dependencies": { + "acorn": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", + "dev": true + }, + "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 + }, + "is-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", + "dev": true + }, + "jsdom": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-14.1.0.tgz", + "integrity": "sha512-O901mfJSuTdwU2w3Sn+74T+RnDVP+FuV5fH8tcPWyqrseRAb0s5xOtPgCFiPOtLcyK7CLIJwPyD83ZqQWvA5ng==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "acorn": "^6.0.4", + "acorn-globals": "^4.3.0", + "array-equal": "^1.0.0", + "cssom": "^0.3.4", + "cssstyle": "^1.1.1", + "data-urls": "^1.1.0", + "domexception": "^1.0.1", + "escodegen": "^1.11.0", + "html-encoding-sniffer": "^1.0.2", + "nwsapi": "^2.1.3", + "parse5": "5.1.0", + "pn": "^1.1.0", + "request": "^2.88.0", + "request-promise-native": "^1.0.5", + "saxes": "^3.1.9", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.5.0", + "w3c-hr-time": "^1.0.1", + "w3c-xmlserializer": "^1.1.2", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^7.0.0", + "ws": "^6.1.2", + "xml-name-validator": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "dev": true + }, + "parse5": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", + "dev": true + }, + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + } + } + }, "underscore": { "version": "1.8.3", "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", @@ -6838,6 +12659,44 @@ "xtend": "^4.0.1" } }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "dev": true + }, + "unicode-trie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-0.3.1.tgz", + "integrity": "sha1-1nHd3YkQGgi6w3tqUWEBBgIFIIU=", + "dev": true, + "requires": { + "pako": "^0.2.5", + "tiny-inflate": "^1.0.0" + } + }, "unified": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/unified/-/unified-6.2.0.tgz", @@ -6864,6 +12723,18 @@ "set-value": "^2.0.1" } }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", + "dev": true + }, "unist-util-is": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-2.1.2.tgz", @@ -6909,6 +12780,12 @@ "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=", "dev": true }, + "unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", + "dev": true + }, "unset-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", @@ -6955,6 +12832,12 @@ } } }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true + }, "update-section": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/update-section/-/update-section-0.3.3.tgz", @@ -6976,12 +12859,39 @@ "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", "dev": true }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, "use": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", "dev": true }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -7006,6 +12916,12 @@ "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", "dev": true }, + "v8-compile-cache": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", + "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==", + "dev": true + }, "validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -7016,6 +12932,12 @@ "spdx-expression-parse": "^3.0.0" } }, + "vendors": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", + "dev": true + }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", @@ -7054,6 +12976,18 @@ "unist-util-stringify-position": "^1.1.1" } }, + "vlq": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", + "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==", + "dev": true + }, + "vm-browserify": { + "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 + }, "w3c-hr-time": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", @@ -7063,6 +12997,17 @@ "browser-process-hrtime": "^1.0.0" } }, + "w3c-xmlserializer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", + "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", + "dev": true, + "requires": { + "domexception": "^1.0.1", + "webidl-conversions": "^4.0.2", + "xml-name-validator": "^3.0.0" + } + }, "walker": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", @@ -7072,6 +13017,15 @@ "makeerror": "1.0.x" } }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, "webidl-conversions": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", @@ -7191,6 +13145,12 @@ "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 + }, "xtend": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", diff --git a/package.json b/package.json index 236f722b5..d5e3d920c 100644 --- a/package.json +++ b/package.json @@ -13,15 +13,14 @@ "scripts": { "lint": "tslint -p .", "jest-clear-cache": "jest --clearCache", - "jest": "jest --ci", "prettier": "prettier --list-different \"./{src,test,examples,scripts}/**/*.ts\"", "fix-prettier": "prettier --write \"./{src,test,examples,scripts}/**/*.ts\"", - "test": "npm run lint && npm run prettier && npm run dtslint && npm run jest-clear-cache && npm run jest && npm run docs", + "test": "npm run lint && npm run prettier && npm run dtslint && npm run jest-clear-cache && jest && npm run docs", "clean": "rimraf ./dist", "prebuild": "npm run clean", "build": "tsc -p ./tsconfig.build.json && tsc -p ./tsconfig.build-es6.json", "postbuild": "prettier --write \"./dist/**/*.ts\"", - "prepublish": "ts-node scripts/pre-publish", + "prepublishOnly": "ts-node scripts/pre-publish", "prerelease": "npm run build", "release": "ts-node scripts/release", "doctoc": "doctoc README.md docs/introduction/code-conventions.md --title \"**Table of contents**\"", @@ -41,7 +40,7 @@ "homepage": "https://github.com/gcanti/fp-ts", "devDependencies": { "@types/benchmark": "^1.0.31", - "@types/glob": "^7.1.2", + "@types/glob": "^7.1.3", "@types/jest": "22.2.2", "@types/node": "^12.6.8", "@types/prettier": "1.10.0", @@ -57,7 +56,7 @@ "prettier": "^2.0.2", "rimraf": "2.6.2", "ts-jest": "^24.0.2", - "ts-node": "^8.10.2", + "ts-node": "^8.0.2", "tslint": "5.11.0", "tslint-config-standard": "8.0.1", "tslint-immutable": "^6.0.1", From 973a009a0ef8551ee7a49c2a1eff15069a32f6f4 Mon Sep 17 00:00:00 2001 From: StefanoMagrassi <1291271+StefanoMagrassi@users.noreply.github.com> Date: Tue, 28 Jul 2020 09:30:57 +0200 Subject: [PATCH 106/106] fix vulnerabilities with npm audit --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 520706217..efb75516f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8779,9 +8779,9 @@ } }, "lodash": { - "version": "4.17.14", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.14.tgz", - "integrity": "sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw==", + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", "dev": true }, "lodash._reinterpolate": { @@ -11158,9 +11158,9 @@ }, "dependencies": { "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", "dev": true } }