From 9c3473127082db88280658e4010856f1bc0790d2 Mon Sep 17 00:00:00 2001 From: Frank Thelen Date: Mon, 19 Aug 2019 15:35:27 +0200 Subject: [PATCH] dependency update // adopt new airbnb linting rules --- README.md | 42 ++-- package-lock.json | 429 ++++++++++++++++++++--------------- package.json | 14 +- src/ConflictResolution.js | 6 +- src/Rools.js | 4 +- test/activationGroup.spec.js | 8 +- test/classes.spec.js | 6 +- test/errors.spec.js | 2 +- test/extend.spec.js | 10 +- test/longer.spec.js | 20 +- test/premises.spec.js | 26 +-- test/priority.spec.js | 6 +- test/refraction.spec.js | 4 +- test/rules/availability.js | 6 +- test/rules/mood.js | 12 +- test/specificity.spec.js | 18 +- test/strategy.spec.js | 18 +- test/withdraw.spec.js | 4 +- 18 files changed, 343 insertions(+), 292 deletions(-) diff --git a/README.md b/README.md index 1a47be9..095342f 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,7 @@ const facts = { // rules const ruleMoodGreat = new Rule({ name: 'mood is great if 200 stars or more', - when: facts => facts.user.stars >= 200, + when: (facts) => facts.user.stars >= 200, then: (facts) => { facts.user.mood = 'great'; }, @@ -59,9 +59,9 @@ const ruleMoodGreat = new Rule({ const ruleGoWalking = new Rule({ name: 'go for a walk if mood is great and the weather is fine', when: [ - facts => facts.user.mood === 'great', - facts => facts.weather.temperature >= 20, - facts => !facts.weather.rainy, + (facts) => facts.user.mood === 'great', + (facts) => facts.weather.temperature >= 20, + (facts) => !facts.weather.rainy, ], then: (facts) => { facts.goWalking = true; @@ -125,7 +125,7 @@ Example: asynchronous action using async/await ```javascript const rule = new Rule({ name: 'check availability', - when: facts => facts.user.address.country === 'germany', + when: (facts) => facts.user.address.country === 'germany', then: async (facts) => { facts.products = await availabilityCheck(facts.user.address); }, @@ -136,8 +136,8 @@ Example: asynchronous action using promises ```javascript const rule = new Rule({ name: 'check availability', - when: facts => facts.user.address.country === 'germany', - then: facts => + when: (facts) => facts.user.address.country === 'germany', + then: (facts) => availabilityCheck(facts.user.address) .then((result) => { facts.products = result; @@ -155,13 +155,13 @@ Example: extended rule ```javascript const baseRule = new Rule({ name: 'user lives in Germany', - when: facts => facts.user.address.country === 'germany', + when: (facts) => facts.user.address.country === 'germany', ... }); const extendedRule = new Rule({ name: 'user lives in Hamburg, Germany', extend: baseRule, // can also be an array of rules - when: facts => facts.user.address.city === 'hamburg', + when: (facts) => facts.user.address.city === 'hamburg', ... }); ``` @@ -208,7 +208,7 @@ Both options are working fine. Example 1: by reference ```javascript -const isApplicable = facts => facts.user.salery >= 2000; +const isApplicable = (facts) => facts.user.salery >= 2000; const rule1 = new Rule({ when: [ isApplicable, @@ -229,14 +229,14 @@ Example 2: repeat premise ```javascript const rule1 = new Rule({ when: [ - facts => facts.user.salery >= 2000, + (facts) => facts.user.salery >= 2000, ... ], ... }); const rule2 = new Rule({ when: [ - facts => facts.user.salery >= 2000, + (facts) => facts.user.salery >= 2000, ... ], ... @@ -249,14 +249,14 @@ For example: ```javascript // this version works... const rule = new Rule({ - when: facts => facts.user.salery >= 2000 && facts.user.age > 25, + when: (facts) => facts.user.salery >= 2000 && facts.user.age > 25, ... }); // however, it's better to write it like this... const rule = new Rule({ when: [ - facts => facts.user.salery >= 2000, - facts => facts.user.age > 25, + (facts) => facts.user.salery >= 2000, + (facts) => facts.user.age > 25, ], ... }); @@ -270,12 +270,12 @@ Later on, at evaluation time (`evaluate()`), both rules are clearly identical. ```javascript let value = 2000; const rule1 = new Rule({ - when: facts => facts.user.salery >= value, + when: (facts) => facts.user.salery >= value, ... }); value = 3000; const rule2 = new Rule({ - when: facts => facts.user.salery >= value, + when: (facts) => facts.user.salery >= value, ... }); ``` @@ -348,7 +348,7 @@ Example: const { Rools, Rule } = require('rools'); const ruleMoodGreat = new Rule({ name: 'mood is great if 200 stars or more', - when: facts => facts.user.stars >= 200, + when: (facts) => facts.user.stars >= 200, then: (facts) => { facts.user.mood = 'great'; }, @@ -356,9 +356,9 @@ const ruleMoodGreat = new Rule({ const ruleGoWalking = new Rule({ name: 'go for a walk if mood is great and the weather is fine', when: [ - facts => facts.user.mood === 'great', - facts => facts.weather.temperature >= 20, - facts => !facts.weather.rainy, + (facts) => facts.user.mood === 'great', + (facts) => facts.weather.temperature >= 20, + (facts) => !facts.weather.rainy, ], then: (facts) => { facts.goWalking = true; diff --git a/package-lock.json b/package-lock.json index 2e22211..75ef319 100644 --- a/package-lock.json +++ b/package-lock.json @@ -131,9 +131,9 @@ } }, "@sinonjs/samsam": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-3.3.1.tgz", - "integrity": "sha512-wRSfmyd81swH0hA1bxJZJ57xr22kC07a1N4zuIL47yTS04bDk6AoCkczcqHEjcRPmJ+FruGJ9WBQiJwMtIElFw==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-3.3.2.tgz", + "integrity": "sha512-ILO/rR8LfAb60Y1Yfp9vxfYAASK43NFC2mLzpvLUbCQY/Qu8YwReboseu8aheCEkyElZF2L2T9mHcR2bgdvZyA==", "dev": true, "requires": { "@sinonjs/commons": "^1.0.2", @@ -148,9 +148,9 @@ "dev": true }, "acorn": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.2.0.tgz", - "integrity": "sha512-8oe72N3WPMjA+2zVG71Ia0nXZ8DpQH+QyyHO+p06jT8eg8FGG3FbcUIi8KziHlAfheJQZeoqbvq1mQSQHXKYLw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.0.0.tgz", + "integrity": "sha512-PaF/MduxijYYt7unVGRuds1vBC9bFxbNf+VWqhOClfdgy7RlVkQqt610ig1/yxTgsDIfW1cWDel5EBbOy3jdtQ==", "dev": true }, "acorn-jsx": { @@ -160,9 +160,9 @@ "dev": true }, "ajv": { - "version": "6.10.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.1.tgz", - "integrity": "sha512-w1YQaVGNC6t2UCPjEawK/vo/dG8OOrVtUmhBT1uJJYxbl5kU2Tj3v6LGqBcsysN1yhuCStJCCA3GqdvKY8sqXQ==", + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", "dev": true, "requires": { "fast-deep-equal": "^2.0.1", @@ -178,10 +178,13 @@ "dev": true }, "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.2.1.tgz", + "integrity": "sha512-Cg3ymMAdN10wOk/VYfLV7KCQyv7EDirJ64500sU7n9UlmioEtDuU5Gd+hj73hXSU/ex7tHJSssmyftDdkMLO8Q==", + "dev": true, + "requires": { + "type-fest": "^0.5.2" + } }, "ansi-regex": { "version": "3.0.0", @@ -401,12 +404,12 @@ "dev": true }, "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "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": "^2.0.0" + "restore-cursor": "^3.1.0" } }, "cli-width": { @@ -476,9 +479,9 @@ "dev": true }, "confusing-browser-globals": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.7.tgz", - "integrity": "sha512-cgHI1azax5ATrZ8rJ+ODDML9Fvu67PimB6aNxBrc/QwSaDaM9eTfIEUHx3bBLJJ82ioSb+/5zfsMCCEJax3ByQ==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.8.tgz", + "integrity": "sha512-lI7asCibVJ6Qd3FGU7mu4sfG4try4LX3+GVS+Gv8UlrEf2AeW57piecapnog2UHZSbcX/P/1UDWVaTsblowlZg==", "dev": true }, "contains-path": { @@ -511,13 +514,13 @@ "dev": true }, "coveralls": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-3.0.4.tgz", - "integrity": "sha512-eyqUWA/7RT0JagiL0tThVhjbIjoiEUyWCjtUJoOPcWoeofP5WK/jb2OJYoBFrR6DvplR+AxOyuBqk4JHkk5ykA==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-3.0.6.tgz", + "integrity": "sha512-Pgh4v3gCI4T/9VijVrm8Ym5v0OgjvGLKj3zTUwkvsCiwqae/p6VLzpsFNjQS2i6ewV7ef+DjFJ5TSKxYt/mCrA==", "dev": true, "requires": { "growl": "~> 1.10.0", - "js-yaml": "^3.11.0", + "js-yaml": "^3.13.1", "lcov-parse": "^0.0.10", "log-driver": "^1.2.7", "minimist": "^1.2.0", @@ -676,27 +679,28 @@ } }, "es-abstract": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.12.0.tgz", - "integrity": "sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", + "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", "dev": true, "requires": { - "es-to-primitive": "^1.1.1", + "es-to-primitive": "^1.2.0", "function-bind": "^1.1.1", - "has": "^1.0.1", - "is-callable": "^1.1.3", - "is-regex": "^1.0.4" + "has": "^1.0.3", + "is-callable": "^1.1.4", + "is-regex": "^1.0.4", + "object-keys": "^1.0.12" } }, "es-to-primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", - "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", + "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", "dev": true, "requires": { - "is-callable": "^1.1.1", + "is-callable": "^1.1.4", "is-date-object": "^1.0.1", - "is-symbol": "^1.0.1" + "is-symbol": "^1.0.2" } }, "es6-error": { @@ -712,9 +716,9 @@ "dev": true }, "eslint": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.0.1.tgz", - "integrity": "sha512-DyQRaMmORQ+JsWShYsSg4OPTjY56u1nCjAmICrE8vLWqyLKxhFXOthwMj1SA8xwfrv0CofLNVnqbfyhwCkaO0w==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.2.0.tgz", + "integrity": "sha512-sS0SZwm5UAoI83F+cgdomz0cBNPs+AnRvEboNYeWvrZ8UcDHCu/5muocwoDL2TkHq9skkP0GvZjmwI8HG7S3sw==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -723,45 +727,69 @@ "cross-spawn": "^6.0.5", "debug": "^4.0.1", "doctrine": "^3.0.0", - "eslint-scope": "^4.0.3", - "eslint-utils": "^1.3.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^6.0.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^1.4.0", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.1.0", "esquery": "^1.0.1", "esutils": "^2.0.2", "file-entry-cache": "^5.0.1", "functional-red-black-tree": "^1.0.1", - "glob-parent": "^3.1.0", + "glob-parent": "^5.0.0", "globals": "^11.7.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", - "inquirer": "^6.2.2", + "inquirer": "^6.4.1", "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.11", + "lodash": "^4.17.14", "minimatch": "^3.0.4", "mkdirp": "^0.5.1", "natural-compare": "^1.4.0", "optionator": "^0.8.2", "progress": "^2.0.0", "regexpp": "^2.0.1", - "semver": "^5.5.1", - "strip-ansi": "^4.0.0", - "strip-json-comments": "^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" + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "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 + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } } }, "eslint-config-airbnb-base": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-13.2.0.tgz", - "integrity": "sha512-1mg/7eoB4AUeB0X1c/ho4vb2gYkNH8Trr/EgCT/aGmKhhG+F6vF5s8+iRBlWAzFIAphxIdp3YfEKgEl0f9Xg+w==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.0.0.tgz", + "integrity": "sha512-2IDHobw97upExLmsebhtfoD3NAKhV4H0CJWP3Uprd/uk+cHuWYOczPVxQ8PxLFUAw7o3Th1RAU8u1DoUpr+cMA==", "dev": true, "requires": { - "confusing-browser-globals": "^1.0.5", + "confusing-browser-globals": "^1.0.7", "object.assign": "^4.1.0", "object.entries": "^1.1.0" } @@ -794,9 +822,9 @@ } }, "eslint-module-utils": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.4.0.tgz", - "integrity": "sha512-14tltLm38Eu3zS+mt0KvILC3q8jyIAH518MlG+HO0p+yK885Lb1UHTY/UgR91eOyGdmxAPb+OLoW4znqIT6Ndw==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.4.1.tgz", + "integrity": "sha512-H6DOj+ejw7Tesdgbfs4jeS4YMFrT8uI8xwd1gtQqXssaR0EQ26L+2O/w6wkYFy2MymON0fTwHmXBvvfLNZVZEw==", "dev": true, "requires": { "debug": "^2.6.8", @@ -821,9 +849,9 @@ } }, "eslint-plugin-import": { - "version": "2.18.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.18.0.tgz", - "integrity": "sha512-PZpAEC4gj/6DEMMoU2Df01C5c50r7zdGIN52Yfi7CvvWaYssG7Jt5R9nFG5gmqodxNOz9vQS87xk6Izdtpdrig==", + "version": "2.18.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.18.2.tgz", + "integrity": "sha512-5ohpsHAiUBRNaBWAF08izwUGlbrJoJJ+W9/TBwsGoR1MnlgfwMIKrFeSjWbt6moabiXW9xNvtFz+97KHRfI4HQ==", "dev": true, "requires": { "array-includes": "^3.0.3", @@ -833,8 +861,8 @@ "eslint-import-resolver-node": "^0.3.2", "eslint-module-utils": "^2.4.0", "has": "^1.0.3", - "lodash": "^4.17.11", "minimatch": "^3.0.4", + "object.values": "^1.1.0", "read-pkg-up": "^2.0.0", "resolve": "^1.11.0" }, @@ -879,9 +907,9 @@ "dev": true }, "eslint-scope": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", - "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", + "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", "dev": true, "requires": { "esrecurse": "^4.1.0", @@ -889,26 +917,29 @@ } }, "eslint-utils": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.3.1.tgz", - "integrity": "sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q==", - "dev": true + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.0.tgz", + "integrity": "sha512-7ehnzPaP5IIEh1r1tkjuIrxqhNkzUJa9z3R92tLJdZIVdWaczEhr3EbhGtsMrVxi1KeR8qA7Off6SWc5WNQqyQ==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.0.0" + } }, "eslint-visitor-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", + "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", "dev": true }, "espree": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-6.0.0.tgz", - "integrity": "sha512-lJvCS6YbCn3ImT3yKkPe0+tJ+mH6ljhGNjHQH9mRtiO6gjhVAOhVXW1yjnwqGwTkK3bGbye+hb00nFNmu0l/1Q==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.1.0.tgz", + "integrity": "sha512-boA7CHRLlVWUSg3iL5Kmlt/xT3Q+sXnKoRYYzj1YeM10A76TEJBbotV5pKbnK42hEUIr121zTv+QLRM5LsCPXQ==", "dev": true, "requires": { - "acorn": "^6.0.7", + "acorn": "^7.0.0", "acorn-jsx": "^5.0.0", - "eslint-visitor-keys": "^1.0.0" + "eslint-visitor-keys": "^1.1.0" } }, "esprima": { @@ -936,9 +967,9 @@ } }, "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true }, "esutils": { @@ -1004,9 +1035,9 @@ "dev": true }, "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.0.0.tgz", + "integrity": "sha512-HKri+WoWoUgr83pehn/SIgLOMZ9nAWC6dcGj26RY2R4F50u4+RTUz0RCrUlOV3nKRAICW1UGzyb+kcX2qK1S/g==", "dev": true, "requires": { "escape-string-regexp": "^1.0.5" @@ -1231,24 +1262,12 @@ } }, "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.0.0.tgz", + "integrity": "sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg==", "dev": true, "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } + "is-glob": "^4.0.1" } }, "globals": { @@ -1406,22 +1425,22 @@ "dev": true }, "inquirer": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.0.tgz", - "integrity": "sha512-scfHejeG/lVZSpvCXpsB4j/wQNPM5JC8kiElOI0OUTwmc1RTpXr4H32/HOlQHcZiYl2z2VElwuCVDRG8vFmbnA==", + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.1.tgz", + "integrity": "sha512-uxNHBeQhRXIoHWTSNYUFhQVrHYFThIt6IVo2fFmSe8aBwdR3/w6b58hJpiL/fMukFkvGzjg+hSxFtwvVmKZmXw==", "dev": true, "requires": { - "ansi-escapes": "^3.2.0", + "ansi-escapes": "^4.2.1", "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", + "cli-cursor": "^3.1.0", "cli-width": "^2.0.0", "external-editor": "^3.0.3", - "figures": "^2.0.0", - "lodash": "^4.17.12", - "mute-stream": "0.0.7", + "figures": "^3.0.0", + "lodash": "^4.17.15", + "mute-stream": "0.0.8", "run-async": "^2.2.0", "rxjs": "^6.4.0", - "string-width": "^2.1.0", + "string-width": "^4.1.0", "strip-ansi": "^5.1.0", "through": "^2.3.6" }, @@ -1432,6 +1451,29 @@ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "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.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.1.0.tgz", + "integrity": "sha512-NrX+1dVVh+6Y9dnQ19pR0pP4FiEIlUvdTGn8pw6CKTNq5sgib2nIhmUNT5TAmhWmvKr3WcxBcP3E8nWezuipuQ==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^5.2.0" + } + }, "strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", @@ -1515,10 +1557,13 @@ "dev": true }, "is-symbol": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", - "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", - "dev": true + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", + "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "dev": true, + "requires": { + "has-symbols": "^1.0.0" + } }, "is-typedarray": { "version": "1.0.0", @@ -1758,9 +1803,9 @@ } }, "lodash": { - "version": "4.17.14", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.14.tgz", - "integrity": "sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw==" + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" }, "lodash.flattendeep": { "version": "4.4.0", @@ -1784,9 +1829,9 @@ } }, "lolex": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-4.0.1.tgz", - "integrity": "sha512-UHuOBZ5jjsKuzbB/gRNNW8Vg8f00Emgskdq2kvZxgBJCS0aqquAuXai/SkWORlKeZEiNQWZjFZOqIUcH9LqKCw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-4.2.0.tgz", + "integrity": "sha512-gKO5uExCXvSm6zbF562EvM+rd1kQDnB9AZBbiQVzf1ZmdDpxUSvpnAaVOP83N/31mRK8Ml8/VE8DMvsAZQ+7wg==", "dev": true }, "lru-cache": { @@ -1888,9 +1933,9 @@ } }, "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true }, "minimatch": { @@ -1926,9 +1971,9 @@ } }, "mocha": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-6.1.4.tgz", - "integrity": "sha512-PN8CIy4RXsIoxoFJzS4QNnCH4psUCPWc4/rPrst/ecSJJbLBkubMiyGCP2Kj/9YnWbotFqAoeXyXMucj7gwCFg==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-6.2.0.tgz", + "integrity": "sha512-qwfFgY+7EKAAUAdv7VYMZQknI7YJSGesxHyhn6qD52DV8UcSZs5XwCifcZGMVIE4a5fbmhvbotxC0DLQ0oKohQ==", "dev": true, "requires": { "ansi-colors": "3.2.3", @@ -1974,16 +2019,6 @@ "locate-path": "^3.0.0" } }, - "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" - } - }, "locate-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", @@ -1995,9 +2030,9 @@ } }, "p-limit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", + "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", "dev": true, "requires": { "p-try": "^2.0.0" @@ -2018,6 +2053,12 @@ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, "supports-color": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", @@ -2036,9 +2077,9 @@ "dev": true }, "mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, "natural-compare": { @@ -2066,24 +2107,16 @@ "dev": true }, "nise": { - "version": "1.4.10", - "resolved": "https://registry.npmjs.org/nise/-/nise-1.4.10.tgz", - "integrity": "sha512-sa0RRbj53dovjc7wombHmVli9ZihXbXCQ2uH3TNm03DyvOSIQbxg+pbqDKrk2oxMK1rtLGVlKxcB9rrc6X5YjA==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/nise/-/nise-1.5.1.tgz", + "integrity": "sha512-edFWm0fsFG2n318rfEnKlTZTkjlbVOFF9XIA+fj+Ed+Qz1laYW2lobwavWoMzGrYDHH1EpiNJgDfvGnkZztR/g==", "dev": true, "requires": { - "@sinonjs/formatio": "^3.1.0", + "@sinonjs/formatio": "^3.2.1", "@sinonjs/text-encoding": "^0.7.1", "just-extend": "^4.0.2", - "lolex": "^2.3.2", + "lolex": "^4.1.0", "path-to-regexp": "^1.7.0" - }, - "dependencies": { - "lolex": { - "version": "2.7.5", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.7.5.tgz", - "integrity": "sha512-l9x0+1offnKKIzYVjyXU2SiwhXDLekRzKyhnbyldPHvC7BvLPVpdNUNR2KeMAiCN2D/kLNttZgQD5WjSxuBx3Q==", - "dev": true - } } }, "node-environment-flags": { @@ -2208,9 +2241,9 @@ "dev": true }, "object-keys": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", - "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==", + "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": { @@ -2247,6 +2280,18 @@ "es-abstract": "^1.5.1" } }, + "object.values": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.0.tgz", + "integrity": "sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.12.0", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -2257,12 +2302,12 @@ } }, "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "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": "^1.0.0" + "mimic-fn": "^2.1.0" } }, "optimist": { @@ -2398,12 +2443,6 @@ "error-ex": "^1.2.0" } }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true - }, "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", @@ -2500,9 +2539,9 @@ "dev": true }, "psl": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.2.0.tgz", - "integrity": "sha512-GEn74ZffufCmkDDLNcl3uuyF/aSD6exEyh1v/ZSdAomB82t6G9hzJVRx0jBmLDW+VfZqks3aScmMw9DszwUalA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.3.0.tgz", + "integrity": "sha512-avHdspHO+9rQTLbv1RO+MPYeP/SzsCoxofjVnHanETfQhTJrmB0HlDoW+EiN/R+C0BZ+gERab9NY0lPN2TxNag==", "dev": true }, "pump": { @@ -2619,12 +2658,12 @@ "dev": true }, "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "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": "^2.0.0", + "onetime": "^5.1.0", "signal-exit": "^3.0.2" } }, @@ -2701,17 +2740,17 @@ "dev": true }, "sinon": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.3.2.tgz", - "integrity": "sha512-thErC1z64BeyGiPvF8aoSg0LEnptSaWE7YhdWWbWXgelOyThent7uKOnnEh9zBxDbKixtr5dEko+ws1sZMuFMA==", + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.4.1.tgz", + "integrity": "sha512-7s9buHGHN/jqoy/v4bJgmt0m1XEkCEd/tqdHXumpBp0JSujaT4Ng84JU5wDdK4E85ZMq78NuDe0I3NAqXY8TFg==", "dev": true, "requires": { "@sinonjs/commons": "^1.4.0", "@sinonjs/formatio": "^3.2.1", - "@sinonjs/samsam": "^3.3.1", + "@sinonjs/samsam": "^3.3.2", "diff": "^3.5.0", - "lolex": "^4.0.1", - "nise": "^1.4.10", + "lolex": "^4.2.0", + "nise": "^1.5.1", "supports-color": "^5.5.0" } }, @@ -2839,9 +2878,9 @@ "dev": true }, "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", + "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==", "dev": true }, "supports-color": { @@ -2854,13 +2893,13 @@ } }, "table": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.1.tgz", - "integrity": "sha512-E6CK1/pZe2N75rGZQotFOdmzWQ1AILtgYbMAbAjvms0S1l5IDB47zG3nCnFGB/w+7nB3vKofbLXCH7HPBo864w==", + "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.9.1", - "lodash": "^4.17.11", + "ajv": "^6.10.2", + "lodash": "^4.17.14", "slice-ansi": "^2.1.0", "string-width": "^3.0.0" }, @@ -3095,6 +3134,12 @@ "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true }, + "type-fest": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.5.2.tgz", + "integrity": "sha512-DWkS49EQKVX//Tbupb9TFa19c7+MK1XmzkrZUR8TAktmE/DizXoaoJV6TZ/tSIPXipqNiRI6CyAe7x69Jb6RSw==", + "dev": true + }, "uglify-js": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.0.tgz", @@ -3135,6 +3180,12 @@ "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", "dev": true }, + "v8-compile-cache": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", + "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==", + "dev": true + }, "validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -3408,9 +3459,9 @@ } }, "p-limit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", + "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", "dev": true, "requires": { "p-try": "^2.0.0" diff --git a/package.json b/package.json index 1ac0578..47a941e 100644 --- a/package.json +++ b/package.json @@ -30,20 +30,20 @@ "devDependencies": { "chai": "^4.2.0", "chai-as-promised": "^7.1.1", - "coveralls": "^3.0.4", - "eslint": "^6.0.1", - "eslint-config-airbnb-base": "^13.2.0", - "eslint-plugin-import": "^2.18.0", + "coveralls": "^3.0.6", + "eslint": "^6.2.0", + "eslint-config-airbnb-base": "^14.0.0", + "eslint-plugin-import": "^2.18.2", "eslint-plugin-promise": "^4.2.1", "eslint-plugin-should-promised": "^2.0.0", - "mocha": "^6.1.4", + "mocha": "^6.2.0", "nyc": "^14.1.1", - "sinon": "^7.3.2", + "sinon": "^7.4.1", "sinon-chai": "^3.3.0" }, "dependencies": { "arrify": "^2.0.1", - "lodash": "^4.17.14", + "lodash": "^4.17.15", "md5": "^2.2.1", "uniqueid": "^1.0.0" } diff --git a/src/ConflictResolution.js b/src/ConflictResolution.js index f8b62b8..aa70c27 100644 --- a/src/ConflictResolution.js +++ b/src/ConflictResolution.js @@ -39,9 +39,9 @@ class ConflictResolution { } resolveByPriority(actions) { - const prios = actions.map(action => action.priority); + const prios = actions.map((action) => action.priority); const highestPrio = Math.max(...prios); - const selected = actions.filter(action => action.priority === highestPrio); + const selected = actions.filter((action) => action.priority === highestPrio); this.logger.debug({ message: `conflict resolution by priority ${actions.length} -> ${selected.length}`, }); @@ -53,7 +53,7 @@ class ConflictResolution { && intersection(action.premises, rhs.premises).length === rhs.premises.length; const isMostSpecific = (action, all) => all.reduce((acc, other) => acc && !isMoreSpecific(other, action), true); - const selected = actions.filter(action => isMostSpecific(action, actions)); + const selected = actions.filter((action) => isMostSpecific(action, actions)); this.logger.debug({ message: `conflict resolution by specificity ${actions.length} -> ${selected.length}`, }); diff --git a/src/Rools.js b/src/Rools.js index b1c508b..036c383 100644 --- a/src/Rools.js +++ b/src/Rools.js @@ -13,7 +13,7 @@ class Rools { } async register(rules) { - rules.forEach(rule => this.rules.register(rule)); + rules.forEach((rule) => this.rules.register(rule)); } async evaluate(facts, { strategy } = {}) { @@ -25,7 +25,7 @@ class Rools { }); const conflictResolution = new ConflictResolution({ strategy, logger: this.logger }); const delegator = new Delegator(); - const proxy = observe(facts, segment => delegator.delegate(segment)); + const proxy = observe(facts, (segment) => delegator.delegate(segment)); // match-resolve-act cycle let pass = 0; /* eslint-disable no-await-in-loop */ for (; pass < this.maxPasses; pass += 1) { diff --git a/test/activationGroup.spec.js b/test/activationGroup.spec.js index 0c049bf..f8f61d9 100644 --- a/test/activationGroup.spec.js +++ b/test/activationGroup.spec.js @@ -5,27 +5,27 @@ describe('Rools.evaluate() / activation group', () => { const sequence = []; const rule1 = new Rule({ name: 'rule1', - when: facts => facts.fact1, + when: (facts) => facts.fact1, then: () => { sequence.push(1); }, }); const rule2 = new Rule({ name: 'rule2', extend: rule1, - when: facts => facts.fact2, + when: (facts) => facts.fact2, then: () => { sequence.push(2); }, }); const rule3 = new Rule({ name: 'rule3', extens: rule2, activationGroup: 'groupX', - when: facts => facts.fact3, + when: (facts) => facts.fact3, then: () => { sequence.push(3); }, }); const rule4 = new Rule({ name: 'rule4', extend: rule2, activationGroup: 'groupX', - when: facts => facts.fact4, + when: (facts) => facts.fact4, then: () => { sequence.push(4); }, }); const facts = { diff --git a/test/classes.spec.js b/test/classes.spec.js index 63dee27..d3bbc3c 100644 --- a/test/classes.spec.js +++ b/test/classes.spec.js @@ -36,7 +36,7 @@ class Person { const rule1 = new Rule({ name: 'mood is great if 200 stars or more', - when: facts => facts.user.getStars() >= 200, + when: (facts) => facts.user.getStars() >= 200, then: (facts) => { facts.user.setMood('great'); }, @@ -45,8 +45,8 @@ const rule1 = new Rule({ const rule2 = new Rule({ name: 'mark applicable if mood is great and salery greater 1000', when: [ - facts => facts.user.getMood() === 'great', - facts => facts.user.getSalery() > 1000, + (facts) => facts.user.getMood() === 'great', + (facts) => facts.user.getSalery() > 1000, ], then: (facts) => { facts.result = true; diff --git a/test/errors.spec.js b/test/errors.spec.js index bada13b..324a6df 100644 --- a/test/errors.spec.js +++ b/test/errors.spec.js @@ -11,7 +11,7 @@ describe('Rools.evaluate() / errors', () => { it('should not fail if `when` throws error', async () => { const brokenRule = new Rule({ name: 'broken rule #1', - when: facts => facts.bla.blub === 'blub', // TypeError: Cannot read property 'blub' of undefined + when: (facts) => facts.bla.blub === 'blub', // TypeError: Cannot read property 'blub' of undefined then: () => {}, }); const rools = new Rools({ logging: { error: false } }); diff --git a/test/extend.spec.js b/test/extend.spec.js index 96c6353..5bce5e9 100644 --- a/test/extend.spec.js +++ b/test/extend.spec.js @@ -5,31 +5,31 @@ describe('Rools.evaluate() / extend', () => { const sequence = []; const rule1 = new Rule({ name: 'rule1', - when: facts => facts.fact1, + when: (facts) => facts.fact1, then: () => { sequence.push(1); }, }); const rule2 = new Rule({ name: 'rule2', extend: rule1, - when: facts => facts.fact2, + when: (facts) => facts.fact2, then: () => { sequence.push(2); }, }); const rule3 = new Rule({ name: 'rule3', extend: rule2, - when: facts => facts.fact3, + when: (facts) => facts.fact3, then: () => { sequence.push(3); }, }); const rule4 = new Rule({ name: 'rule4', extend: rule2, - when: facts => facts.fact4, + when: (facts) => facts.fact4, then: () => { sequence.push(4); }, }); const rule5 = new Rule({ name: 'rule5', extend: [rule3, rule4], - when: facts => facts.fact5, + when: (facts) => facts.fact5, then: () => { sequence.push(5); }, }); const facts = { diff --git a/test/longer.spec.js b/test/longer.spec.js index 3496c30..869c918 100644 --- a/test/longer.spec.js +++ b/test/longer.spec.js @@ -7,70 +7,70 @@ describe('Rools.evaluate() / longer cycle', () => { before(async () => { const rule0 = new Rule({ name: 'rule0', - when: facts => facts.user.stars === 0, + when: (facts) => facts.user.stars === 0, then: (facts) => { facts.user.stars += 1; }, }); const rule1 = new Rule({ name: 'rule1', - when: facts => facts.user.stars === 1, + when: (facts) => facts.user.stars === 1, then: (facts) => { facts.user.stars += 1; }, }); const rule2 = new Rule({ name: 'rule2', - when: facts => facts.user.stars === 2, + when: (facts) => facts.user.stars === 2, then: (facts) => { facts.user.stars += 1; }, }); const rule3 = new Rule({ name: 'rule3', - when: facts => facts.user.stars === 3, + when: (facts) => facts.user.stars === 3, then: (facts) => { facts.user.stars += 1; }, }); const rule4 = new Rule({ name: 'rule4', - when: facts => facts.user.stars === 4, + when: (facts) => facts.user.stars === 4, then: (facts) => { facts.user.stars += 1; }, }); const rule5 = new Rule({ name: 'rule5', - when: facts => facts.user.stars === 5, + when: (facts) => facts.user.stars === 5, then: (facts) => { facts.user.stars += 1; }, }); const rule6 = new Rule({ name: 'rule6', - when: facts => facts.user.stars === 6, + when: (facts) => facts.user.stars === 6, then: (facts) => { facts.user.stars += 1; }, }); const rule7 = new Rule({ name: 'rule7', - when: facts => facts.user.stars === 7, + when: (facts) => facts.user.stars === 7, then: (facts) => { facts.user.stars += 1; }, }); const rule8 = new Rule({ name: 'rule8', - when: facts => facts.user.stars === 8, + when: (facts) => facts.user.stars === 8, then: (facts) => { facts.user.stars += 1; }, }); const rule9 = new Rule({ name: 'rule9', - when: facts => facts.user.stars === 9, + when: (facts) => facts.user.stars === 9, then: (facts) => { facts.user.stars += 1; }, diff --git a/test/premises.spec.js b/test/premises.spec.js index 2671dbc..f867d3b 100644 --- a/test/premises.spec.js +++ b/test/premises.spec.js @@ -6,12 +6,12 @@ describe('Rools.register() / optimization of premises', () => { it('should not merge premises if not identical', async () => { const rule1 = new Rule({ name: 'rule1', - when: facts => facts.user.name === 'frank', + when: (facts) => facts.user.name === 'frank', then: () => {}, }); const rule2 = new Rule({ name: 'rule2', - when: facts => facts.user.name === 'michael', + when: (facts) => facts.user.name === 'michael', then: () => {}, }); const rools = new Rools(); @@ -20,7 +20,7 @@ describe('Rools.register() / optimization of premises', () => { }); it('should merge premises if identical / reference / arrow function', async () => { - const isFrank = facts => facts.user.name === 'frank'; + const isFrank = (facts) => facts.user.name === 'frank'; const rule1 = new Rule({ name: 'rule1', when: isFrank, @@ -58,12 +58,12 @@ describe('Rools.register() / optimization of premises', () => { it('should merge premises if identical / hash / arrow function', async () => { const rule1 = new Rule({ name: 'rule1', - when: facts => facts.user.name === 'frank', + when: (facts) => facts.user.name === 'frank', then: () => {}, }); const rule2 = new Rule({ name: 'rule2', - when: facts => facts.user.name === 'frank', + when: (facts) => facts.user.name === 'frank', then: () => {}, }); const rools = new Rools(); @@ -94,12 +94,12 @@ describe('Rools.register() / optimization of premises', () => { it('should not merge premises if identical / hash / slightly different (unfortunately)', async () => { const rule1 = new Rule({ name: 'rule1', - when: facts => facts.user.name === 'frank', + when: (facts) => facts.user.name === 'frank', then: () => {}, }); const rule2 = new Rule({ name: 'rule2', - when: facts => facts.user.name === "frank", // eslint-disable-line quotes + when: (facts) => facts.user.name === "frank", // eslint-disable-line quotes then: () => {}, }); const rools = new Rools(); @@ -112,12 +112,12 @@ describe('Rools.register() / optimization of premises', () => { const date2 = new Date('1990-01-01'); const rule1 = new Rule({ name: 'rule1', - when: facts => facts.user.birthdate > date1, + when: (facts) => facts.user.birthdate > date1, then: () => {}, }); const rule2 = new Rule({ name: 'rule2', - when: facts => facts.user.birthdate > date2, + when: (facts) => facts.user.birthdate > date2, then: () => {}, }); const rools = new Rools(); @@ -129,12 +129,12 @@ describe('Rools.register() / optimization of premises', () => { const date = new Date('2000-01-01'); const rule1 = new Rule({ name: 'rule1', - when: facts => facts.user.birthdate > date, + when: (facts) => facts.user.birthdate > date, then: () => {}, }); const rule2 = new Rule({ name: 'rule2', - when: facts => facts.user.birthdate > date, + when: (facts) => facts.user.birthdate > date, then: () => {}, }); const rools = new Rools(); @@ -155,7 +155,7 @@ describe('Rools.register() / optimization of premises', () => { ({ context }) => context.bar === 'buz0', ]; const set = new Set(); - fns.forEach(f => set.add(md5(f.toString()))); + fns.forEach((f) => set.add(md5(f.toString()))); expect(set.size).to.be.equal(4); }); @@ -167,7 +167,7 @@ describe('Rools.register() / optimization of premises', () => { foo, ]; const set = new Set(); - fns.forEach(f => set.add(md5(f.toString()))); + fns.forEach((f) => set.add(md5(f.toString()))); expect(set.size).to.be.equal(3); }); }); diff --git a/test/priority.spec.js b/test/priority.spec.js index 7221dd2..ae1ab1f 100644 --- a/test/priority.spec.js +++ b/test/priority.spec.js @@ -6,19 +6,19 @@ describe('Rools.evaluate() / priority', () => { const rule1 = new Rule({ name: 'rule1', - when: facts => facts.fact1, + when: (facts) => facts.fact1, then: () => { sequence.push(1); }, }); const rule2 = new Rule({ name: 'rule2', - when: facts => facts.fact1, + when: (facts) => facts.fact1, then: () => { sequence.push(2); }, }); const rule3 = new Rule({ name: 'rule3', - when: facts => facts.fact1, + when: (facts) => facts.fact1, then: () => { sequence.push(3); }, }); diff --git a/test/refraction.spec.js b/test/refraction.spec.js index 8837e43..38051c7 100644 --- a/test/refraction.spec.js +++ b/test/refraction.spec.js @@ -6,14 +6,14 @@ describe('Rools.evaluate() / refraction', () => { const rule1 = new Rule({ name: 'rule1', - when: facts => facts.fact1, + when: (facts) => facts.fact1, then: (facts) => { facts.fact1 = false; facts.fact1 = true; spy(); }, priority: 10, }); const rule2 = new Rule({ name: 'rule2', - when: facts => facts.fact2, + when: (facts) => facts.fact2, then: (facts) => { facts.fact1 = false; facts.fact1 = true; }, }); diff --git a/test/rules/availability.js b/test/rules/availability.js index 21fcb94..8b3d630 100644 --- a/test/rules/availability.js +++ b/test/rules/availability.js @@ -15,7 +15,7 @@ const availabilityCheck = (address) => { // eslint-disable-line arrow-body-style const rule1 = new Rule({ name: 'check availability of products (async await)', - when: facts => facts.user.address.country === 'germany', + when: (facts) => facts.user.address.country === 'germany', then: async (facts) => { facts.products = await availabilityCheck(facts.user.address); }, @@ -23,8 +23,8 @@ const rule1 = new Rule({ const rule2 = new Rule({ name: 'check availability of products (promises)', - when: facts => facts.user.address.country === 'germany', - then: facts => availabilityCheck(facts.user.address).then((result) => { + when: (facts) => facts.user.address.country === 'germany', + then: (facts) => availabilityCheck(facts.user.address).then((result) => { facts.products = result; }), }); diff --git a/test/rules/mood.js b/test/rules/mood.js index 8669de1..38e6c72 100644 --- a/test/rules/mood.js +++ b/test/rules/mood.js @@ -2,7 +2,7 @@ const { Rule } = require('../..'); const ruleMoodGreat = new Rule({ name: 'mood is great if 200 stars or more', - when: facts => facts.user.stars >= 200, + when: (facts) => facts.user.stars >= 200, then: (facts) => { facts.user.mood = 'great'; }, @@ -10,7 +10,7 @@ const ruleMoodGreat = new Rule({ const ruleMoodSad = new Rule({ name: 'mood is sad if less than 200 stars', - when: facts => facts.user.stars < 200, + when: (facts) => facts.user.stars < 200, then: (facts) => { facts.user.mood = 'sad'; }, @@ -19,9 +19,9 @@ const ruleMoodSad = new Rule({ const ruleGoWalking = new Rule({ name: 'go for a walk if mood is great and the weather is fine', when: [ - facts => facts.user.mood === 'great', - facts => facts.weather.temperature >= 20, - facts => !facts.weather.rainy, + (facts) => facts.user.mood === 'great', + (facts) => facts.weather.temperature >= 20, + (facts) => !facts.weather.rainy, ], then: (facts) => { facts.goWalking = true; @@ -31,7 +31,7 @@ const ruleGoWalking = new Rule({ const ruleStayAtHome = new Rule({ name: 'stay at home if mood is sad or the weather is bad', when: [ - facts => facts.weather.rainy || facts.user.mood === 'sad', + (facts) => facts.weather.rainy || facts.user.mood === 'sad', ], then: (facts) => { facts.stayAtHome = true; diff --git a/test/specificity.spec.js b/test/specificity.spec.js index 2cf3bac..1407dd7 100644 --- a/test/specificity.spec.js +++ b/test/specificity.spec.js @@ -5,32 +5,32 @@ describe('Rools.evaluate() / specificity', () => { const sequence = []; const rule1 = new Rule({ name: 'rule1', - when: facts => facts.fact1, + when: (facts) => facts.fact1, then: () => { sequence.push(1); }, }); const rule2 = new Rule({ name: 'rule2', when: [ - facts => facts.fact1, - facts => facts.fact2, + (facts) => facts.fact1, + (facts) => facts.fact2, ], then: () => { sequence.push(2); }, }); const rule3 = new Rule({ name: 'rule3', when: [ - facts => facts.fact1, - facts => facts.fact2, - facts => facts.fact3, + (facts) => facts.fact1, + (facts) => facts.fact2, + (facts) => facts.fact3, ], then: () => { sequence.push(3); }, }); const rule4 = new Rule({ name: 'rule4', when: [ - facts => facts.fact1, - facts => facts.fact2, - facts => facts.fact4, + (facts) => facts.fact1, + (facts) => facts.fact2, + (facts) => facts.fact4, ], then: () => { sequence.push(4); }, }); diff --git a/test/strategy.spec.js b/test/strategy.spec.js index e98ee47..264d679 100644 --- a/test/strategy.spec.js +++ b/test/strategy.spec.js @@ -5,32 +5,32 @@ describe('Rools.evaluate() / strategy', () => { const sequence = []; const rule1 = new Rule({ name: 'rule1', - when: facts => facts.fact1, + when: (facts) => facts.fact1, then: () => { sequence.push(1); }, }); const rule2 = new Rule({ name: 'rule2', when: [ - facts => facts.fact1, - facts => facts.fact2, + (facts) => facts.fact1, + (facts) => facts.fact2, ], then: () => { sequence.push(2); }, }); const rule3 = new Rule({ name: 'rule3', when: [ - facts => facts.fact1, - facts => facts.fact2, - facts => facts.fact3, + (facts) => facts.fact1, + (facts) => facts.fact2, + (facts) => facts.fact3, ], then: () => { sequence.push(3); }, }); const rule4 = new Rule({ name: 'rule4', when: [ - facts => facts.fact1, - facts => facts.fact2, - facts => facts.fact4, + (facts) => facts.fact1, + (facts) => facts.fact2, + (facts) => facts.fact4, ], then: () => { sequence.push(4); }, }); diff --git a/test/withdraw.spec.js b/test/withdraw.spec.js index 3e24c92..9eeca17 100644 --- a/test/withdraw.spec.js +++ b/test/withdraw.spec.js @@ -6,13 +6,13 @@ describe('Rools.evaluate() / withdraw', () => { const rule1 = new Rule({ name: 'rule1', - when: facts => facts.fact1, + when: (facts) => facts.fact1, then: (facts) => { facts.fact2 = false; }, }); const rule2 = new Rule({ name: 'rule2', - when: facts => facts.fact2, + when: (facts) => facts.fact2, then: () => { spy(); }, });