diff --git a/README.md b/README.md index 7036f25d7..6985bb73b 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,9 @@ To start javascript assignments please follow the next steps: git commit -m "Update the links" git push origin master ``` -* Open https://github.com/AisBrestEDU/js-assignments and test the build icon. Now it will run all tests and update status once you push changes to github. Keep this icon green! + +* Open https://github.com/lenivecc/js-assignments and test the build icon. Now it will run all tests and update status once you push changes to github. Keep this icon green! + ### How to setup work environment diff --git a/package-lock.json b/package-lock.json index c87f25cb9..28662d128 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,2222 +4,157 @@ "lockfileVersion": 1, "requires": true, "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-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", - "dev": true - }, - "@babel/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" - }, - "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" - } - }, - "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 - }, - "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/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 - }, - "acorn": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.3.1.tgz", - "integrity": "sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA==", - "dev": true - }, - "acorn-jsx": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", - "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", - "dev": true - }, - "ajv": { - "version": "6.12.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz", - "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", - "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" - } - }, - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - }, - "ansi-escapes": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", - "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", - "dev": true, - "requires": { - "type-fest": "^0.11.0" - }, - "dependencies": { - "type-fest": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", - "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", - "dev": true - } - } - }, - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, - "ansi-styles": { - "version": "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" - } - }, - "anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "array.prototype.map": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array.prototype.map/-/array.prototype.map-1.0.2.tgz", - "integrity": "sha512-Az3OYxgsa1g7xDYp86l0nnN4bcmuEITGe1rbdEBVkrqkzMgDcbdQ2R7r41pNzti+4NMces3H8gMmuioZUilLgw==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "es-array-method-boxes-properly": "^1.0.0", - "is-string": "^1.0.4" - } - }, - "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 - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "binary-extensions": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", - "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "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": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "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 - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true - }, - "chokidar": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.1.tgz", - "integrity": "sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg==", - "dev": true, - "requires": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "fsevents": "~2.1.2", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.3.0" - } - }, - "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", - "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" - } - } - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "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 - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "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" - } - }, - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "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" - } - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.1" - } - }, - "es-abstract": { - "version": "1.17.6", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", - "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - }, - "es-array-method-boxes-properly": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", - "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", - "dev": true - }, - "es-get-iterator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.0.tgz", - "integrity": "sha512-UfrmHuWQlNMTs35e1ypnvikg6jCz3SK8v8ImvmDsh36fCVUR1MqoFDiyn0/k52C8NqO3YsO8Oe0azeesNuqSsQ==", - "dev": true, - "requires": { - "es-abstract": "^1.17.4", - "has-symbols": "^1.0.1", - "is-arguments": "^1.0.4", - "is-map": "^2.0.1", - "is-set": "^2.0.1", - "is-string": "^1.0.5", - "isarray": "^2.0.5" - } - }, - "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 - }, - "eslint": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.4.0.tgz", - "integrity": "sha512-gU+lxhlPHu45H3JkEGgYhWhkR9wLHHEXC9FbWFnTlEkbKyZKWgWRLgf61E8zWmBuI6g5xKBph9ltg3NtZMVF8g==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "eslint-scope": "^5.1.0", - "eslint-utils": "^2.0.0", - "eslint-visitor-keys": "^1.2.0", - "espree": "^7.1.0", - "esquery": "^1.2.0", - "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash": "^4.17.14", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^5.2.3", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "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" - } - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "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 - } - } - }, - "eslint-scope": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.0.tgz", - "integrity": "sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w==", - "dev": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - } - }, - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - }, - "espree": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.1.0.tgz", - "integrity": "sha512-dcorZSyfmm4WTuTnE5Y7MEN1DyoPYy1ZR783QW1FJoenn7RailyWFsq/UL6ZAAA7uXurN9FIpYyUs3OfiIW+Qw==", - "dev": true, - "requires": { - "acorn": "^7.2.0", - "acorn-jsx": "^5.2.0", - "eslint-visitor-keys": "^1.2.0" - } - }, - "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 - }, - "esquery": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", - "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.1.0.tgz", - "integrity": "sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw==", - "dev": true - } - } - }, - "esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", - "dev": true, - "requires": { - "estraverse": "^4.1.0" - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - } - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "file-entry-cache": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", - "dev": true, - "requires": { - "flat-cache": "^2.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" - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "flat": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz", - "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==", - "dev": true, - "requires": { - "is-buffer": "~2.0.3" - } - }, - "flat-cache": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", - "dev": true, - "requires": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" - } - }, - "flatted": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", - "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", - "dev": true - }, - "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": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", - "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 - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "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 - }, - "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-all": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/glob-all/-/glob-all-3.2.1.tgz", - "integrity": "sha512-x877rVkzB3ipid577QOp+eQCR6M5ZyiwrtaYgrX/z3EThaSPFtLDwBXFHc3sH1cG0R0vFYI5SRYeWMMSEyXkUw==", - "dev": true, - "requires": { - "glob": "^7.1.2", - "yargs": "^15.3.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, - "requires": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - } - }, - "yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } - } - }, - "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": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", - "dev": true, - "requires": { - "type-fest": "^0.8.1" - } - }, - "growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "has-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 - }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true - }, - "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": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, - "import-fresh": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", - "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.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.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "inquirer": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.2.tgz", - "integrity": "sha512-DF4osh1FM6l0RJc5YWYhSDB6TawiBRlbV9Cox8MWlidU218Tb7fm3lQTULyUJDfJ0tjbzl0W4q651mrCCEM55w==", - "dev": true, - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.16", - "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.6.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - }, - "dependencies": { - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - } - } - }, - "is-arguments": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", - "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", - "dev": true - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-buffer": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", - "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", - "dev": true - }, - "is-callable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", - "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", - "dev": true - }, - "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-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-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.1.tgz", - "integrity": "sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw==", - "dev": true - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz", - "integrity": "sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-set": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.1.tgz", - "integrity": "sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA==", - "dev": true - }, - "is-string": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", - "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", - "dev": true - }, - "is-symbol": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", - "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, - "isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "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 - }, - "iterate-iterator": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/iterate-iterator/-/iterate-iterator-1.0.1.tgz", - "integrity": "sha512-3Q6tudGN05kbkDQDI4CqjaBf4qf85w6W6GnuZDtUVYwKgtC1q8yxYX7CZed7N+tLzQqS6roujWvszf13T+n9aw==", - "dev": true - }, - "iterate-value": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/iterate-value/-/iterate-value-1.0.2.tgz", - "integrity": "sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ==", - "dev": true, - "requires": { - "es-get-iterator": "^1.0.2", - "iterate-iterator": "^1.0.1" - } - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", - "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.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 - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "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 - }, - "log-symbols": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", - "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", - "dev": true, - "requires": { - "chalk": "^2.4.2" - }, - "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" - } - }, - "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" - } - } - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "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 - } - } - }, - "mocha": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.0.1.tgz", - "integrity": "sha512-vefaXfdYI8+Yo8nPZQQi0QO2o+5q9UIMX1jZ1XMmK3+4+CQjc7+B0hPdUeglXiTlr8IHMVRo63IhO9Mzt6fxOg==", - "dev": true, - "requires": { - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.3.1", - "debug": "3.2.6", - "diff": "4.0.2", - "escape-string-regexp": "1.0.5", - "find-up": "4.1.0", - "glob": "7.1.6", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "3.13.1", - "log-symbols": "3.0.0", - "minimatch": "3.0.4", - "ms": "2.1.2", - "object.assign": "4.1.0", - "promise.allsettled": "1.0.2", - "serialize-javascript": "3.0.0", - "strip-json-comments": "3.0.1", - "supports-color": "7.1.0", - "which": "2.0.2", - "wide-align": "1.1.3", - "workerpool": "6.0.0", - "yargs": "13.3.2", - "yargs-parser": "13.1.2", - "yargs-unparser": "1.6.0" - }, - "dependencies": { - "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" - } - }, - "strip-json-comments": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", - "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==", - "dev": true - } - } - }, - "mocha-eslint": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/mocha-eslint/-/mocha-eslint-6.0.0.tgz", - "integrity": "sha512-jUeQzQDWFZ/gIkax5Hw0nXugGccfMlWJFu6DQTl+WdX0ZqhlV7U4F01Lu8PmOz2yHQmepvRWgllIFbjYiicMkQ==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "eslint": "^6.6.0", - "glob-all": "^3.1.0", - "replaceall": "^0.1.6" - }, - "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 - }, - "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" - } - }, - "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 - } - } - }, - "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" - } - }, - "eslint": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", - "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.10.0", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^1.4.3", - "eslint-visitor-keys": "^1.1.0", - "espree": "^6.1.2", - "esquery": "^1.0.1", - "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "inquirer": "^7.0.0", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.14", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.3", - "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^6.1.2", - "strip-ansi": "^5.2.0", - "strip-json-comments": "^3.0.1", - "table": "^5.2.3", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - } - }, - "eslint-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", - "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - } - }, - "espree": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", - "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", - "dev": true, - "requires": { - "acorn": "^7.1.1", - "acorn-jsx": "^5.2.0", - "eslint-visitor-keys": "^1.1.0" - } - }, - "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" - } - }, - "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" - } - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true - }, - "regexpp": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", - "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 - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "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", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2" - } - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "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 - }, - "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 - }, - "object-inspect": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", - "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", - "dev": true - }, - "object-keys": { - "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.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" - } - }, - "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": "5.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", - "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" }, - "p-limit": { + "commander": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "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==", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.3.0.tgz", + "integrity": "sha1-/UMOiJgy7DU7ms0d4hfBHLPu+HM=", "dev": true }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", "dev": true, "requires": { - "callsites": "^3.0.0" + "ms": "0.7.1" } }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "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": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "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 - }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "diff": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz", + "integrity": "sha1-fyjS657nsVqX79ic5j3P2qPMur8=", "dev": true }, - "promise.allsettled": { + "escape-string-regexp": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/promise.allsettled/-/promise.allsettled-1.0.2.tgz", - "integrity": "sha512-UpcYW5S1RaNKT6pd+s9jp9K9rlQge1UXKskec0j6Mmuq7UJCvlS2J2/s/yuPN8ehftf9HXMxWlKiPbGGUzpoRg==", - "dev": true, - "requires": { - "array.prototype.map": "^1.0.1", - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1", - "iterate-value": "^1.0.0" - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "readdirp": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.3.0.tgz", - "integrity": "sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ==", - "dev": true, - "requires": { - "picomatch": "^2.0.7" - } - }, - "regexpp": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", - "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", - "dev": true - }, - "replaceall": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/replaceall/-/replaceall-0.1.6.tgz", - "integrity": "sha1-gdgax663LX9cSUKt8ml6MiBojY4=", - "dev": true - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - }, - "dependencies": { - "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" - } - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - } - } - }, - "run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true - }, - "rxjs": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.0.tgz", - "integrity": "sha512-3HMA8z/Oz61DUHe+SdOiQyzIf4tOx5oQHmMir7IZEu6TMqCLHT4LRcmNaUS0NwOz8VLvmmBduMsoaUvMaIiqzg==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", - "dev": true - }, - "serialize-javascript": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.0.0.tgz", - "integrity": "sha512-skZcHYw2vEX4bw90nAr2iTTsz6x2SrHEnfxgKYmZlvJYBEZrvbKtobJWlQ20zczKb3bsHHXXTYt48zBA7ni9cw==", - "dev": true - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz", + "integrity": "sha1-Tbwv5nTnGUnK8/smlc5/LcHZqNE=", "dev": true }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", + "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", "dev": true, "requires": { - "shebang-regex": "^3.0.0" + "inherits": "2", + "minimatch": "0.3" } }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "growl": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", + "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", "dev": true }, - "slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "jade": { + "version": "0.26.3", + "resolved": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", + "integrity": "sha1-jxDXl32NefL2/4YqgbBRPMslaGw=", "dev": true, "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "commander": "0.6.1", + "mkdirp": "0.3.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==", + "commander": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz", + "integrity": "sha1-+mihT2qUXVTbvlDYzbMyDp47GgY=", "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" - } - } - } - }, - "string.prototype.trimend": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", - "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, - "string.prototype.trimstart": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", - "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, - "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "mkdirp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", + "integrity": "sha1-G79asbqCevI1dRQ0kEJkVfSB/h4=", "dev": true } } }, - "table": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", - "dev": true, - "requires": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "requires": { - "os-tmpdir": "~1.0.2" - } - }, - "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" - } - }, - "tslib": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", - "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", - "dev": true - }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "lru-cache": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", + "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", "dev": true }, - "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "minimatch": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", + "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=", "dev": true, "requires": { - "punycode": "^2.1.0" + "lru-cache": "2", + "sigmund": "~1.0.0" } }, - "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==", + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, "requires": { - "isexe": "^2.0.0" + "minimist": "0.0.8" } }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "mocha": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-2.5.3.tgz", + "integrity": "sha1-FhvlvetJZ3HrmzV0UFC2IrWu/Fg=", "dev": true, "requires": { - "string-width": "^1.0.2 || 2" - }, - "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 - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "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" - } - } + "commander": "2.3.0", + "debug": "2.2.0", + "diff": "1.4.0", + "escape-string-regexp": "1.0.2", + "glob": "3.2.11", + "growl": "1.9.2", + "jade": "0.26.3", + "mkdirp": "0.5.1", + "supports-color": "1.2.0", + "to-iso-string": "0.0.2" } }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", "dev": true }, - "workerpool": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.0.0.tgz", - "integrity": "sha512-fU2OcNA/GVAJLLyKUoHkAgIhKb0JoCpSjLC/G2vYKxUjVmQwGbRVeoPJ1a8U4pnVofz4AQV5Y/NEw8oKqxEBtA==", + "sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", "dev": true }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.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" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "supports-color": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-1.2.0.tgz", + "integrity": "sha1-/x7R5hFp0Gs88tWI4YixjYhH4X4=", "dev": true }, - "write": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", - "dev": true, - "requires": { - "mkdirp": "^0.5.1" - } - }, - "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "to-iso-string": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/to-iso-string/-/to-iso-string-0.0.2.tgz", + "integrity": "sha1-TcGeZk38y+Jb2NtQiwDG2hWCVdE=", "dev": true - }, - "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" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - } - } - }, - "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - }, - "yargs-unparser": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", - "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", - "dev": true, - "requires": { - "flat": "^4.1.0", - "lodash": "^4.17.15", - "yargs": "^13.3.0" - } + } } } diff --git a/package.json b/package.json index 1830b3015..1d56e228f 100644 --- a/package.json +++ b/package.json @@ -20,5 +20,8 @@ "repository": { "type": "git", "url": "https://github.com/rolling-scopes-school/js-assignments.git" + }, + "dependencies": { + "co": "^4.6.0" } } diff --git a/task/01-strings-tasks.js b/task/01-strings-tasks.js deleted file mode 100644 index e28054657..000000000 --- a/task/01-strings-tasks.js +++ /dev/null @@ -1,290 +0,0 @@ -'use strict'; - -/******************************************************************************************** - * * - * Plese read the following tutorial before implementing tasks: * - * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String * - * * - ********************************************************************************************/ - - - -/** - * Returns the result of concatenation of two strings. - * - * @param {string} value1 - * @param {string} value2 - * @return {string} - * - * @example - * 'aa', 'bb' => 'aabb' - * 'aa','' => 'aa' - * '', 'bb' => 'bb' - */ -function concatenateStrings(value1, value2) { - throw new Error('Not implemented'); -} - - -/** - * Returns the length of given string. - * - * @param {string} value - * @return {number} - * - * @example - * 'aaaaa' => 5 - * 'b' => 1 - * '' => 0 - */ -function getStringLength(value) { - throw new Error('Not implemented'); -} - -/** - * Returns the result of string template and given parameters firstName and lastName. - * Please do not use concatenation, use template string : - * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/template_strings - * - * @param {string} firstName - * @param {string} lastName - * @return {string} - * - * @example - * 'John','Doe' => 'Hello, John Doe!' - * 'Chuck','Norris' => 'Hello, Chuck Norris!' - */ -function getStringFromTemplate(firstName, lastName) { - throw new Error('Not implemented'); -} - -/** - * Extracts a name from template string 'Hello, First_Name Last_Name!'. - * - * @param {string} value - * @return {string} - * - * @example - * 'Hello, John Doe!' => 'John Doe' - * 'Hello, Chuck Norris!' => 'Chuck Norris' - */ -function extractNameFromTemplate(value) { - throw new Error('Not implemented'); -} - - -/** - * Returns a first char of the given string. - * - * @param {string} value - * @return {string} - * - * @example - * 'John Doe' => 'J' - * 'cat' => 'c' - */ -function getFirstChar(value) { - throw new Error('Not implemented'); -} - -/** - * Removes a leading and trailing whitespace characters from string. - * - * @param {string} value - * @return {string} - * - * @example - * ' Abracadabra' => 'Abracadabra' - * 'cat' => 'cat' - * '\tHello, World! ' => 'Hello, World!' - */ -function removeLeadingAndTrailingWhitespaces(value) { - throw new Error('Not implemented'); -} - -/** - * Returns a string that repeated the specified number of times. - * - * @param {string} value - * @param {string} count - * @return {string} - * - * @example - * 'A', 5 => 'AAAAA' - * 'cat', 3 => 'catcatcat' - */ -function repeatString(value, count) { - throw new Error('Not implemented'); -} - -/** - * Remove the first occurrence of string inside another string - * - * @param {string} str - * @param {string} value - * @return {string} - * - * @example - * 'To be or not to be', 'not' => 'To be or to be' - * 'I like legends', 'end' => 'I like legs', - * 'ABABAB','BA' => 'ABAB' - */ -function removeFirstOccurrences(str, value) { - throw new Error('Not implemented'); -} - -/** - * Remove the first and last angle brackets from tag string - * - * @param {string} str - * @return {string} - * - * @example - * '
' => 'div' - * '' => 'span' - * '' => 'a' - */ -function unbracketTag(str) { - throw new Error('Not implemented'); -} - - -/** - * Converts all characters of the specified string into the upper case - * - * @param {string} str - * @return {string} - * - * @example - * 'Thunderstruck' => 'THUNDERSTRUCK' - * 'abcdefghijklmnopqrstuvwxyz' => 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' - */ -function convertToUpperCase(str) { - throw new Error('Not implemented'); -} - -/** - * Extracts e-mails from single string with e-mails list delimeted by semicolons - * - * @param {string} str - * @return {array} - * - * @example - * 'angus.young@gmail.com;brian.johnson@hotmail.com;bon.scott@yahoo.com' => ['angus.young@gmail.com', 'brian.johnson@hotmail.com', 'bon.scott@yahoo.com'] - * 'info@gmail.com' => ['info@gmail.com'] - */ -function extractEmails(str) { - throw new Error('Not implemented'); -} - -/** - * Returns the string representation of rectangle with specified width and height - * using pseudograhic chars - * - * @param {number} width - * @param {number} height - * @return {string} - * - * @example - * - * '┌────┐\n'+ - * (6,4) => '│ │\n'+ - * '│ │\n'+ - * '└────┘\n' - * - * (2,2) => '┌┐\n'+ - * '└┘\n' - * - * '┌──────────┐\n'+ - * (12,3) => '│ │\n'+ - * '└──────────┘\n' - * - */ -function getRectangleString(width, height) { - throw new Error('Not implemented'); -} - - -/** - * Encode specified string with ROT13 cipher - * See details: https://en.wikipedia.org/wiki/ROT13 - * - * @param {string} str - * @return {string} - * - * @example - * - * 'hello' => 'uryyb' - * 'Why did the chicken cross the road?' => 'Jul qvq gur puvpxra pebff gur ebnq?' - * 'Gb trg gb gur bgure fvqr!' => 'To get to the other side!' - * 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' => 'NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm' - * - */ -function encodeToRot13(str) { - throw new Error('Not implemented'); -} - -/** - * Returns true if the value is string; otherwise false. - * @param {string} value - * @return {boolean} - * - * @example - * isString() => false - * isString(null) => false - * isString([]) => false - * isString({}) => false - * isString('test') => true - * isString(new String('test')) => true - */ -function isString(value) { - throw new Error('Not implemented'); -} - - -/** - * Returns playid card id. - * - * Playing cards inittial deck inclides the cards in the following order: - * - * 'A♣','2♣','3♣','4♣','5♣','6♣','7♣','8♣','9♣','10♣','J♣','Q♣','K♣', - * 'A♦','2♦','3♦','4♦','5♦','6♦','7♦','8♦','9♦','10♦','J♦','Q♦','K♦', - * 'A♥','2♥','3♥','4♥','5♥','6♥','7♥','8♥','9♥','10♥','J♥','Q♥','K♥', - * 'A♠','2♠','3♠','4♠','5♠','6♠','7♠','8♠','9♠','10♠','J♠','Q♠','K♠' - * - * (see https://en.wikipedia.org/wiki/Standard_52-card_deck) - * Function returns the zero-based index of specified card in the initial deck above. - * - * @param {string} value - * @return {number} - * - * @example - * 'A♣' => 0 - * '2♣' => 1 - * '3♣' => 2 - * ... - * 'Q♠' => 50 - * 'K♠' => 51 - */ -function getCardId(value) { - throw new Error('Not implemented'); -} - - -module.exports = { - concatenateStrings: concatenateStrings, - getStringLength: getStringLength, - getStringFromTemplate: getStringFromTemplate, - extractNameFromTemplate: extractNameFromTemplate, - getFirstChar: getFirstChar, - removeLeadingAndTrailingWhitespaces: removeLeadingAndTrailingWhitespaces, - repeatString: repeatString, - removeFirstOccurrences: removeFirstOccurrences, - unbracketTag: unbracketTag, - convertToUpperCase: convertToUpperCase, - extractEmails: extractEmails, - getRectangleString: getRectangleString, - encodeToRot13: encodeToRot13, - isString: isString, - getCardId: getCardId -}; diff --git a/task/02-numbers-tasks.js b/task/02-numbers-tasks.js deleted file mode 100644 index c9ed20208..000000000 --- a/task/02-numbers-tasks.js +++ /dev/null @@ -1,240 +0,0 @@ -'use strict'; - -/******************************************************************************************** - * * - * Plese read the following tutorial before implementing tasks: * - * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Numbers_and_dates * - * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number * - * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math * - * * - ********************************************************************************************/ - - -/** - * Returns an area of a rectangle given by width and heigth. - * - * @param {numder} width - * @param {number} height - * @return {number} - * - * @example: - * 5, 10 => 50 - * 5, 5 => 25 - */ -function getRectangleArea(width, height) { - throw new Error('Not implemented'); -} - - -/** - * Returns a circumference of circle given by radius. - * - * @param {number} radius - * @return {number} - * - * @example: - * 5 => 31.41592653589793 - * 3.14 => 19.729201864543903 - * 0 => 0 - */ -function getCicleCircumference(radius) { - throw new Error('Not implemented'); -} - -/** - * Returns an average of two given numbers. - * - * @param {numder} value1 - * @param {number} value2 - * @return {number} - * - * @example: - * 5, 5 => 5 - * 10, 0 => 5 - * -3, 3 => 0 - */ -function getAverage(value1, value2) { - throw new Error('Not implemented'); -} - -/** - * Returns a distance beetween two points by cartesian coordinates. - * - * @param {number} x1 - * @param {number} y1 - * @param {number} x2 - * @param {number} y2 - * - * @return {number} - * - * @example: - * (0,0) (0,1) => 1 - * (0,0) (1,0) => 1 - * (-5,0) (10,-10) => 18.027756377319946 - */ -function getDistanceBetweenPoints(x1, y1, x2, y2) { - throw new Error('Not implemented'); -} - -/** - * Returns a root of linear equation a*x + b = 0 given by coefficients a and b. - * - * @param {number} a - * @param {number} b - * @return {number} - * - * @example: - * 5*x - 10 = 0 => 2 - * x + 8 = 0 => -8 - * 5*x = 0 => 0 - */ -function getLinearEquationRoot(a, b) { - throw new Error('Not implemented'); -} - - -/** - * Returns an angle (in radians) between two vectors given by xi and yi, coordinates in Cartesian plane - * See details https://en.wikipedia.org/wiki/Euclidean_vector#Representations - * - * @param {number} x1 - * @param {number} y1 - * @param {number} x2 - * @param {number} y2 - * @return {number} - * - * @example: - * (1,0) (0,1) => π/2 - * (0,1) (0,-1) => π - * (0,-1) (1,0) => π/2 - * (0,1) (0,1) => 0 - * (0,1) (1,2) => 0 - */ -function getAngleBetweenVectors(x1, y1, x2, y2) { - throw new Error('Not implemented'); -} - -/** - * Returns a last digit of a integer number. - * - * @param {number} value - * @return {number} - * - * @example: - * 100 => 0 - * 37 => 7 - * 5 => 5 - * 0 => 0 - */ -function getLastDigit(value) { - throw new Error('Not implemented'); -} - - -/** - * Returns a number by given string representation. - * - * @param {string} value - * @return {number} - * - * @example: - * '100' => 100 - * '37' => 37 - * '-525.5' => -525.5 - */ -function parseNumberFromString(value) { - throw new Error('Not implemented'); -} - -/** - * Returns a diagonal length of the rectangular parallelepiped given by its sides a,b,c. - * - * @param {number} a - * @param {number} b - * @param {number} c - * @return {number} - * - * @example: - * 1,1,1 => 1.7320508075688772 - * 3,3,3 => 5.196152422706632 - * 1,2,3 => 3.741657386773941 - */ -function getParallelipidedDiagonal(a,b,c) { - throw new Error('Not implemented'); -} - -/** - * Returns the number rounded to specified power of 10. - * - * @param {number} num - * @param {number} pow - * @return {number} - * - * @example: - * 1234, 0 => 1234 - * 1234, 1 => 1230 - * 1234, 2 => 1200 - * 1234, 3 => 1000 - * 1678, 0 => 1678 - * 1678, 1 => 1680 - * 1678, 2 => 1700 - * 1678, 3 => 2000 - */ -function roundToPowerOfTen(num, pow) { - throw new Error('Not implemented'); -} - -/** - * Returns true is the number is prime; otherwise false. - * See: https://en.wikipedia.org/wiki/Primality_test - * - * @param {number} n - * @return {bool} - * - * @example: - * 4 => false - * 5 => true - * 6 => false - * 7 => true - * 11 => true - * 12 => false - * 16 => false - * 17 => true - */ -function isPrime(n) { - throw new Error('Not implemented'); -} - -/** - * Tries to convert value to number and returns it if conversion was successfull; - * otherwise returns default value passed as a second argument. - * - * @param {any} value - * @param {any} def - * @return {number} - * - * @example - * toNumber(null, 0) => 0 - * toNumber('test', 0) => 0 - * toNumber('1', 0) => 1 - * toNumber(42, 0) => 42 - * toNumber(new Number(42), 0) => 42 - */ -function toNumber(value, def) { - throw new Error('Not implemented'); -} - -module.exports = { - getRectangleArea: getRectangleArea, - getCicleCircumference: getCicleCircumference, - getAverage: getAverage, - getDistanceBetweenPoints: getDistanceBetweenPoints, - getLinearEquationRoot: getLinearEquationRoot, - getAngleBetweenVectors: getAngleBetweenVectors, - getLastDigit: getLastDigit, - parseNumberFromString: parseNumberFromString, - getParallelipidedDiagonal: getParallelipidedDiagonal, - roundToPowerOfTen: roundToPowerOfTen, - isPrime: isPrime, - toNumber: toNumber -}; diff --git a/task/03-date-tasks.js b/task/03-date-tasks.js deleted file mode 100644 index 83c6266bc..000000000 --- a/task/03-date-tasks.js +++ /dev/null @@ -1,107 +0,0 @@ -'use strict'; - -/******************************************************************************************** - * * - * Plese read the following tutorial before implementing tasks: * - * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Numbers_and_dates#Date_object - * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date * - * * - ********************************************************************************************/ - - -/** - * Parses a rfc2822 string date representation into date value - * For rfc2822 date specification refer to : http://tools.ietf.org/html/rfc2822#page-14 - * - * @param {string} value - * @return {date} - * - * @example: - * 'December 17, 1995 03:24:00' => Date() - * 'Tue, 26 Jan 2016 13:48:02 GMT' => Date() - * 'Sun, 17 May 1998 03:00:00 GMT+01' => Date() - */ -function parseDataFromRfc2822(value) { - throw new Error('Not implemented'); -} - -/** - * Parses an ISO 8601 string date representation into date value - * For ISO 8601 date specification refer to : https://en.wikipedia.org/wiki/ISO_8601 - * - * @param {string} value - * @return {date} - * - * @example : - * '2016-01-19T16:07:37+00:00' => Date() - * '2016-01-19T08:07:37Z' => Date() - */ -function parseDataFromIso8601(value) { - throw new Error('Not implemented'); -} - - -/** - * Returns true if specified date is leap year and false otherwise - * Please find algorithm here: https://en.wikipedia.org/wiki/Leap_year#Algorithm - * - * @param {date} date - * @return {bool} - * - * @example : - * Date(1900,1,1) => false - * Date(2000,1,1) => true - * Date(2001,1,1) => false - * Date(2012,1,1) => true - * Date(2015,1,1) => false - */ -function isLeapYear(date) { - throw new Error('Not implemented'); -} - - -/** - * Returns the string represention of the timespan between two dates. - * The format of output string is "HH:mm:ss.sss" - * - * @param {date} startDate - * @param {date} endDate - * @return {string} - * - * @example: - * Date(2000,1,1,10,0,0), Date(2000,1,1,11,0,0) => "01:00:00.000" - * Date(2000,1,1,10,0,0), Date(2000,1,1,10,30,0) => "00:30:00.000" - * Date(2000,1,1,10,0,0), Date(2000,1,1,10,0,20) => "00:00:20.000" - * Date(2000,1,1,10,0,0), Date(2000,1,1,10,0,0,250) => "00:00:00.250" - * Date(2000,1,1,10,0,0), Date(2000,1,1,15,20,10,453) => "05:20:10.453" - */ -function timeSpanToString(startDate, endDate) { - throw new Error('Not implemented'); -} - - -/** - * Returns the angle (in radians) between the hands of an analog clock for the specified Greenwich time. - * If you have problem with solution please read: https://en.wikipedia.org/wiki/Clock_angle_problem - * - * @param {date} date - * @return {number} - * - * @example: - * Date.UTC(2016,2,5, 0, 0) => 0 - * Date.UTC(2016,3,5, 3, 0) => Math.PI/2 - * Date.UTC(2016,3,5,18, 0) => Math.PI - * Date.UTC(2016,3,5,21, 0) => Math.PI/2 - */ -function angleBetweenClockHands(date) { - throw new Error('Not implemented'); -} - - -module.exports = { - parseDataFromRfc2822: parseDataFromRfc2822, - parseDataFromIso8601: parseDataFromIso8601, - isLeapYear: isLeapYear, - timeSpanToString: timeSpanToString, - angleBetweenClockHands: angleBetweenClockHands -}; diff --git a/task/04-arrays-tasks.js b/task/04-arrays-tasks.js deleted file mode 100644 index ff3a4c019..000000000 --- a/task/04-arrays-tasks.js +++ /dev/null @@ -1,598 +0,0 @@ -'use strict'; - -/********************************************************************************************* - * * - * Plese read the following tutorial before implementing tasks: * - * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array * - * * - * NOTE : Please do not use loops! All tasks can be implmeneted using standard Array methods * - * * - *********************************************************************************************/ - - -/** - * Returns an index of the specified element in array or -1 if element is not found - * - * @param {array} arr - * @param {any} value - * @return {number} - * - * @example - * ['Ace', 10, true], 10 => 1 - * ['Array', 'Number', 'string'], 'Date' => -1 - * [0, 1, 2, 3, 4, 5], 5 => 5 - */ -function findElement(arr, value) { - throw new Error('Not implemented'); -} - -/** - * Generates an array of odd numbers of the specified length - * - * @param {number} len - * @return {array} - * - * @example - * 1 => [ 1 ] - * 2 => [ 1, 3 ] - * 5 => [ 1, 3, 5, 7, 9 ] - */ -function generateOdds(len) { - throw new Error('Not implemented'); -} - - -/** - * Returns the doubled array - elements of the specified array are repeated twice using original order - * - * @param {array} arr - * @return {array} - * - * @example - * ['Ace', 10, true] => ['Ace', 10, true, 'Ace', 10, true] - * [0, 1, 2, 3, 4, 5] => [0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5] - * [] => [] - */ -function doubleArray(arr) { - throw new Error('Not implemented'); -} - - -/** - * Returns an array of positive numbers from the specified array in original order - * - * @param {array} arr - * @return {array} - * - * @example - * [ 0, 1, 2, 3, 4, 5 ] => [ 1, 2, 3, 4, 5 ] - * [-1, 2, -5, -4, 0] => [ 2 ] - * [] => [] - */ -function getArrayOfPositives(arr) { - throw new Error('Not implemented'); -} - -/** - * Returns the array with strings only in the specified array (in original order) - * - * @param {array} arr - * @return {array} - * - * @example - * [ 0, 1, 'cat', 3, true, 'dog' ] => [ 'cat', 'dog' ] - * [ 1, 2, 3, 4, 5 ] => [] - * [ 'cat, 'dog', 'raccon' ] => [ 'cat', 'dog', 'racoon' ] - */ -function getArrayOfStrings(arr) { - throw new Error('Not implemented'); -} - -/** - * Removes falsy values from the specified array - * Falsy values: false, null, 0, "", undefined, and NaN. - * (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean#Description) - * - * @param {array} arr - * @return {array} - * - * @example - * [ 0, false, 'cat', NaN, true, '' ] => [ 'cat', true ] - * [ 1, 2, 3, 4, 5, 'false' ] => [ 1, 2, 3, 4, 5, 'false' ] - * [ false, 0, NaN, '', undefined ] => [ ] - */ -function removeFalsyValues(arr) { - throw new Error('Not implemented'); -} - -/** - * Returns the array of useprcase strings from the specified array - * - * @param {array} arr - * @return {array} - * - * @example - * [ 'permanent-internship', 'glutinous-shriek', 'multiplicative-elevation' ] => [ 'PERMANENT-INTERNSHIP', 'GLUTINOUS-SHRIEK', 'MULTIPLICATIVE-ELEVATION' ] - * [ 'a', 'b', 'c', 'd', 'e', 'f', 'g' ] => [ 'A', 'B', 'C', 'D', 'E', 'F', 'G' ] - */ -function getUpperCaseStrings(arr) { - throw new Error('Not implemented'); -} - - -/** - * Returns the array of string lengths from the specified string array. - * - * @param {array} arr - * @return {array} - * - * @example - * [ '', 'a', 'bc', 'def', 'ghij' ] => [ 0, 1, 2, 3, 4 ] - * [ 'angular', 'react', 'ember' ] => [ 7, 5, 5 ] - */ -function getStringsLength(arr) { - throw new Error('Not implemented'); -} - -/** - * Inserts the item into specified array at specified index - * - * @param {array} arr - * @param {any} item - * @param {number} index - * - * @example - * [ 1, 3, 4, 5 ], 2, 1 => [ 1, 2, 3, 4, 5 ] - * [ 1, 'b', 'c'], 0, 'x' => [ 'x', 1, 'b', 'c' ] - */ -function insertItem(arr, item, index) { - throw new Error('Not implemented'); -} - -/** - * Returns the n first items of the specified array - * - * @param {array} arr - * @param {number} n - * - * @example - * [ 1, 3, 4, 5 ], 2 => [ 1, 2 ] - * [ 'a', 'b', 'c', 'd'], 3 => [ 'a', 'b', 'c' ] - */ -function getHead(arr, n) { - throw new Error('Not implemented'); -} - - -/** - * Returns the n last items of the specified array - * - * @param {array} arr - * @param {number} n - * - * @example - * [ 1, 3, 4, 5 ], 2 => [ 4, 5 ] - * [ 'a', 'b', 'c', 'd'], 3 => [ 'b', 'c', 'd' ] - */ -function getTail(arr, n) { - throw new Error('Not implemented'); -} - - -/** - * Returns CSV represebtation of two-dimentional numeric array. - * https://en.wikipedia.org/wiki/Comma-separated_values - * - * @param {array} arr - * @return {string} - * - * @example - * [ - * [ 0, 1, 2, 3, 4 ], - * [ 10,11,12,13,14 ], - * [ 20,21,22,23,24 ], - * [ 30,31,32,33,34 ] - * ] - * => - * '0,1,2,3,4\n' - * +'10,11,12,13,14\n' - * +'20,21,22,23,24\n' - * +'30,31,32,33,34' - */ -function toCsvText(arr) { - throw new Error('Not implemented'); -} - -/** - * Transforms the numeric array into the according array of squares: - * f(x) = x * x - * - * @param {array} arr - * @return {array} - * - * @example - * [ 0, 1, 2, 3, 4, 5 ] => [ 0, 1, 4, 9, 16, 25 ] - * [ 10, 100, -1 ] => [ 100, 10000, 1 ] - */ -function toArrayOfSquares(arr) { - throw new Error('Not implemented'); -} - - -/** - * Transforms the numeric array to the according moving sum array: - * f[n] = x[0] + x[1] + x[2] +...+ x[n] - * or f[n] = f[n-1] + x[n] - * - * @param {array} arr - * @return {array} - * - * Example : - * [ 1, 1, 1, 1, 1 ] => [ 1, 2, 3, 4, 5 ] - * [ 10, -10, 10, -10, 10 ] => [ 10, 0, 10, 0, 10 ] - * [ 0, 0, 0, 0, 0] => [ 0, 0, 0, 0, 0] - * [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ] => [ 1, 3, 6, 10, 15, 21, 28, 36, 45, 55 ] - */ -function getMovingSum(arr) { - throw new Error('Not implemented'); -} - -/** - * Returns every second item from the specified array: - * - * @param {array} arr - * @return {array} - * - * Example : - * [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ] => [ 2, 4, 6, 8, 10 ] - * [ 'a', 'b', 'c' , null ] => [ "b", null ] - * [ "a" ] => [] - */ -function getSecondItems(arr) { - throw new Error('Not implemented'); -} - - -/** - * Propagates every item in sequence its position times - * Returns an array that consists of: one first item, two second items, tree third items etc. - * - * @param {array} arr - * @return {array} - * - * @example : - * [] => [] - * [ 1 ] => [ 1 ] - * [ 'a', 'b' ] => [ 'a', 'b','b' ] - * [ 'a', 'b', 'c', null ] => [ 'a', 'b','b', 'c','c','c', null,null,null,null ] - * [ 1,2,3,4,5 ] => [ 1, 2,2, 3,3,3, 4,4,4,4, 5,5,5,5,5 ] - */ -function propagateItemsByPositionIndex(arr) { - throw new Error('Not implemented'); -} - - -/** - * Returns the 3 largest numbers from the specified array - * - * @param {array} arr - * @return {array} - * - * @example - * [] => [] - * [ 1, 2 ] => [ 2, 1 ] - * [ 1, 2, 3 ] => [ 3, 2, 1 ] - * [ 1,2,3,4,5,6,7,8,9,10 ] => [ 10, 9, 8 ] - * [ 10, 10, 10, 10 ] => [ 10, 10, 10 ] - */ -function get3TopItems(arr) { - throw new Error('Not implemented'); -} - - -/** - * Returns the number of positive numbers from specified array - * - * @param {array} arr - * @return {number} - * - * @example - * [ ] => 0 - * [ -1, 0, 1 ] => 1 - * [ 1, 2, 3] => 3 - * [ null, 1, 'elephant' ] => 1 - * [ 1, '2' ] => 1 - */ -function getPositivesCount(arr) { - throw new Error('Not implemented'); -} - -/** - * Sorts digit names - * - * @param {array} arr - * @return {array} - * - * @example - * [] => [] - * [ 'nine','one' ] => [ 'one', 'nine' ] - * [ 'one','two','three' ] => [ 'one','two', 'three' ] - * [ 'nine','eight','nine','eight'] => [ 'eight','eight','nine','nine'] - * [ 'one','one','one','zero' ] => [ 'zero','one','one','one' ] - */ -function sortDigitNamesByNumericOrder(arr) { - throw new Error('Not implemented'); -} - -/** - * Returns the sum of all items in the specified array of numbers - * - * @param {array} arr - * @return {number} - * - * @example - * [] => 0 - * [ 1, 2, 3 ] => 6 - * [ -1, 1, -1, 1 ] => 0 - * [ 1, 10, 100, 1000 ] => 1111 - */ -function getItemsSum(arr) { - throw new Error('Not implemented'); -} - -/** - * Returns the number of all falsy value in the specified array - * - * @param {array} arr - * @return {array} - * - * @example - * [] => 0 - * [ 1, '', 3 ] => 1 - * [ -1, 'false', null, 0 ] => 2 - * [ null, undefined, NaN, false, 0, '' ] => 6 - */ -function getFalsyValuesCount(arr) { - throw new Error('Not implemented'); -} - -/** - * Returns a number of all occurences of the specified item in an array - * - * @param {array} arr - * @param {any} item - * @return {number} - * - * @example - * [ 0, 0, 1, 1, 1, 2 ], 1 => 3 - * [ 1, 2, 3, 4, 5 ], 0 => 0 - * [ 'a','b','c','c' ], 'c'=> 2 - * [ null, undefined, null ], null => 2 - * [ true, 0, 1, 'true' ], true => 1 - */ -function findAllOccurences(arr, item) { - throw new Error('Not implemented'); -} - -/** - * Concatenates all elements from specified array into single string with ',' delimeter - * - * @param {array} arr - * @return {string} - * - * @example - * [0, false, 'cat', NaN, true, ''] => '0,false,cat,NaN,true,' - * [1, 2, 3, 4, 5] => '1,2,3,4,5' - * ['rock', 'paper', 'scissors'] => 'rock,paper,scissors' - */ -function toStringList(arr) { - throw new Error('Not implemented'); -} - - -/** - * Sorts the specified array by country name first and city name (if countries are equal) in ascending order. - * - * @param {array} arr - * @return {array} - * - * @example - * [ - * { country: 'Russia', city: 'Moscow' }, - * { country: 'Belarus', city: 'Minsk' }, - * { country: 'Poland', city: 'Warsaw' }, - * { country: 'Russia', city: 'Saint Petersburg' }, - * { country: 'Poland', city: 'Krakow' }, - * { country: 'Belarus', city: 'Brest' } - * ] - * => - * [ - * { country: 'Belarus', city: 'Brest' }, - * { country: 'Belarus', city: 'Minsk' }, - * { country: 'Poland', city: 'Krakow' }, - * { country: 'Poland', city: 'Warsaw' }, - * { country: 'Russia', city: 'Moscow' }, - * { country: 'Russia', city: 'Saint Petersburg' } - */ -function sortCitiesArray(arr) { - throw new Error('Not implemented'); -} - -/** - * Creates an indentity matrix of the specified size - * - * @param {number} n - * @return {array} - * - * @example - * 1 => [[1]] - * - * 2 => [[1,0], - * [0,1]] - * - * [[1,0,0,0,0], - * [0,1,0,0,0], - * 5 => [0,0,1,0,0], - * [0,0,0,1,0], - * [0,0,0,0,1]] - */ -function getIdentityMatrix(n) { - throw new Error('Not implemented'); -} - -/** - * Creates an array of integers from the specified start to end (inclusive) - * - * @param {number} start - * @param {number} end - * @return {array} - * - * @example - * 1, 5 => [ 1, 2, 3, 4, 5 ] - * -2, 2 => [ -2, -1, 0, 1, 2 ] - * 0, 100 => [ 0, 1, 2, ..., 100 ] - * 3, 3 => [ 3 ] - */ -function getIntervalArray(start, end) { - throw new Error('Not implemented'); -} - -/** - * Returns array containing only unique values from the specified array. - * - * @param {array} arr - * @return {array} - * - * @example - * [ 1, 2, 3, 3, 2, 1 ] => [ 1, 2, 3 ] - * [ 'a', 'a', 'a', 'a' ] => [ 'a' ] - * [ 1, 1, 2, 2, 3, 3, 4, 4] => [ 1, 2, 3, 4] - */ -function distinct(arr) { - throw new Error('Not implemented'); -} - -/** - * Groups elements of the specified array by key. - * Returns multimap of keys extracted from array elements via keySelector callback - * and values extracted via valueSelector callback. - * See: https://en.wikipedia.org/wiki/Multimap - * - * @param {array} array - * @param {Function} keySelector - * @param {Function} valueSelector - * @return {Map} - * - * @example - * group([ - * { country: 'Belarus', city: 'Brest' }, - * { country: 'Russia', city: 'Omsk' }, - * { country: 'Russia', city: 'Samara' }, - * { country: 'Belarus', city: 'Grodno' }, - * { country: 'Belarus', city: 'Minsk' }, - * { country: 'Poland', city: 'Lodz' } - * ], - * item => item.country, - * item => item.city - * ) - * => - * Map { - * "Belarus" => ["Brest", "Grodno", "Minsk"], - * "Russia" => ["Omsk", "Samara"], - * "Poland" => ["Lodz"] - * } - */ -function group(array, keySelector, valueSelector) { - throw new Error('Not implemented'); -} - - -/** - * Projects each element of the specified array to a sequence and flattens the resulting sequences into one array. - * - * @param {array} arr - * @param {Function} childrenSelector, a transform function to apply to each element that returns an array of children - * @return {array} - * - * @example - * [[1, 2], [3, 4], [5, 6]], (x) => x => [ 1, 2, 3, 4, 5, 6 ] - * ['one','two','three'], x=>x.split('') => ['o','n','e','t','w','o','t','h','r','e','e'] - */ -function selectMany(arr, childrenSelector) { - throw new Error('Not implemented'); -} - - -/** - * Returns an element from the multidimentional array by the specified indexes. - * - * @param {array} arr - * @param {array} indexes - * @return {any} element from array - * - * @example - * [[1, 2], [3, 4], [5, 6]], [0,0] => 1 (arr[0][0]) - * ['one','two','three'], [2] => 'three' (arr[2]) - * [[[ 1, 2, 3]]], [ 0, 0, 1 ] => 2 (arr[0][0][1]) - */ -function getElementByIndexes(arr, indexes) { - throw new Error('Not implemented'); -} - - -/** - * Swaps the head and tail of the specified array: - * the head (first half) of array move to the end, the tail (last half) move to the start. - * The middle element (if exists) leave on the same position. - * - * - * @param {array} arr - * @return {array} - * - * @example - * [ 1, 2, 3, 4, 5 ] => [ 4, 5, 3, 1, 2 ] - * \----/ \----/ - * head tail - * - * [ 1, 2 ] => [ 2, 1 ] - * [ 1, 2, 3, 4, 5, 6, 7, 8 ] => [ 5, 6, 7, 8, 1, 2, 3, 4 ] - * - */ -function swapHeadAndTail(arr) { - throw new Error('Not implemented'); -} - - -module.exports = { - findElement: findElement, - generateOdds: generateOdds, - doubleArray: doubleArray, - getArrayOfPositives: getArrayOfPositives, - getArrayOfStrings: getArrayOfStrings, - removeFalsyValues: removeFalsyValues, - getUpperCaseStrings: getUpperCaseStrings, - getStringsLength: getStringsLength, - insertItem: insertItem, - getHead: getHead, - getTail: getTail, - toCsvText: toCsvText, - toStringList: toStringList, - toArrayOfSquares: toArrayOfSquares, - getMovingSum: getMovingSum, - getSecondItems: getSecondItems, - propagateItemsByPositionIndex: propagateItemsByPositionIndex, - get3TopItems: get3TopItems, - getPositivesCount: getPositivesCount, - sortDigitNamesByNumericOrder: sortDigitNamesByNumericOrder, - getItemsSum: getItemsSum, - getFalsyValuesCount: getFalsyValuesCount, - findAllOccurences: findAllOccurences, - sortCitiesArray: sortCitiesArray, - getIdentityMatrix: getIdentityMatrix, - getIntervalArray: getIntervalArray, - distinct: distinct, - group: group, - selectMany: selectMany, - getElementByIndexes: getElementByIndexes, - swapHeadAndTail: swapHeadAndTail -}; diff --git a/task/05-regex-tasks.js b/task/05-regex-tasks.js deleted file mode 100644 index b1c60f2d4..000000000 --- a/task/05-regex-tasks.js +++ /dev/null @@ -1,129 +0,0 @@ -'use strict'; - -/******************************************************************************************** - * * - * Plese read the following tutorial before implementing tasks: * - * https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions * - * * - ********************************************************************************************/ - - -/** - * Returns the regexp that matches a GUID string representation - * '{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}', - * where X is hexadecimal digit (0,1,2...,9,A,a,B,b,C,c,D,d,F,f) - * - * See more details: https://en.wikipedia.org/wiki/Globally_unique_identifier - * - * Match : - * '{3F2504E0-4F89-41D3-9A0C-0305E82C3301}' - * '{21EC2020-3AEA-4069-A2DD-08002B30309D}' - * '{0c74f13f-fa83-4c48-9b33-68921dd72463}' - * - * Do not match: - * '{D44EF4F4-280B47E5-91C7-261222A59621}' - * '{D1A5279D-B27D-4CD4-A05E-EFDH53D08E8D}' - * '{5EDEB36C-9006-467A8D04-AFB6F62CD7D2}' - * '677E2553DD4D43B09DA77414DB1EB8EA' - * '0c74f13f-fa83-4c48-9b33-68921dd72463' - * 'The roof, the roof, the roof is on fire' - * - * @return {RegExp} - */ -function getRegexForGuid() { - throw new Error('Not implemented'); -} - - -/** - * Returns the regexp that matches all the strings from first column - * but of them from the second - * - * Match : Do not match: - * ----------- -------------- - * 'pit' ' pt' - * 'spot' 'Pot' - * 'spate' 'peat' - * 'slap two' 'part' - * 'respite' - * - * NOTE : the regex lenth should be < 13 - * - * @return {RegExp} - * - */ -function getRegexForPitSpot() { - throw new Error('Not implemented'); -} - - -/** - * Returns the regexp that matches all IPv4 strings in - * 'XX.XX.XX.XX' dotted format where XX is number 0 to 255 - * - * Valid IPv4: Invalid IPv4 - * --------------- ----------------- - * '0.0.0.0' '300.0.0.0' - * '127.0.0.1' '127.0.0.-1' - * '10.10.1.1' '23.24.25.26.27' - * '46.61.155.237' 'Set dns to 8.8.8.8' - * '010.234.015.001' - * - * @return {RegExp} - */ -function getRegexForIPv4() { - throw new Error('Not implemented'); -} - - -/** - * Returns the regexp that matches all SSN (Social Security Number) codes in - * 'XXX-XX-XXXX' format where X is digit, where each group can't be all zeros - * https://en.wikipedia.org/wiki/Social_Security_number - * - * Valid SSN: Invalid SSN - * --------------- ----------------- - * '123-45-6789' '123456789' - * '234-56-2349' '000-56-2349' - * '875-43-0298' '875-00-0298' - * '034-01-0008' '034-01-0000' - * '0S4-H1-HACK' - * @return {RegExp} - */ -function getRegexForSSN() { - throw new Error('Not implemented'); -} - - -/** - * Returns the password validator regex. - * Regex will validate a password to make sure it meets the follwing criteria: - * - At least specified characters long (argument minLength) - * - Contains a lowercase letter - * - Contains an uppercase letter - * - Contains a number - * - Valid passwords will only be alphanumeric characters. - * - * @param {number} minLength - * @return {Regex} - * - * @example - * let validator = getPasswordValidator(6); - * 'password'.match(validator) => false - * 'Pa55Word'.match(validator) => true - * 'PASSw0rd'.match(validator) => true - * 'PASSW0RD'.match(validator) => false - * 'Pa55'.match(validator) => false - */ -function getPasswordValidator(minLength) { - throw new Error('Not implemented'); -} - - -module.exports = { - getRegexForGuid: getRegexForGuid, - getRegexForPitSpot: getRegexForPitSpot, - getRegexForIPv4: getRegexForIPv4, - getRegexForSSN: getRegexForSSN, - getPasswordValidator: getPasswordValidator -}; diff --git a/task/06-conditions-n-loops-tasks.js b/task/06-conditions-n-loops-tasks.js deleted file mode 100644 index 249194c34..000000000 --- a/task/06-conditions-n-loops-tasks.js +++ /dev/null @@ -1,457 +0,0 @@ -'use strict'; - -/************************************************************************************************** - * * - * Plese read the following tutorial before implementing tasks: * - * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Control_flow_and_error_handling * - * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Loops_and_iteration * - * * - **************************************************************************************************/ - - -/** - * Returns the 'Fizz','Buzz' or an original number using the following rules: - * 1) return original number - * 2) but if number multiples of three return 'Fizz' - * 3) for the multiples of five return 'Buzz' - * 4) for numbers which are multiples of both three and five return 'FizzBuzz' - * - * @param {number} num - * @return {any} - * - * @example - * 2 => 2 - * 3 => 'Fizz' - * 5 => 'Buzz' - * 4 => 4 - * 15 => 'FizzBuzz' - * 20 => 'Buzz' - * 21 => 'Fizz' - * - */ -function getFizzBuzz(num) { - throw new Error('Not implemented'); -} - - -/** - * Returns the factorial of the specified integer n. - * - * @param {number} n - * @return {number} - * - * @example: - * 1 => 1 - * 5 => 120 - * 10 => 3628800 - */ -function getFactorial(n) { - throw new Error('Not implemented'); -} - - -/** - * Returns the sum of integer numbers between n1 and n2 (inclusive). - * - * @param {number} n1 - * @param {number} n2 - * @return {number} - * - * @example: - * 1,2 => 3 ( = 1+2 ) - * 5,10 => 45 ( = 5+6+7+8+9+10 ) - * -1,1 => 0 ( = -1 + 0 + 1 ) - */ -function getSumBetweenNumbers(n1, n2) { - throw new Error('Not implemented'); -} - - -/** - * Returns true, if a triangle can be built with the specified sides a,b,c and false in any other ways. - * - * @param {number} a - * @param {number} b - * @param {number} c - * @return {bool} - * - * @example: - * 1,2,3 => false - * 3,4,5 => true - * 10,1,1 => false - * 10,10,10 => true - */ -function isTriangle(a,b,c) { - throw new Error('Not implemented'); -} - - -/** - * Returns true, if two specified axis-aligned rectangles overlap, otherwise false. - * Each rectangle representing by object - * { - * top: 5, - * left: 5, - * width: 20, - * height: 10 - * } - * - * (5;5) - * ------------- - * | | - * | | height = 10 - * ------------- - * width=20 - * - * NOTE: Please use canvas coordinate space (https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API/Tutorial/Drawing_shapes#The_grid), - * it differs from Cartesian coordinate system. - * - * @param {object} rect1 - * @param {object} rect2 - * @return {bool} - * - * @example: - * { top: 0, left: 0, width: 10, height: 10 }, - * { top: 5, left: 5, width: 20, height: 20 } => true - * - * { top: 0, left: 0, width: 10, height: 10 }, - * { top:20, left:20, width: 20, height: 20 } => false - * - */ -function doRectanglesOverlap(rect1, rect2) { - throw new Error('Not implemented'); -} - - -/** - * Returns true, if point lies inside the circle, otherwise false. - * Circle is an object of - * { - * center: { - * x: 5, - * y: 5 - * }, - * radius: 20 - * } - * - * Point is object of - * { - * x: 5, - * y: 5 - * } - * - * @param {object} circle - * @param {object} point - * @return {bool} - * - * @example: - * { center: { x:0, y:0 }, radius:10 }, { x:0, y:0 } => true - * { center: { x:0, y:0 }, radius:10 }, { x:10, y:10 } => false - * - */ -function isInsideCircle(circle, point) { - throw new Error('Not implemented'); -} - - -/** - * Returns the first non repeated char in the specified strings otherwise returns null. - * - * @param {string} str - * @return {string} - * - * @example: - * 'The quick brown fox jumps over the lazy dog' => 'T' - * 'abracadabra' => 'c' - * 'entente' => null - */ -function findFirstSingleChar(str) { - throw new Error('Not implemented'); -} - - -/** - * Returns the string representation of math interval, specified by two points and include / exclude flags. - * See the details: https://en.wikipedia.org/wiki/Interval_(mathematics) - * - * Please take attention, that the smaller number should be the first in the notation - * - * @param {number} a - * @param {number} b - * @param {bool} isStartIncluded - * @param {bool} isEndIncluded - * @return {string} - * - * @example - * 0, 1, true, true => '[0, 1]' - * 0, 1, true, false => '[0, 1)' - * 0, 1, false, true => '(0, 1]' - * 0, 1, false, false => '(0, 1)' - * Smaller number has to be first : - * 5, 3, true, true => '[3, 5]' - * - */ -function getIntervalString(a, b, isStartIncluded, isEndIncluded) { - throw new Error('Not implemented'); -} - - -/** - * Reverse the specified string (put all chars in reverse order) - * - * @param {string} str - * @return {string} - * - * @example: - * 'The quick brown fox jumps over the lazy dog' => 'god yzal eht revo spmuj xof nworb kciuq ehT' - * 'abracadabra' => 'arbadacarba' - * 'rotator' => 'rotator' - * 'noon' => 'noon' - */ -function reverseString(str) { - throw new Error('Not implemented'); -} - - -/** - * Reverse the specified integer number (put all digits in reverse order) - * - * @param {number} num - * @return {number} - * - * @example: - * 12345 => 54321 - * 1111 => 1111 - * 87354 => 45378 - * 34143 => 34143 - */ -function reverseInteger(num) { - throw new Error('Not implemented'); -} - - -/** - * Validates the CCN (credit card number) and return true if CCN is valid - * and false otherwise. - * - * See algorithm here : https://en.wikipedia.org/wiki/Luhn_algorithm - * - * @param {number} cnn - * @return {boolean} - * - * @example: - * 79927398713 => true - * 4012888888881881 => true - * 5123456789012346 => true - * 378282246310005 => true - * 371449635398431 => true - * - * 4571234567890111 => false - * 5436468789016589 => false - * 4916123456789012 => false - */ -function isCreditCardNumber(ccn) { - throw new Error('Not implemented'); -} - - -/** - * Returns the digital root of integer: - * step1 : find sum of all digits - * step2 : if sum > 9 then goto step1 otherwise return the sum - * - * @param {number} n - * @return {number} - * - * @example: - * 12345 ( 1+2+3+4+5 = 15, 1+5 = 6) => 6 - * 23456 ( 2+3+4+5+6 = 20, 2+0 = 2) => 2 - * 10000 ( 1+0+0+0+0 = 1 ) => 1 - * 165536 (1+6+5+5+3+6 = 26, 2+6 = 8) => 8 - */ -function getDigitalRoot(num) { - throw new Error('Not implemented'); -} - - -/** - * Returns true if the specified string has the balanced brackets and false otherwise. - * Balanced means that is, whether it consists entirely of pairs of opening/closing brackets - * (in that order), none of which mis-nest. - * Brackets include [],(),{},<> - * - * @param {string} str - * @return {boolean} - * - * @example: - * '' => true - * '[]' => true - * '{}' => true - * '() => true - * '[[]' => false - * '][' => false - * '[[][][[]]]' => true - * '[[][]][' => false - * '{)' = false - * '{[(<{[]}>)]}' = true - */ -function isBracketsBalanced(str) { - throw new Error('Not implemented'); -} - - -/** - * Returns the human readable string of time period specified by the start and end time. - * The result string should be constrcuted using the folliwing rules: - * - * --------------------------------------------------------------------- - * Difference | Result - * --------------------------------------------------------------------- - * 0 to 45 seconds | a few seconds ago - * 45 to 90 seconds | a minute ago - * 90 seconds to 45 minutes | 2 minutes ago ... 45 minutes ago - * 45 to 90 minutes | an hour ago - * 90 minutes to 22 hours | 2 hours ago ... 22 hours ago - * 22 to 36 hours | a day ago - * 36 hours to 25 days | 2 days ago ... 25 days ago - * 25 to 45 days | a month ago - * 45 to 345 days | 2 months ago ... 11 months ago - * 345 to 545 days (1.5 years) | a year ago - * 546 days+ | 2 years ago ... 20 years ago - * --------------------------------------------------------------------- - * - * @param {Date} startDate - * @param {Date} endDate - * @return {string} - * - * @example - * Date('2000-01-01 01:00:00.100'), Date('2000-01-01 01:00:00.200') => 'a few seconds ago' - * Date('2000-01-01 01:00:00.100'), Date('2000-01-01 01:00:05.000') => '5 minutes ago' - * Date('2000-01-01 01:00:00.100'), Date('2000-01-02 03:00:05.000') => 'a day ago' - * Date('2000-01-01 01:00:00.100'), Date('2015-01-02 03:00:05.000') => '15 years ago' - * - */ -function timespanToHumanString(startDate, endDate) { - throw new Error('Not implemented'); -} - - -/** - * Returns the string with n-ary (binary, ternary, etc, where n<=10) representation of specified number. - * See more about - * https://en.wikipedia.org/wiki/Binary_number - * https://en.wikipedia.org/wiki/Ternary_numeral_system - * https://en.wikipedia.org/wiki/Radix - * - * @param {number} num - * @param {number} n, radix of the result - * @return {string} - * - * @example: - * 1024, 2 => '10000000000' - * 6561, 3 => '100000000' - * 365, 2 => '101101101' - * 365, 3 => '111112' - * 365, 4 => '11231' - * 365, 10 => '365' - */ -function toNaryString(num, n) { - throw new Error('Not implemented'); -} - - -/** - * Returns the commom directory path for specified array of full filenames. - * - * @param {array} pathes - * @return {string} - * - * @example: - * ['/web/images/image1.png', '/web/images/image2.png'] => '/web/images/' - * ['/web/assets/style.css', '/web/scripts/app.js', 'home/setting.conf'] => '' - * ['/web/assets/style.css', '/.bin/mocha', '/read.me'] => '/' - * ['/web/favicon.ico', '/web-scripts/dump', '/webalizer/logs'] => '/' - */ -function getCommonDirectoryPath(pathes) { - throw new Error('Not implemented'); -} - - -/** - * Returns the product of two specified matrixes. - * See details: https://en.wikipedia.org/wiki/Matrix_multiplication - * - * @param {array} m1 - * @param {array} m2 - * @return {array} - * - * @example: - * [[ 1, 0, 0 ], [[ 1, 2, 3 ], [[ 1, 2, 3 ], - * [ 0, 1, 0 ], X [ 4, 5, 6 ], => [ 4, 5, 6 ], - * [ 0, 0, 1 ]] [ 7, 8, 9 ]] [ 7, 8, 9 ]] - * - * [[ 4 ], - * [[ 1, 2, 3]] X [ 5 ], => [[ 32 ]] - * [ 6 ]] - * - */ -function getMatrixProduct(m1, m2) { - throw new Error('Not implemented'); -} - - -/** - * Returns the evaluation of the specified tic-tac-toe position. - * See the details: https://en.wikipedia.org/wiki/Tic-tac-toe - * - * Position is provides as 3x3 array with the following values: 'X','0', undefined - * Function should return who is winner in the current position according to the game rules. - * The result can be: 'X','0',undefined - * - * @param {array} position - * @return {string} - * - * @example - * - * [[ 'X', ,'0' ], - * [ ,'X','0' ], => 'X' - * [ , ,'X' ]] - * - * [[ '0','0','0' ], - * [ ,'X', ], => '0' - * [ 'X', ,'X' ]] - * - * [[ '0','X','0' ], - * [ ,'X', ], => undefined - * [ 'X','0','X' ]] - * - * [[ , , ], - * [ , , ], => undefined - * [ , , ]] - * - */ -function evaluateTicTacToePosition(position) { - throw new Error('Not implemented'); -} - - -module.exports = { - getFizzBuzz: getFizzBuzz, - getFactorial: getFactorial, - getSumBetweenNumbers: getSumBetweenNumbers, - isTriangle: isTriangle, - doRectanglesOverlap: doRectanglesOverlap, - isInsideCircle: isInsideCircle, - findFirstSingleChar: findFirstSingleChar, - getIntervalString : getIntervalString, - reverseString: reverseString, - reverseInteger: reverseInteger, - isCreditCardNumber: isCreditCardNumber, - getDigitalRoot: getDigitalRoot, - isBracketsBalanced: isBracketsBalanced, - timespanToHumanString : timespanToHumanString, - toNaryString: toNaryString, - getCommonDirectoryPath: getCommonDirectoryPath, - getMatrixProduct: getMatrixProduct, - evaluateTicTacToePosition : evaluateTicTacToePosition -}; diff --git a/task/07-yield-tasks.js b/task/07-yield-tasks.js deleted file mode 100644 index 9e88bf9b7..000000000 --- a/task/07-yield-tasks.js +++ /dev/null @@ -1,159 +0,0 @@ -'use strict'; - -/******************************************************************************************** - * * - * Plese read the following tutorial before implementing tasks: * - * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators * - * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/yield * - * * - ********************************************************************************************/ - - -/** - * Returns the lines sequence of "99 Bottles of Beer" song: - * - * '99 bottles of beer on the wall, 99 bottles of beer.' - * 'Take one down and pass it around, 98 bottles of beer on the wall.' - * '98 bottles of beer on the wall, 98 bottles of beer.' - * 'Take one down and pass it around, 97 bottles of beer on the wall.' - * ... - * '1 bottle of beer on the wall, 1 bottle of beer.' - * 'Take one down and pass it around, no more bottles of beer on the wall.' - * 'No more bottles of beer on the wall, no more bottles of beer.' - * 'Go to the store and buy some more, 99 bottles of beer on the wall.' - * - * See the full text at - * http://99-bottles-of-beer.net/lyrics.html - * - * NOTE: Please try to complete this task faster then original song finished: - * https://www.youtube.com/watch?v=Z7bmyjxJuVY :) - * - * - * @return {Iterable.} - * - */ -function* get99BottlesOfBeer() { - throw new Error('Not implemented'); -} - - -/** - * Returns the Fibonacci sequence: - * 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, ... - * - * See more at: https://en.wikipedia.org/wiki/Fibonacci_number - * - * @return {Iterable.} - * - */ -function* getFibonacciSequence() { - throw new Error('Not implemented'); -} - - -/** - * Traverses a tree using the depth-first strategy - * See details: https://en.wikipedia.org/wiki/Depth-first_search - * - * Each node have child nodes in node.children array. - * The leaf nodes do not have 'children' property. - * - * @params {object} root the tree root - * @return {Iterable.} the sequence of all tree nodes in depth-first order - * @example - * - * var node1 = { n:1 }, node2 = { n:2 }, node3 = { n:3 }, node4 = { n:4 }, - * node5 = { n:5 }, node6 = { n:6 }, node7 = { n:7 }, node8 = { n:8 }; - * node1.children = [ node2, node6, node7 ]; - * node2.children = [ node3, node4 ]; - * node4.children = [ node5 ]; - * node7.children = [ node8 ]; - * - * source tree (root = 1): - * 1 - * / | \ - * 2 6 7 - * / \ \ => { 1, 2, 3, 4, 5, 6, 7, 8 } - * 3 4 8 - * | - * 5 - * - * depthTraversalTree(node1) => node1, node2, node3, node4, node5, node6, node7, node8 - * - */ -function* depthTraversalTree(root) { - throw new Error('Not implemented'); -} - - -/** - * Traverses a tree using the breadth-first strategy - * See details: https://en.wikipedia.org/wiki/Breadth-first_search - * - * Each node have child nodes in node.children array. - * The leaf nodes do not have 'children' property. - * - * @params {object} root the tree root - * @return {Iterable.} the sequence of all tree nodes in breadth-first order - * @example - * source tree (root = 1): - * - * 1 - * / | \ - * 2 3 4 - * / \ \ => { 1, 2, 3, 4, 5, 6, 7, 8 } - * 5 6 7 - * | - * 8 - * - */ -function* breadthTraversalTree(root) { - throw new Error('Not implemented'); -} - - -/** - * Merges two yield-style sorted sequences into the one sorted sequence. - * The result sequence consists of sorted items from source iterators. - * - * @params {Iterable.} source1 - * @params {Iterable.} source2 - * @return {Iterable.} the merged sorted sequence - * - * @example - * [ 1, 3, 5, ... ], [2, 4, 6, ... ] => [ 1, 2, 3, 4, 5, 6, ... ] - * [ 0 ], [ 2, 4, 6, ... ] => [ 0, 2, 4, 6, ... ] - * [ 1, 3, 5, ... ], [ -1 ] => [ -1, 1, 3, 5, ...] - */ -function* mergeSortedSequences(source1, source2) { - throw new Error('Not implemented'); -} - -/** - * Resolve Promises and take values step by step. - * - * @params {Iterable.} generator - * @return {Promise} Promise with value returned via return - * - * @example - * async((function*() { - * var a = yield new Promise((resolve)=> setTimeout(()=>resolve(5))); - * var b = yield Promise.resolve(6); - * return a + b; - * }).then(value=>console.log(value)) => 11 - * - * Most popular implementation of the logic in npm https://www.npmjs.com/package/co - */ -function async(generator) { - throw new Error('Not implemented'); -} - - -module.exports = { - get99BottlesOfBeer: get99BottlesOfBeer, - getFibonacciSequence: getFibonacciSequence, - depthTraversalTree: depthTraversalTree, - breadthTraversalTree: breadthTraversalTree, - mergeSortedSequences: mergeSortedSequences, - async : async -}; diff --git a/task/08-objects-tasks.js b/task/08-objects-tasks.js deleted file mode 100644 index 610b1e7b2..000000000 --- a/task/08-objects-tasks.js +++ /dev/null @@ -1,146 +0,0 @@ -'use strict'; - -/************************************************************************************************** - * * - * Plese read the following tutorial before implementing tasks: * - * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer * - * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object * - * * - **************************************************************************************************/ - - -/** - * Returns the rectagle object with width and height parameters and getArea() method - * - * @param {number} width - * @param {number} height - * @return {Object} - * - * @example - * var r = new Rectangle(10,20); - * console.log(r.width); // => 10 - * console.log(r.height); // => 20 - * console.log(r.getArea()); // => 200 - */ -function Rectangle(width, height) { - throw new Error('Not implemented'); -} - - -/** - * Returns the JSON representation of specified object - * - * @param {object} obj - * @return {string} - * - * @example - * [1,2,3] => '[1,2,3]' - * { width: 10, height : 20 } => '{"height":10,"width":20}' - */ -function getJSON(obj) { - throw new Error('Not implemented'); -} - - -/** - * Returns the object of specified type from JSON representation - * - * @param {Object} proto - * @param {string} json - * @return {object} - * - * @example - * var r = fromJSON(Rectangle.prototype, '{"width":10, "height":20}'); - * - */ -function fromJSON(proto, json) { - throw new Error('Not implemented'); -} - - -/** - * Css selectors builder - * - * Each complex selector can consists of type, id, class, attribute, pseudo-class and pseudo-element selectors: - * - * element#id.class[attr]:pseudoClass::pseudoElement - * \----/\----/\----------/ - * Can be several occurences - * - * All types of selectors can be combined using the combinators ' ','+','~','>' . - * - * The task is to design a single class, independent classes or classes hierarchy and implement the functionality - * to build the css selectors using the provided cssSelectorBuilder. - * Each selector should have the stringify() method to output the string repsentation according to css specification. - * - * Provided cssSelectorBuilder should be used as facade only to create your own classes, - * for example the first method of cssSelectorBuilder can be like this: - * element: function(value) { - * return new MySuperBaseElementSelector(...)... - * }, - * - * The design of class(es) is totally up to you, but try to make it as simple, clear and readable as possible. - * - * @example - * - * var builder = cssSelectorBuilder; - * - * builder.id('main').class('container').class('editable').stringify() => '#main.container.editable' - * - * builder.element('a').attr('href$=".png"').pseudoClass('focus').stringify() => 'a[href$=".png"]:focus' - * - * builder.combine( - * builder.element('div').id('main').class('container').class('draggable'), - * '+', - * builder.combine( - * builder.element('table').id('data'), - * '~', - * builder.combine( - * builder.element('tr').pseudoClass('nth-of-type(even)'), - * ' ', - * builder.element('td').pseudoClass('nth-of-type(even)') - * ) - * ) - * ).stringify() => 'div#main.container.draggable + table#data ~ tr:nth-of-type(even) td:nth-of-type(even)' - * - * For more examples see unit tests. - */ - -const cssSelectorBuilder = { - - element: function(value) { - throw new Error('Not implemented'); - }, - - id: function(value) { - throw new Error('Not implemented'); - }, - - class: function(value) { - throw new Error('Not implemented'); - }, - - attr: function(value) { - throw new Error('Not implemented'); - }, - - pseudoClass: function(value) { - throw new Error('Not implemented'); - }, - - pseudoElement: function(value) { - throw new Error('Not implemented'); - }, - - combine: function(selector1, combinator, selector2) { - throw new Error('Not implemented'); - }, -}; - - -module.exports = { - Rectangle: Rectangle, - getJSON: getJSON, - fromJSON: fromJSON, - cssSelectorBuilder: cssSelectorBuilder -}; diff --git a/task/09-functions-n-closures-tasks.js b/task/09-functions-n-closures-tasks.js index 6ba9dcedd..236cbed41 100644 --- a/task/09-functions-n-closures-tasks.js +++ b/task/09-functions-n-closures-tasks.js @@ -26,7 +26,7 @@ * */ function getComposition(f,g) { - throw new Error('Not implemented'); + return (x)=>f(g(x)); } @@ -47,7 +47,7 @@ function getComposition(f,g) { * */ function getPowerFunction(exponent) { - throw new Error('Not implemented'); + return (x)=> Math.pow(x,exponent); } @@ -65,7 +65,14 @@ function getPowerFunction(exponent) { * getPolynom() => null */ function getPolynom() { - throw new Error('Not implemented'); + if(arguments.length==0) return null; + return (x)=>{ + let result=0; + for(let i=0; i the same random number (next run, returns the previous cached result) */ function memoize(func) { - throw new Error('Not implemented'); + + let cache=undefined; + function closure(){ + if (cache === undefined) return cache=func(); + else return cache; + } + return closure; } @@ -104,7 +117,16 @@ function memoize(func) { * retryer() => 2 */ function retry(func, attempts) { - throw new Error('Not implemented'); + return function attempt(){ + while(attempts>0){ + try{ + return func(); + }catch(error){ + attempts--; + } + } + throw new Error("fulyError"); + } } @@ -132,7 +154,13 @@ function retry(func, attempts) { * */ function logger(func, logFunc) { - throw new Error('Not implemented'); + return function () { + const str = `${func.name}(${JSON.stringify([...arguments]).slice(1, -1)}) `; + logFunc(str + 'starts'); + const result = func.apply(null, arguments); + logFunc(str + 'ends'); + return result; + }; } @@ -150,7 +178,11 @@ function logger(func, logFunc) { * partialUsingArguments(fn, 'a','b','c','d')() => 'abcd' */ function partialUsingArguments(fn) { - throw new Error('Not implemented'); + let result = Array.from([...arguments]).slice(1); + return function(){ + result += [...arguments]; + return result.replace(/[\s.,%]/g, ''); + } } @@ -171,11 +203,15 @@ function partialUsingArguments(fn) { * getId10() => 11 */ function getIdGeneratorFunction(startFrom) { - throw new Error('Not implemented'); + let count=arguments[0]; + return ()=>{ + count++; + return count-1; + } } -module.exports = { +module.exports = { getComposition: getComposition, getPowerFunction: getPowerFunction, getPolynom: getPolynom, diff --git a/task/package.json b/task/package.json new file mode 100644 index 000000000..9ad27a858 --- /dev/null +++ b/task/package.json @@ -0,0 +1,12 @@ +{ + "name": "task", + "version": "1.0.0", + "description": "", + "main": "01-strings-tasks.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC" +}