From 5fed70ba9f02303d2ba0d923a56b6123f7e1cc8c Mon Sep 17 00:00:00 2001 From: nsano-rururu Date: Fri, 19 Mar 2021 20:08:17 +0900 Subject: [PATCH] subject_args & text_args, Forced double quotes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Library Update @fortawesome/fontawesome-svg-core 1.2.34 → 1.2.35 @fortawesome/free-brands-svg-icons 5.15.2 → 5.15.3 @fortawesome/free-regular-svg-icons 5.15.2 → 5.15.3 @fortawesome/free-solid-svg-icons 5.15.2 → 5.15.3 @vue/cli-plugin-e2e-cypress ^4.5.11 → ^4.5.12 @vue/cli-plugin-eslint ^4.5.11 → ^4.5.12 @vue/cli-plugin-unit-mocha ^4.5.11 → ^4.5.12 @vue/cli-service ^4.5.11 → ^4.5.12 cypress ^6.7.1 → ^6.8.0 --- package-lock.json | 238 +++++++++--------- package.json | 20 +- .../config/alert/ConfigAlertSubjectBody.vue | 220 ++++++++++++++++ src/store/config/alert.js | 44 ++++ src/store/config/index.js | 26 +- src/store/configs.js | 13 +- tests/unit/specs/ConfigYaml.spec.js | 32 ++- 7 files changed, 438 insertions(+), 155 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7eca14f8..49a61480 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,18 +1,18 @@ { "name": "praeco", - "version": "1.8.0", + "version": "1.8.2", "lockfileVersion": 2, "requires": true, "packages": { "": { - "version": "1.8.0", + "version": "1.8.2", "dependencies": { "@babel/core": "7.13.10", "@browser-bunyan/server-stream": "1.6.1", - "@fortawesome/fontawesome-svg-core": "1.2.34", - "@fortawesome/free-brands-svg-icons": "5.15.2", - "@fortawesome/free-regular-svg-icons": "5.15.2", - "@fortawesome/free-solid-svg-icons": "5.15.2", + "@fortawesome/fontawesome-svg-core": "1.2.35", + "@fortawesome/free-brands-svg-icons": "5.15.3", + "@fortawesome/free-regular-svg-icons": "5.15.3", + "@fortawesome/free-solid-svg-icons": "5.15.3", "@fortawesome/vue-fontawesome": "2.0.2", "@riophae/vue-treeselect": "0.4.0", "axios": "0.21.1", @@ -60,10 +60,10 @@ "devDependencies": { "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", "@vue/cli-plugin-babel": "^4.5.11", - "@vue/cli-plugin-e2e-cypress": "^4.5.11", - "@vue/cli-plugin-eslint": "^4.5.11", - "@vue/cli-plugin-unit-mocha": "^4.5.11", - "@vue/cli-service": "^4.5.11", + "@vue/cli-plugin-e2e-cypress": "^4.5.12", + "@vue/cli-plugin-eslint": "^4.5.12", + "@vue/cli-plugin-unit-mocha": "^4.5.12", + "@vue/cli-service": "^4.5.12", "@vue/eslint-config-airbnb": "^5.3.0", "@vue/test-utils": "1.1.3", "axios-mock-adapter": "1.19.0", @@ -71,7 +71,7 @@ "babel-plugin-istanbul": "6.0.0", "chai": "4.3.4", "cross-env": "7.0.3", - "cypress": "^6.7.1", + "cypress": "^6.8.0", "eslint": "^6.8.0", "eslint-plugin-cypress": "^2.11.2", "eslint-plugin-import": "^2.22.1", @@ -1532,57 +1532,57 @@ } }, "node_modules/@fortawesome/fontawesome-common-types": { - "version": "0.2.34", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.34.tgz", - "integrity": "sha512-XcIn3iYbTEzGIxD0/dY5+4f019jIcEIWBiHc3KrmK/ROahwxmZ/s+tdj97p/5K0klz4zZUiMfUlYP0ajhSJjmA==", + "version": "0.2.35", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.35.tgz", + "integrity": "sha512-IHUfxSEDS9dDGqYwIW7wTN6tn/O8E0n5PcAHz9cAaBoZw6UpG20IG/YM3NNLaGPwPqgjBAFjIURzqoQs3rrtuw==", "hasInstallScript": true, "engines": { "node": ">=6" } }, "node_modules/@fortawesome/fontawesome-svg-core": { - "version": "1.2.34", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.34.tgz", - "integrity": "sha512-0KNN0nc5eIzaJxlv43QcDmTkDY1CqeN6J7OCGSs+fwGPdtv0yOQqRjieopBCmw+yd7uD3N2HeNL3Zm5isDleLg==", + "version": "1.2.35", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.35.tgz", + "integrity": "sha512-uLEXifXIL7hnh2sNZQrIJWNol7cTVIzwI+4qcBIq9QWaZqUblm0IDrtSqbNg+3SQf8SMGHkiSigD++rHmCHjBg==", "hasInstallScript": true, "dependencies": { - "@fortawesome/fontawesome-common-types": "^0.2.34" + "@fortawesome/fontawesome-common-types": "^0.2.35" }, "engines": { "node": ">=6" } }, "node_modules/@fortawesome/free-brands-svg-icons": { - "version": "5.15.2", - "resolved": "https://registry.npmjs.org/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-5.15.2.tgz", - "integrity": "sha512-YPlVjE1cEO+OJ9I9ay3TQ3I88+XkxMTYwnnddqAboxLhPNGncsHV0DjWOVLCyuAY66yPfyndWwVn4v7vuqsO1g==", + "version": "5.15.3", + "resolved": "https://registry.npmjs.org/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-5.15.3.tgz", + "integrity": "sha512-1hirPcbjj72ZJtFvdnXGPbAbpn3Ox6mH3g5STbANFp3vGSiE5u5ingAKV06mK6ZVqNYxUPlh4DlTnaIvLtF2kw==", "hasInstallScript": true, "dependencies": { - "@fortawesome/fontawesome-common-types": "^0.2.34" + "@fortawesome/fontawesome-common-types": "^0.2.35" }, "engines": { "node": ">=6" } }, "node_modules/@fortawesome/free-regular-svg-icons": { - "version": "5.15.2", - "resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-5.15.2.tgz", - "integrity": "sha512-Uv5NQCYjyisNVTu/1Xjs+z8vwQjbfT6hiqYvQNfF0n8qdgfWLM581bAfVMQ3BCs1SPy+eEUKNcGkK4n0FihFHg==", + "version": "5.15.3", + "resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-5.15.3.tgz", + "integrity": "sha512-q4/p8Xehy9qiVTdDWHL4Z+o5PCLRChePGZRTXkl+/Z7erDVL8VcZUuqzJjs6gUz6czss4VIPBRdCz6wP37/zMQ==", "hasInstallScript": true, "dependencies": { - "@fortawesome/fontawesome-common-types": "^0.2.34" + "@fortawesome/fontawesome-common-types": "^0.2.35" }, "engines": { "node": ">=6" } }, "node_modules/@fortawesome/free-solid-svg-icons": { - "version": "5.15.2", - "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.15.2.tgz", - "integrity": "sha512-ZfCU+QjaFsdNZmOGmfqEWhzI3JOe37x5dF4kz9GeXvKn/sTxhqMtZ7mh3lBf76SvcYY5/GKFuyG7p1r4iWMQqw==", + "version": "5.15.3", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.15.3.tgz", + "integrity": "sha512-XPeeu1IlGYqz4VWGRAT5ukNMd4VHUEEJ7ysZ7pSSgaEtNvSo+FLurybGJVmiqkQdK50OkSja2bfZXOeyMGRD8Q==", "hasInstallScript": true, "dependencies": { - "@fortawesome/fontawesome-common-types": "^0.2.34" + "@fortawesome/fontawesome-common-types": "^0.2.35" }, "engines": { "node": ">=6" @@ -2426,9 +2426,9 @@ } }, "node_modules/@vue/cli-overlay": { - "version": "4.5.11", - "resolved": "https://registry.npmjs.org/@vue/cli-overlay/-/cli-overlay-4.5.11.tgz", - "integrity": "sha512-aDQNw+oGk5+KR0vL9TocjfzyYHTJxR2lS8iPbcL4lRglCs2dudOE7QWXypj5dM4rQus0jJ5fxJTS55o9uy9fcQ==", + "version": "4.5.12", + "resolved": "https://registry.npmjs.org/@vue/cli-overlay/-/cli-overlay-4.5.12.tgz", + "integrity": "sha512-dCN0RzVpA8fp+MfjuVBROgM483MPObAb/je+APE/JhpCJyPQORYQEvNpmaorpN+9Cp6mrESVSzhh0qD4SFrlzg==", "dev": true }, "node_modules/@vue/cli-plugin-babel": { @@ -2450,12 +2450,12 @@ } }, "node_modules/@vue/cli-plugin-e2e-cypress": { - "version": "4.5.11", - "resolved": "https://registry.npmjs.org/@vue/cli-plugin-e2e-cypress/-/cli-plugin-e2e-cypress-4.5.11.tgz", - "integrity": "sha512-0SjUlNpjXHyZRdBMrOSsSuWDIi4DyRVmJhkkBLUpGHJt1SSyWOY70NRfemhef2yJZVWyFA4GjN9Mn6xYAH6z/w==", + "version": "4.5.12", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-e2e-cypress/-/cli-plugin-e2e-cypress-4.5.12.tgz", + "integrity": "sha512-iOhbIoRRgKi3liI3NBBx/jWfVpQGlOr2iPmxst5ecyC/wfyplxuPtvsfojMIKi04N8ieYvpEvz8jYXLW1trSrg==", "dev": true, "dependencies": { - "@vue/cli-shared-utils": "^4.5.11", + "@vue/cli-shared-utils": "^4.5.12", "cypress": "^3.8.3", "eslint-plugin-cypress": "^2.10.3" }, @@ -3140,12 +3140,12 @@ } }, "node_modules/@vue/cli-plugin-eslint": { - "version": "4.5.11", - "resolved": "https://registry.npmjs.org/@vue/cli-plugin-eslint/-/cli-plugin-eslint-4.5.11.tgz", - "integrity": "sha512-6XrF3A3ryjtqoPMYL0ltZaP0631HS2a68Ye34KIkz111EKXtC5ip+gz6bSPWrH5SbhinU3R8cstA8xVASz9kwg==", + "version": "4.5.12", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-eslint/-/cli-plugin-eslint-4.5.12.tgz", + "integrity": "sha512-nbjGJkWxo/xdD32DwvnEAUwkWYsObpqNk9NuU7T62ehdzHPzz58o3j03YZ7a7T7Le8bYyOWMYsdNfz63F+XiZQ==", "dev": true, "dependencies": { - "@vue/cli-shared-utils": "^4.5.11", + "@vue/cli-shared-utils": "^4.5.12", "eslint-loader": "^2.2.1", "globby": "^9.2.0", "inquirer": "^7.1.0", @@ -3158,24 +3158,24 @@ } }, "node_modules/@vue/cli-plugin-router": { - "version": "4.5.11", - "resolved": "https://registry.npmjs.org/@vue/cli-plugin-router/-/cli-plugin-router-4.5.11.tgz", - "integrity": "sha512-09tzw3faOs48IUPwLutYaNC7eoyyL140fKruTwdFdXuBLDdSQVida57Brx0zj2UKXc5qF8hk4GoGrOshN0KfNg==", + "version": "4.5.12", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-router/-/cli-plugin-router-4.5.12.tgz", + "integrity": "sha512-DYNz5AA3W7Ewt3aaiOLGdYFt4MX4w/HTEtep+kPzP9S9tAknzyoIJXkaYzhwu8ArpEYwhWgtuCcDZ8hR6++DbA==", "dev": true, "dependencies": { - "@vue/cli-shared-utils": "^4.5.11" + "@vue/cli-shared-utils": "^4.5.12" }, "peerDependencies": { "@vue/cli-service": "^3.0.0 || ^4.0.0-0" } }, "node_modules/@vue/cli-plugin-unit-mocha": { - "version": "4.5.11", - "resolved": "https://registry.npmjs.org/@vue/cli-plugin-unit-mocha/-/cli-plugin-unit-mocha-4.5.11.tgz", - "integrity": "sha512-5lUzsaC3B8Np4bCu3qxC662IxXtfviKUMmAoEXezKfKKO8ArPDTjApMbH2cdMo5c80QP5ceakfQnbm+L8OZtbg==", + "version": "4.5.12", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-unit-mocha/-/cli-plugin-unit-mocha-4.5.12.tgz", + "integrity": "sha512-DLNQWiPJhXCMEniVJPzPa7yAs0tIg3/ebJNaiBUHNglcKocDc3jvwppTKh/nsG4t6Ud0Z7uvn9zGVPjAMB8Isg==", "dev": true, "dependencies": { - "@vue/cli-shared-utils": "^4.5.11", + "@vue/cli-shared-utils": "^4.5.12", "jsdom": "^15.2.1", "jsdom-global": "^3.0.2", "mocha": "^6.2.2", @@ -3249,18 +3249,18 @@ } }, "node_modules/@vue/cli-plugin-vuex": { - "version": "4.5.11", - "resolved": "https://registry.npmjs.org/@vue/cli-plugin-vuex/-/cli-plugin-vuex-4.5.11.tgz", - "integrity": "sha512-JBPeZLubiSHbRkEKDj0tnLiU43AJ3vt6JULn4IKWH1XWZ6MFC8vElaP5/AA4O3Zko5caamDDBq3TRyxdA2ncUQ==", + "version": "4.5.12", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-vuex/-/cli-plugin-vuex-4.5.12.tgz", + "integrity": "sha512-STgbvNv/3iHAKArc18b/qjN7RX1FTrfxPeHH26GOr/A8lJes7+CSluZZ8E5R7Zr/vL0zOqOkUVDAjFXVf4zWQA==", "dev": true, "peerDependencies": { "@vue/cli-service": "^3.0.0 || ^4.0.0-0" } }, "node_modules/@vue/cli-service": { - "version": "4.5.11", - "resolved": "https://registry.npmjs.org/@vue/cli-service/-/cli-service-4.5.11.tgz", - "integrity": "sha512-FXeJh2o6B8q/njv2Ebhe9EsLXt9sPMXGDY5zVvcV5jgj9wkoej9yLfnmwWCau5kegNClP6bcM+BEHuMYxJ+ubQ==", + "version": "4.5.12", + "resolved": "https://registry.npmjs.org/@vue/cli-service/-/cli-service-4.5.12.tgz", + "integrity": "sha512-Di/dFw72HIvUrpTgnnPQkPq07mdd7z3GPeCH/o+6fv4bxOD+gwK9z7P6RkG4lGv2QdLz+qjim9f7xw5w+9ENkg==", "dev": true, "dependencies": { "@intervolga/optimize-cssnano-plugin": "^1.0.5", @@ -3269,10 +3269,10 @@ "@types/minimist": "^1.2.0", "@types/webpack": "^4.0.0", "@types/webpack-dev-server": "^3.11.0", - "@vue/cli-overlay": "^4.5.11", - "@vue/cli-plugin-router": "^4.5.11", - "@vue/cli-plugin-vuex": "^4.5.11", - "@vue/cli-shared-utils": "^4.5.11", + "@vue/cli-overlay": "^4.5.12", + "@vue/cli-plugin-router": "^4.5.12", + "@vue/cli-plugin-vuex": "^4.5.12", + "@vue/cli-shared-utils": "^4.5.12", "@vue/component-compiler-utils": "^3.1.2", "@vue/preload-webpack-plugin": "^1.1.0", "@vue/web-component-wrapper": "^1.2.0", @@ -3563,9 +3563,9 @@ "dev": true }, "node_modules/@vue/cli-shared-utils": { - "version": "4.5.11", - "resolved": "https://registry.npmjs.org/@vue/cli-shared-utils/-/cli-shared-utils-4.5.11.tgz", - "integrity": "sha512-+aaQ+ThQG3+WMexfSWNl0y6f43edqVqRNbguE53F3TIH81I7saS5S750ayqXhZs2r6STJJyqorQnKtAWfHo29A==", + "version": "4.5.12", + "resolved": "https://registry.npmjs.org/@vue/cli-shared-utils/-/cli-shared-utils-4.5.12.tgz", + "integrity": "sha512-qnIQPJ4XckMoqYh9fJ0Y91QKMIb4Hiibrm9+k4E15QHpk5RaokuOpf10SsOr2NLPCXSWsHOLo3hduZSwHPGY/Q==", "dev": true, "dependencies": { "@hapi/joi": "^15.0.1", @@ -7485,9 +7485,9 @@ "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=" }, "node_modules/cypress": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-6.7.1.tgz", - "integrity": "sha512-MC9yt1GqpL4WVDQ0STI89K+PdLeC3T3NuAb2N61d6vYGR9pJy8w3Fqe0OWZwaRTJtg9eAyHXPGmFsyKeNQ3tmg==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-6.8.0.tgz", + "integrity": "sha512-W2e9Oqi7DmF48QtOD0LfsOLVq6ef2hcXZvJXI/E3PgFNmZXEVwBefhAxVCW9yTPortjYA2XkM20KyC4HRkOm9w==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -23076,40 +23076,40 @@ } }, "@fortawesome/fontawesome-common-types": { - "version": "0.2.34", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.34.tgz", - "integrity": "sha512-XcIn3iYbTEzGIxD0/dY5+4f019jIcEIWBiHc3KrmK/ROahwxmZ/s+tdj97p/5K0klz4zZUiMfUlYP0ajhSJjmA==" + "version": "0.2.35", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.35.tgz", + "integrity": "sha512-IHUfxSEDS9dDGqYwIW7wTN6tn/O8E0n5PcAHz9cAaBoZw6UpG20IG/YM3NNLaGPwPqgjBAFjIURzqoQs3rrtuw==" }, "@fortawesome/fontawesome-svg-core": { - "version": "1.2.34", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.34.tgz", - "integrity": "sha512-0KNN0nc5eIzaJxlv43QcDmTkDY1CqeN6J7OCGSs+fwGPdtv0yOQqRjieopBCmw+yd7uD3N2HeNL3Zm5isDleLg==", + "version": "1.2.35", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.35.tgz", + "integrity": "sha512-uLEXifXIL7hnh2sNZQrIJWNol7cTVIzwI+4qcBIq9QWaZqUblm0IDrtSqbNg+3SQf8SMGHkiSigD++rHmCHjBg==", "requires": { - "@fortawesome/fontawesome-common-types": "^0.2.34" + "@fortawesome/fontawesome-common-types": "^0.2.35" } }, "@fortawesome/free-brands-svg-icons": { - "version": "5.15.2", - "resolved": "https://registry.npmjs.org/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-5.15.2.tgz", - "integrity": "sha512-YPlVjE1cEO+OJ9I9ay3TQ3I88+XkxMTYwnnddqAboxLhPNGncsHV0DjWOVLCyuAY66yPfyndWwVn4v7vuqsO1g==", + "version": "5.15.3", + "resolved": "https://registry.npmjs.org/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-5.15.3.tgz", + "integrity": "sha512-1hirPcbjj72ZJtFvdnXGPbAbpn3Ox6mH3g5STbANFp3vGSiE5u5ingAKV06mK6ZVqNYxUPlh4DlTnaIvLtF2kw==", "requires": { - "@fortawesome/fontawesome-common-types": "^0.2.34" + "@fortawesome/fontawesome-common-types": "^0.2.35" } }, "@fortawesome/free-regular-svg-icons": { - "version": "5.15.2", - "resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-5.15.2.tgz", - "integrity": "sha512-Uv5NQCYjyisNVTu/1Xjs+z8vwQjbfT6hiqYvQNfF0n8qdgfWLM581bAfVMQ3BCs1SPy+eEUKNcGkK4n0FihFHg==", + "version": "5.15.3", + "resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-5.15.3.tgz", + "integrity": "sha512-q4/p8Xehy9qiVTdDWHL4Z+o5PCLRChePGZRTXkl+/Z7erDVL8VcZUuqzJjs6gUz6czss4VIPBRdCz6wP37/zMQ==", "requires": { - "@fortawesome/fontawesome-common-types": "^0.2.34" + "@fortawesome/fontawesome-common-types": "^0.2.35" } }, "@fortawesome/free-solid-svg-icons": { - "version": "5.15.2", - "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.15.2.tgz", - "integrity": "sha512-ZfCU+QjaFsdNZmOGmfqEWhzI3JOe37x5dF4kz9GeXvKn/sTxhqMtZ7mh3lBf76SvcYY5/GKFuyG7p1r4iWMQqw==", + "version": "5.15.3", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.15.3.tgz", + "integrity": "sha512-XPeeu1IlGYqz4VWGRAT5ukNMd4VHUEEJ7ysZ7pSSgaEtNvSo+FLurybGJVmiqkQdK50OkSja2bfZXOeyMGRD8Q==", "requires": { - "@fortawesome/fontawesome-common-types": "^0.2.34" + "@fortawesome/fontawesome-common-types": "^0.2.35" } }, "@fortawesome/vue-fontawesome": { @@ -23829,9 +23829,9 @@ } }, "@vue/cli-overlay": { - "version": "4.5.11", - "resolved": "https://registry.npmjs.org/@vue/cli-overlay/-/cli-overlay-4.5.11.tgz", - "integrity": "sha512-aDQNw+oGk5+KR0vL9TocjfzyYHTJxR2lS8iPbcL4lRglCs2dudOE7QWXypj5dM4rQus0jJ5fxJTS55o9uy9fcQ==", + "version": "4.5.12", + "resolved": "https://registry.npmjs.org/@vue/cli-overlay/-/cli-overlay-4.5.12.tgz", + "integrity": "sha512-dCN0RzVpA8fp+MfjuVBROgM483MPObAb/je+APE/JhpCJyPQORYQEvNpmaorpN+9Cp6mrESVSzhh0qD4SFrlzg==", "dev": true }, "@vue/cli-plugin-babel": { @@ -23850,12 +23850,12 @@ } }, "@vue/cli-plugin-e2e-cypress": { - "version": "4.5.11", - "resolved": "https://registry.npmjs.org/@vue/cli-plugin-e2e-cypress/-/cli-plugin-e2e-cypress-4.5.11.tgz", - "integrity": "sha512-0SjUlNpjXHyZRdBMrOSsSuWDIi4DyRVmJhkkBLUpGHJt1SSyWOY70NRfemhef2yJZVWyFA4GjN9Mn6xYAH6z/w==", + "version": "4.5.12", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-e2e-cypress/-/cli-plugin-e2e-cypress-4.5.12.tgz", + "integrity": "sha512-iOhbIoRRgKi3liI3NBBx/jWfVpQGlOr2iPmxst5ecyC/wfyplxuPtvsfojMIKi04N8ieYvpEvz8jYXLW1trSrg==", "dev": true, "requires": { - "@vue/cli-shared-utils": "^4.5.11", + "@vue/cli-shared-utils": "^4.5.12", "cypress": "^3.8.3", "eslint-plugin-cypress": "^2.10.3" }, @@ -24427,12 +24427,12 @@ } }, "@vue/cli-plugin-eslint": { - "version": "4.5.11", - "resolved": "https://registry.npmjs.org/@vue/cli-plugin-eslint/-/cli-plugin-eslint-4.5.11.tgz", - "integrity": "sha512-6XrF3A3ryjtqoPMYL0ltZaP0631HS2a68Ye34KIkz111EKXtC5ip+gz6bSPWrH5SbhinU3R8cstA8xVASz9kwg==", + "version": "4.5.12", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-eslint/-/cli-plugin-eslint-4.5.12.tgz", + "integrity": "sha512-nbjGJkWxo/xdD32DwvnEAUwkWYsObpqNk9NuU7T62ehdzHPzz58o3j03YZ7a7T7Le8bYyOWMYsdNfz63F+XiZQ==", "dev": true, "requires": { - "@vue/cli-shared-utils": "^4.5.11", + "@vue/cli-shared-utils": "^4.5.12", "eslint-loader": "^2.2.1", "globby": "^9.2.0", "inquirer": "^7.1.0", @@ -24441,21 +24441,21 @@ } }, "@vue/cli-plugin-router": { - "version": "4.5.11", - "resolved": "https://registry.npmjs.org/@vue/cli-plugin-router/-/cli-plugin-router-4.5.11.tgz", - "integrity": "sha512-09tzw3faOs48IUPwLutYaNC7eoyyL140fKruTwdFdXuBLDdSQVida57Brx0zj2UKXc5qF8hk4GoGrOshN0KfNg==", + "version": "4.5.12", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-router/-/cli-plugin-router-4.5.12.tgz", + "integrity": "sha512-DYNz5AA3W7Ewt3aaiOLGdYFt4MX4w/HTEtep+kPzP9S9tAknzyoIJXkaYzhwu8ArpEYwhWgtuCcDZ8hR6++DbA==", "dev": true, "requires": { - "@vue/cli-shared-utils": "^4.5.11" + "@vue/cli-shared-utils": "^4.5.12" } }, "@vue/cli-plugin-unit-mocha": { - "version": "4.5.11", - "resolved": "https://registry.npmjs.org/@vue/cli-plugin-unit-mocha/-/cli-plugin-unit-mocha-4.5.11.tgz", - "integrity": "sha512-5lUzsaC3B8Np4bCu3qxC662IxXtfviKUMmAoEXezKfKKO8ArPDTjApMbH2cdMo5c80QP5ceakfQnbm+L8OZtbg==", + "version": "4.5.12", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-unit-mocha/-/cli-plugin-unit-mocha-4.5.12.tgz", + "integrity": "sha512-DLNQWiPJhXCMEniVJPzPa7yAs0tIg3/ebJNaiBUHNglcKocDc3jvwppTKh/nsG4t6Ud0Z7uvn9zGVPjAMB8Isg==", "dev": true, "requires": { - "@vue/cli-shared-utils": "^4.5.11", + "@vue/cli-shared-utils": "^4.5.12", "jsdom": "^15.2.1", "jsdom-global": "^3.0.2", "mocha": "^6.2.2", @@ -24516,16 +24516,16 @@ } }, "@vue/cli-plugin-vuex": { - "version": "4.5.11", - "resolved": "https://registry.npmjs.org/@vue/cli-plugin-vuex/-/cli-plugin-vuex-4.5.11.tgz", - "integrity": "sha512-JBPeZLubiSHbRkEKDj0tnLiU43AJ3vt6JULn4IKWH1XWZ6MFC8vElaP5/AA4O3Zko5caamDDBq3TRyxdA2ncUQ==", + "version": "4.5.12", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-vuex/-/cli-plugin-vuex-4.5.12.tgz", + "integrity": "sha512-STgbvNv/3iHAKArc18b/qjN7RX1FTrfxPeHH26GOr/A8lJes7+CSluZZ8E5R7Zr/vL0zOqOkUVDAjFXVf4zWQA==", "dev": true, "requires": {} }, "@vue/cli-service": { - "version": "4.5.11", - "resolved": "https://registry.npmjs.org/@vue/cli-service/-/cli-service-4.5.11.tgz", - "integrity": "sha512-FXeJh2o6B8q/njv2Ebhe9EsLXt9sPMXGDY5zVvcV5jgj9wkoej9yLfnmwWCau5kegNClP6bcM+BEHuMYxJ+ubQ==", + "version": "4.5.12", + "resolved": "https://registry.npmjs.org/@vue/cli-service/-/cli-service-4.5.12.tgz", + "integrity": "sha512-Di/dFw72HIvUrpTgnnPQkPq07mdd7z3GPeCH/o+6fv4bxOD+gwK9z7P6RkG4lGv2QdLz+qjim9f7xw5w+9ENkg==", "dev": true, "requires": { "@intervolga/optimize-cssnano-plugin": "^1.0.5", @@ -24534,10 +24534,10 @@ "@types/minimist": "^1.2.0", "@types/webpack": "^4.0.0", "@types/webpack-dev-server": "^3.11.0", - "@vue/cli-overlay": "^4.5.11", - "@vue/cli-plugin-router": "^4.5.11", - "@vue/cli-plugin-vuex": "^4.5.11", - "@vue/cli-shared-utils": "^4.5.11", + "@vue/cli-overlay": "^4.5.12", + "@vue/cli-plugin-router": "^4.5.12", + "@vue/cli-plugin-vuex": "^4.5.12", + "@vue/cli-shared-utils": "^4.5.12", "@vue/component-compiler-utils": "^3.1.2", "@vue/preload-webpack-plugin": "^1.1.0", "@vue/web-component-wrapper": "^1.2.0", @@ -24748,9 +24748,9 @@ } }, "@vue/cli-shared-utils": { - "version": "4.5.11", - "resolved": "https://registry.npmjs.org/@vue/cli-shared-utils/-/cli-shared-utils-4.5.11.tgz", - "integrity": "sha512-+aaQ+ThQG3+WMexfSWNl0y6f43edqVqRNbguE53F3TIH81I7saS5S750ayqXhZs2r6STJJyqorQnKtAWfHo29A==", + "version": "4.5.12", + "resolved": "https://registry.npmjs.org/@vue/cli-shared-utils/-/cli-shared-utils-4.5.12.tgz", + "integrity": "sha512-qnIQPJ4XckMoqYh9fJ0Y91QKMIb4Hiibrm9+k4E15QHpk5RaokuOpf10SsOr2NLPCXSWsHOLo3hduZSwHPGY/Q==", "dev": true, "requires": { "@hapi/joi": "^15.0.1", @@ -28070,9 +28070,9 @@ "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=" }, "cypress": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-6.7.1.tgz", - "integrity": "sha512-MC9yt1GqpL4WVDQ0STI89K+PdLeC3T3NuAb2N61d6vYGR9pJy8w3Fqe0OWZwaRTJtg9eAyHXPGmFsyKeNQ3tmg==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-6.8.0.tgz", + "integrity": "sha512-W2e9Oqi7DmF48QtOD0LfsOLVq6ef2hcXZvJXI/E3PgFNmZXEVwBefhAxVCW9yTPortjYA2XkM20KyC4HRkOm9w==", "dev": true, "requires": { "@cypress/listr-verbose-renderer": "^0.4.1", diff --git a/package.json b/package.json index d907323b..240a5159 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "praeco", - "version": "1.8.1", + "version": "1.8.2", "private": true, "scripts": { "serve": "vue-cli-service serve", @@ -17,10 +17,10 @@ "dependencies": { "@babel/core": "7.13.10", "@browser-bunyan/server-stream": "1.6.1", - "@fortawesome/fontawesome-svg-core": "1.2.34", - "@fortawesome/free-brands-svg-icons": "5.15.2", - "@fortawesome/free-regular-svg-icons": "5.15.2", - "@fortawesome/free-solid-svg-icons": "5.15.2", + "@fortawesome/fontawesome-svg-core": "1.2.35", + "@fortawesome/free-brands-svg-icons": "5.15.3", + "@fortawesome/free-regular-svg-icons": "5.15.3", + "@fortawesome/free-solid-svg-icons": "5.15.3", "@fortawesome/vue-fontawesome": "2.0.2", "@riophae/vue-treeselect": "0.4.0", "axios": "0.21.1", @@ -68,10 +68,10 @@ "devDependencies": { "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", "@vue/cli-plugin-babel": "^4.5.11", - "@vue/cli-plugin-e2e-cypress": "^4.5.11", - "@vue/cli-plugin-eslint": "^4.5.11", - "@vue/cli-plugin-unit-mocha": "^4.5.11", - "@vue/cli-service": "^4.5.11", + "@vue/cli-plugin-e2e-cypress": "^4.5.12", + "@vue/cli-plugin-eslint": "^4.5.12", + "@vue/cli-plugin-unit-mocha": "^4.5.12", + "@vue/cli-service": "^4.5.12", "@vue/eslint-config-airbnb": "^5.3.0", "@vue/test-utils": "1.1.3", "axios-mock-adapter": "1.19.0", @@ -79,7 +79,7 @@ "babel-plugin-istanbul": "6.0.0", "chai": "4.3.4", "cross-env": "7.0.3", - "cypress": "^6.7.1", + "cypress": "^6.8.0", "eslint": "^6.8.0", "eslint-plugin-cypress": "^2.11.2", "eslint-plugin-import": "^2.22.1", diff --git a/src/components/config/alert/ConfigAlertSubjectBody.vue b/src/components/config/alert/ConfigAlertSubjectBody.vue index 36038c4d..e557dd7c 100644 --- a/src/components/config/alert/ConfigAlertSubjectBody.vue +++ b/src/components/config/alert/ConfigAlertSubjectBody.vue @@ -25,6 +25,55 @@ + + + + AlertSubjectArgs ({{ alertSubjectArgs.length }}) + + AlertSubjectArgs ({{ alertSubjectArgs.length }}) + + + + + + + + alertTextArgs ({{ alertTextArgs.length }}) + + alertTextArgs ({{ alertTextArgs.length }}) + + + + @@ -112,6 +213,15 @@ export default { props: ['viewOnly'], + data() { + return { + popAlertSubjectArgsVisible: false, + popAlertSubjectArgsValid: true, + popAlertTextArgsVisible: false, + popAlertTextArgsValid: true, + }; + }, + computed: { queryString() { return this.$store.getters['config/query/queryString']; @@ -130,6 +240,24 @@ export default { } }, + alertSubjectArgs: { + get() { + return this.$store.state.config.alert.alertSubjectArgs; + }, + set(value) { + this.$store.commit('config/alert/UPDATE_ALERT_SUBJECT_ARGS', value); + } + }, + + alertTextArgs: { + get() { + return this.$store.state.config.alert.alertTextArgs; + }, + set(value) { + this.$store.commit('config/alert/UPDATE_ALERT_TEXT_ARGS', value); + } + }, + body: { get() { return this.$store.state.config.alert.body; @@ -174,6 +302,98 @@ export default { e.preventDefault(); let text = (e.originalEvent || e).clipboardData.getData('text/plain'); document.execCommand('insertHTML', false, text); + }, + + async validate() { + try { + if (this.$refs.alertSubjectArgs) { + await this.validateAlertSubjectArgs(); + } + if (this.$refs.alertTextArgs) { + await this.validateAlertaTags(); + } + this.$emit('validate', true); + return true; + } catch (error) { + this.$emit('validate', false); + return false; + } + }, + + async validateAlertSubjectArgs() { + if (!this.alertSubjectArgs.length) { + this.popAlertSubjectArgsValid = false; + return; + } + try { + this.popAlertSubjectArgsValid = await this.$refs.alertSubjectArgs.validate(); + } catch (error) { + this.popAlertSubjectArgsValid = false; + throw error; + } + }, + + async validateAlertTextArgs() { + if (!this.alertTextArgs.length) { + this.popAlertTextArgsValid = false; + return; + } + try { + this.popAlertTextArgsValid = await this.$refs.alertTextArgs.validate(); + } catch (error) { + this.popAlertTextArgsValid = false; + throw error; + } + }, + + updateAlertSubjectArgs(entry, index) { + if (Number.isNaN(entry)) return; + this.$store.commit('config/alert/UPDATE_ALERT_SUBJECT_ARGS_ENTRY', { + entry, + index + }); + this.$nextTick(() => { + this.validate(); + }); + }, + + updateAlertTextArgs(entry, index) { + if (Number.isNaN(entry)) return; + this.$store.commit('config/alert/UPDATE_ALERT_TEXT_ARGS_ENTRY', { + entry, + index + }); + this.$nextTick(() => { + this.validate(); + }); + }, + + removeAlertSubjectArgsEntry(entry) { + this.$store.commit('config/alert/REMOVE_ALERT_SUBJECT_ARGS_ENTRY', entry); + this.$nextTick(() => { + this.validate(); + }); + }, + + removeAlertTextArgsEntry(entry) { + this.$store.commit('config/alert/REMOVE_ALERT_TEXT_ARGS_ENTRY', entry); + this.$nextTick(() => { + this.validate(); + }); + }, + + addAlertSubjectArgsEntry() { + this.$store.commit('config/alert/ADD_ALERT_SUBJECT_ARGS_ENTRY'); + this.$nextTick(() => { + this.validate(); + }); + }, + + addAlertTextArgsEntry() { + this.$store.commit('config/alert/ADD_ALERT_TEXT_ARGS_ENTRY'); + this.$nextTick(() => { + this.validate(); + }); } } }; diff --git a/src/store/config/alert.js b/src/store/config/alert.js index b2d36cf0..622e7f0a 100644 --- a/src/store/config/alert.js +++ b/src/store/config/alert.js @@ -24,6 +24,8 @@ function initialState() { subject: '', body: '', bodyType: 'alert_text_only', + alertSubjectArgs: [], + alertTextArgs: [], /* Slack */ slackChannelOverride: '', @@ -705,6 +707,48 @@ export default { state.subject = subject; }, + UPDATE_ALERT_SUBJECT_ARGS(state, alertSubjectArgs) { + state.alertSubjectArgs = alertSubjectArgs; + }, + + ADD_ALERT_SUBJECT_ARGS_ENTRY(state) { + state.alertSubjectArgs.push(''); + }, + + ADD_ALERT_SUBJECT_ARGS_ENTRY_VALUE(state, value) { + state.alertSubjectArgs.push(value); + }, + + REMOVE_ALERT_SUBJECT_ARGS_ENTRY(state, entry) { + state.alertSubjectArgs = state.alertSubjectArgs.filter(b => b !== entry); + }, + + UPDATE_ALERT_SUBJECT_ARGS_ENTRY(state, { entry, index }) { + if (!state.alertSubjectArgs) return; + state.alertSubjectArgs[index] = entry; + }, + + UPDATE_ALERT_TEXT_ARGS(state, alertTextArgs) { + state.alertTextArgs = alertTextArgs; + }, + + ADD_ALERT_TEXT_ARGS_ENTRY(state) { + state.alertTextArgs.push(''); + }, + + ADD_ALERT_TEXT_ARGS_ENTRY_VALUE(state, value) { + state.alertTextArgs.push(value); + }, + + REMOVE_ALERT_TEXT_ARGS_ENTRY(state, entry) { + state.alertTextArgs = state.alertTextArgs.filter(b => b !== entry); + }, + + UPDATE_ALERT_TEXT_ARGS_ENTRY(state, { entry, index }) { + if (!state.alertTextArgs) return; + state.alertTextArgs[index] = entry; + }, + UPDATE_ALERT(state, alert) { state.alert = alert; } diff --git a/src/store/config/index.js b/src/store/config/index.js index 37568c8a..f436d959 100644 --- a/src/store/config/index.js +++ b/src/store/config/index.js @@ -483,6 +483,14 @@ export default { commit('alert/UPDATE_BODY', config.alert_text); commit('alert/UPDATE_SUBJECT', config.alert_subject); + + if (config.alert_subject_args) { + commit('alert/UPDATE_ALERT_SUBJECT_ARGS', config.alert_subject_args); + } + + if (config.alert_text_args) { + commit('alert/UPDATE_ALERT_TEXT_ARGS', config.alert_text_args); + } } }, @@ -1428,13 +1436,25 @@ export default { if (state.alert.subject) { let formattedSubject = htmlToConfigFormat(state.alert.subject); config.alert_subject = formattedSubject.alertText.trim(); - config.alert_subject_args = formattedSubject.alertArgs; + + if (state.alert.alertSubjectArgs && state.alert.alertSubjectArgs.length) { + config.alert_subject_args = state.alert.alertSubjectArgs; + } + + // TODO: Comment out once + // config.alert_subject_args = formattedSubject.alertArgs; } if (state.alert.body) { let formattedText = htmlToConfigFormat(state.alert.body); config.alert_text = formattedText.alertText; - config.alert_text_args = formattedText.alertArgs; + + if (state.alert.alertTextArgs && state.alert.alertTextArgs.length) { + config.alert_text_args = state.alert.alertTextArgs; + } + + // TODO: Comment out once + // config.alert_text_args = formattedText.alertArgs; } if (state.alert.bodyType && state.alert.bodyType !== 'default') { @@ -1676,6 +1696,6 @@ export default { return conf; }, - yaml: (state, getters) => forTest => yaml.dump(getters.config(forTest), { quotingType: '"' }) + yaml: (state, getters) => forTest => yaml.dump(getters.config(forTest), { quotingType: '"', forceQuotes: true }) } }; diff --git a/src/store/configs.js b/src/store/configs.js index ce0a0b14..fbb0dfc6 100644 --- a/src/store/configs.js +++ b/src/store/configs.js @@ -4,7 +4,7 @@ import yaml from 'js-yaml'; import cloneDeep from 'lodash.clonedeep'; import { logger } from '@/lib/logger.js'; import networkError from '../lib/networkError.js'; -import { configFormatToHtml } from '../lib/alertText'; +// TODO: import { configFormatToHtml } from '../lib/alertText'; export default { namespaced: true, @@ -48,11 +48,12 @@ export default { let conf = isYaml ? yaml.load(config, 'utf8') : config; if (isYaml) { + // TODO: Comment out once // The config from the server has yaml formatted alert subject/text // We need it in html so convert it here. When saving the config, // it will be converted back to yaml format. - conf.alert_subject = configFormatToHtml(conf.alert_subject, conf.alert_subject_args); - conf.alert_text = configFormatToHtml(conf.alert_text, conf.alert_text_args); + // conf.alert_subject = configFormatToHtml(conf.alert_subject, conf.alert_subject_args); + // conf.alert_text = configFormatToHtml(conf.alert_text, conf.alert_text_args); // The configuration for the querybuilder widget that we saved to the rule // gets parsed here for use later. @@ -236,7 +237,7 @@ export default { async createConfigFinal({ commit, state }, { type, path, conf }) { try { let res = await axios.post(`/api/${type}/${path}`, { - yaml: yaml.dump(conf, { quotingType: '"' }) + yaml: yaml.dump(conf, { quotingType: '"', forceQuotes: true }) }); if (!res.data.created) { @@ -309,7 +310,7 @@ export default { try { let res = await axios.post(`/api/rules/${conf.__praeco_full_path}`, { - yaml: yaml.dump(conf, { quotingType: '"' }) + yaml: yaml.dump(conf, { quotingType: '"', forceQuotes: true }) }); if (res.data.created) { @@ -332,7 +333,7 @@ export default { try { let res = await axios.post(`/api/rules/${conf.__praeco_full_path}`, { - yaml: yaml.dump(conf, { quotingType: '"' }) + yaml: yaml.dump(conf, { quotingType: '"', forceQuotes: true }) }); if (res.data.created) { diff --git a/tests/unit/specs/ConfigYaml.spec.js b/tests/unit/specs/ConfigYaml.spec.js index e3190dfb..73b48e4d 100644 --- a/tests/unit/specs/ConfigYaml.spec.js +++ b/tests/unit/specs/ConfigYaml.spec.js @@ -11,42 +11,40 @@ describe('YAML parsing', () => { let yaml = store.getters['config/yaml'](); - let expected = `__praeco_full_path: test123 + let expected = `__praeco_full_path: "test123" __praeco_query_builder: "{\\"query\\":{\\"logicalOperator\\":\\"all\\",\\"children\\":[]}}" alert: - - slack -alert_subject: this is a test subject -alert_subject_args: [] -alert_text: this is a test body -alert_text_args: [] -alert_text_type: alert_text_only -doc_type: syslog + - "slack" +alert_subject: "this is a test subject" +alert_text: "this is a test body" +alert_text_type: "alert_text_only" +doc_type: "syslog" filter: - query: query_string: query: "@timestamp:*" generate_kibana_discover_url: false -import: BaseRule.config -index: hannibal-* +import: "BaseRule.config" +index: "hannibal-*" is_enabled: false match_enhancements: [] -name: test123 +name: "test123" num_events: 10000 realert: minutes: 5 slack_attach_kibana_discover_url: false slack_channel_override: "#elastalert-debugging" slack_kibana_discover_color: "#ec4b98" -slack_kibana_discover_title: Discover in Kibana -slack_msg_color: danger -slack_title_link: undefined/rules/test123 -slack_username_override: Praeco +slack_kibana_discover_title: "Discover in Kibana" +slack_msg_color: "danger" +slack_title_link: "undefined/rules/test123" +slack_username_override: "Praeco" terms_size: 50 timeframe: minutes: 5 timestamp_field: "@timestamp" -timestamp_type: iso -type: frequency +timestamp_type: "iso" +type: "frequency" use_count_query: true use_strftime_index: false `;