Build should pass again

This commit is contained in:
Matthew Ross 2020-01-16 15:05:31 -05:00
parent e6233405ff
commit 515765e296
44 changed files with 5270 additions and 5205 deletions

1
.gitignore vendored
View File

@ -34,6 +34,7 @@ npm-debug.log
yarn-error.log
testem.log
/typings
.phpunit.result.cache
# e2e
/e2e/*.js

570
package-lock.json generated
View File

@ -5,12 +5,12 @@
"requires": true,
"dependencies": {
"@angular-devkit/architect": {
"version": "0.803.21",
"resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.803.21.tgz",
"integrity": "sha512-E2K/YexIWVyKM/xmyxvDjkJf+wX9u4c8YYpNaK4htsRzA06juc7N1MhlL/jURZiRl5b/K9sapYeq3tMX76saxA==",
"version": "0.803.22",
"resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.803.22.tgz",
"integrity": "sha512-5Gr0LH+Hjd/NLdmi660VBoo3WbzQM7/yeG+ziktb7hbeVaYK4Mejtcg/DJnCoZ3hzlZuZokWVwvpdFo+A9xKbg==",
"dev": true,
"requires": {
"@angular-devkit/core": "8.3.21",
"@angular-devkit/core": "8.3.22",
"rxjs": "6.4.0"
},
"dependencies": {
@ -26,23 +26,23 @@
}
},
"@angular-devkit/build-angular": {
"version": "0.803.21",
"resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.803.21.tgz",
"integrity": "sha512-flfgflvfpwdsm3x/U7QnfbtyZPEbsVipzQAoao1Zo58Beq1a+NsKsWbjrF/x4TSoI2czt0OVWXNytlfXM7LMhg==",
"version": "0.803.22",
"resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.803.22.tgz",
"integrity": "sha512-2q9qLsD52D4GACUAuQhvkgQ7vLAhZzdU0jzfs74RTxqUZ3PS6Ltrrwpdg2kp9RlQ53+nSCYjWBDLk1CxoEt4pg==",
"dev": true,
"requires": {
"@angular-devkit/architect": "0.803.21",
"@angular-devkit/build-optimizer": "0.803.21",
"@angular-devkit/build-webpack": "0.803.21",
"@angular-devkit/core": "8.3.21",
"@angular-devkit/architect": "0.803.22",
"@angular-devkit/build-optimizer": "0.803.22",
"@angular-devkit/build-webpack": "0.803.22",
"@angular-devkit/core": "8.3.22",
"@babel/core": "7.7.5",
"@babel/preset-env": "7.7.6",
"@ngtools/webpack": "8.3.21",
"@ngtools/webpack": "8.3.22",
"ajv": "6.10.2",
"autoprefixer": "9.6.1",
"browserslist": "4.6.6",
"browserslist": "4.8.3",
"cacache": "12.0.2",
"caniuse-lite": "1.0.30000989",
"caniuse-lite": "1.0.30001019",
"circular-dependency-plugin": "5.2.0",
"clean-css": "4.2.1",
"copy-webpack-plugin": "5.1.1",
@ -119,9 +119,9 @@
}
},
"@angular-devkit/build-optimizer": {
"version": "0.803.21",
"resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.803.21.tgz",
"integrity": "sha512-gNN6kPaF4phZco3TmsrNr9tIEKXYsoSeoaUiDUfgmCYwa7fAqM8Ojh7HX6IQuB2PpVmEwKGlCcSh6xDtB33NjA==",
"version": "0.803.22",
"resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.803.22.tgz",
"integrity": "sha512-VIDeQcBn88PjHBTen3BRVA7DJiKEJdDwukx61mUvUDOcY7S5Ot5WqG0nrZifRjha17Z+fl3XuwS9TZNYmlF7WQ==",
"dev": true,
"requires": {
"loader-utils": "1.2.3",
@ -146,13 +146,13 @@
}
},
"@angular-devkit/build-webpack": {
"version": "0.803.21",
"resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.803.21.tgz",
"integrity": "sha512-zCFVla/Xdk8qGVybvnHtoKml2h0/ShasSjT55VNZO1XaTCMqYkQEwwqSGEiVajpauafWjKrKxxBhsmWoI4efAA==",
"version": "0.803.22",
"resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.803.22.tgz",
"integrity": "sha512-RDLAhKHfTFzthzeawHEefYB1MxHiU2I32QzXI3XTCpR2XySw5JG9jIVIcsyDHQH1JtIfpHGq8vgfiTsE3r0YWA==",
"dev": true,
"requires": {
"@angular-devkit/architect": "0.803.21",
"@angular-devkit/core": "8.3.21",
"@angular-devkit/architect": "0.803.22",
"@angular-devkit/core": "8.3.22",
"rxjs": "6.4.0"
},
"dependencies": {
@ -168,9 +168,9 @@
}
},
"@angular-devkit/core": {
"version": "8.3.21",
"resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.3.21.tgz",
"integrity": "sha512-BYyVbrbys535FplX0+GVOlYBg/cyk1U5SRhSxRRFZYi9epVlEBBPk8/6wV4cQPGb6EwXkVj7YtPWXjXcGfzWmA==",
"version": "8.3.22",
"resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.3.22.tgz",
"integrity": "sha512-lOEYcvK3MktjR9YZT/cUjiQE5dZxl8rZ/vgWgwDiL7RtzfXTt8lPapoJe7YKS53gLbUYiBNPCtTyTAqnslWgGA==",
"dev": true,
"requires": {
"ajv": "6.10.2",
@ -198,28 +198,15 @@
}
},
"@angular-devkit/schematics": {
"version": "8.3.21",
"resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-8.3.21.tgz",
"integrity": "sha512-+wH0362CRr/SijVX4w2baY2ANZ4scQ1k2xO8lT+NMeZQkw3IJQPOfwk1IaqiAs2xuBJZcSDH1Gn80+Jh4Dit7w==",
"version": "8.3.22",
"resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-8.3.22.tgz",
"integrity": "sha512-ETLdV1ftT+ZuuiHl6FjFQ4XLQznWMcxWognX+qgByn+DQOXsYRRvZK1L5eG/SG8CKJ8NL5oteTDloDnghARHFw==",
"dev": true,
"requires": {
"@angular-devkit/core": "8.3.21",
"@angular-devkit/core": "8.3.22",
"rxjs": "6.4.0"
},
"dependencies": {
"@angular-devkit/core": {
"version": "8.3.21",
"resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.3.21.tgz",
"integrity": "sha512-BYyVbrbys535FplX0+GVOlYBg/cyk1U5SRhSxRRFZYi9epVlEBBPk8/6wV4cQPGb6EwXkVj7YtPWXjXcGfzWmA==",
"dev": true,
"requires": {
"ajv": "6.10.2",
"fast-json-stable-stringify": "2.0.0",
"magic-string": "0.25.3",
"rxjs": "6.4.0",
"source-map": "0.7.3"
}
},
"rxjs": {
"version": "6.4.0",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz",
@ -228,12 +215,6 @@
"requires": {
"tslib": "^1.9.0"
}
},
"source-map": {
"version": "0.7.3",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
"integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
"dev": true
}
}
},
@ -246,16 +227,16 @@
}
},
"@angular/cli": {
"version": "8.3.21",
"resolved": "https://registry.npmjs.org/@angular/cli/-/cli-8.3.21.tgz",
"integrity": "sha512-ZZpA7mMfIobFT06rBNxm8vucAh8W2s0huJZ4iL0BPujnhIr71PL+gDwssySWDEz2q6i4CkH9QRH76DHhtL6VSQ==",
"version": "8.3.22",
"resolved": "https://registry.npmjs.org/@angular/cli/-/cli-8.3.22.tgz",
"integrity": "sha512-OT2rzwnxwI0ETP7rXCxjxsIAZEYo9wHP/5rRbu3m15GlQ3Bclq34ZDRwC/bRxXL5+1DfmhAs9AjtYNoFoDM4Tg==",
"dev": true,
"requires": {
"@angular-devkit/architect": "0.803.21",
"@angular-devkit/core": "8.3.21",
"@angular-devkit/schematics": "8.3.21",
"@schematics/angular": "8.3.21",
"@schematics/update": "0.803.21",
"@angular-devkit/architect": "0.803.22",
"@angular-devkit/core": "8.3.22",
"@angular-devkit/schematics": "8.3.22",
"@schematics/angular": "8.3.22",
"@schematics/update": "0.803.22",
"@yarnpkg/lockfile": "1.1.0",
"ansi-colors": "4.1.1",
"debug": "^4.1.1",
@ -273,29 +254,6 @@
"uuid": "^3.3.2"
},
"dependencies": {
"@angular-devkit/architect": {
"version": "0.803.21",
"resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.803.21.tgz",
"integrity": "sha512-E2K/YexIWVyKM/xmyxvDjkJf+wX9u4c8YYpNaK4htsRzA06juc7N1MhlL/jURZiRl5b/K9sapYeq3tMX76saxA==",
"dev": true,
"requires": {
"@angular-devkit/core": "8.3.21",
"rxjs": "6.4.0"
}
},
"@angular-devkit/core": {
"version": "8.3.21",
"resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.3.21.tgz",
"integrity": "sha512-BYyVbrbys535FplX0+GVOlYBg/cyk1U5SRhSxRRFZYi9epVlEBBPk8/6wV4cQPGb6EwXkVj7YtPWXjXcGfzWmA==",
"dev": true,
"requires": {
"ajv": "6.10.2",
"fast-json-stable-stringify": "2.0.0",
"magic-string": "0.25.3",
"rxjs": "6.4.0",
"source-map": "0.7.3"
}
},
"ansi-colors": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
@ -326,26 +284,11 @@
"glob": "^7.1.3"
}
},
"rxjs": {
"version": "6.4.0",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz",
"integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==",
"dev": true,
"requires": {
"tslib": "^1.9.0"
}
},
"semver": {
"version": "6.3.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
"dev": true
},
"source-map": {
"version": "0.7.3",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
"integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
"dev": true
}
}
},
@ -2187,12 +2130,12 @@
}
},
"@ngtools/webpack": {
"version": "8.3.21",
"resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-8.3.21.tgz",
"integrity": "sha512-DGqmFQ52sV4uB3y3spQTNLa69oU5cwd1yIqMB4GSM+Qp+hozdzrPA2gVH90N2DDhWe8icsSQHAtZQiR9+BDL8g==",
"version": "8.3.22",
"resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-8.3.22.tgz",
"integrity": "sha512-MES7Q0k6GpQEY74cxElUVy7jIaDBSLvY+eOUN2GKL5CznvBSp3+U5px6X7ZjPGzCp7no1L1JkV9g2e0hPatlcw==",
"dev": true,
"requires": {
"@angular-devkit/core": "8.3.21",
"@angular-devkit/core": "8.3.22",
"enhanced-resolve": "4.1.0",
"rxjs": "6.4.0",
"tree-kill": "1.2.1",
@ -2211,53 +2154,23 @@
}
},
"@schematics/angular": {
"version": "8.3.21",
"resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-8.3.21.tgz",
"integrity": "sha512-KahQ+dHvTsGOZwY6IdzqJZLDEn0G89rrK3OY+7okZujoaLM+LXhxlPoznW1udnZJVTa3VNxYGx11fkgLtRJRqA==",
"version": "8.3.22",
"resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-8.3.22.tgz",
"integrity": "sha512-vD+UgPdbEoFPOH6xe2laFpHn/MC9R5C4A/+J9yQ6HBg5kt1YdyIBakvPOcXQCyWr5VZzDmTyMO76rd3zaef3DQ==",
"dev": true,
"requires": {
"@angular-devkit/core": "8.3.21",
"@angular-devkit/schematics": "8.3.21"
},
"dependencies": {
"@angular-devkit/core": {
"version": "8.3.21",
"resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.3.21.tgz",
"integrity": "sha512-BYyVbrbys535FplX0+GVOlYBg/cyk1U5SRhSxRRFZYi9epVlEBBPk8/6wV4cQPGb6EwXkVj7YtPWXjXcGfzWmA==",
"dev": true,
"requires": {
"ajv": "6.10.2",
"fast-json-stable-stringify": "2.0.0",
"magic-string": "0.25.3",
"rxjs": "6.4.0",
"source-map": "0.7.3"
}
},
"rxjs": {
"version": "6.4.0",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz",
"integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==",
"dev": true,
"requires": {
"tslib": "^1.9.0"
}
},
"source-map": {
"version": "0.7.3",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
"integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
"dev": true
}
"@angular-devkit/core": "8.3.22",
"@angular-devkit/schematics": "8.3.22"
}
},
"@schematics/update": {
"version": "0.803.21",
"resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.803.21.tgz",
"integrity": "sha512-D3BRvEBF2cJEgogvFaNOfqtTFHHv/ctSRfOeAYWjUxILtb+2DpuZ9h5QYDFhN9MPgz/vRaOqFORa3sEZCRkX4g==",
"version": "0.803.22",
"resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.803.22.tgz",
"integrity": "sha512-X+1sJ7YadcYxDqcLX7l7MEAIL3SHIXpCqToQdAZbAE06NdTFvg5eqiKreSdmm7ZdfL0dBe6oXi/yCDVMoL2zcw==",
"dev": true,
"requires": {
"@angular-devkit/core": "8.3.21",
"@angular-devkit/schematics": "8.3.21",
"@angular-devkit/core": "8.3.22",
"@angular-devkit/schematics": "8.3.22",
"@yarnpkg/lockfile": "1.1.0",
"ini": "1.3.5",
"pacote": "9.5.5",
@ -2266,19 +2179,6 @@
"semver-intersect": "1.4.0"
},
"dependencies": {
"@angular-devkit/core": {
"version": "8.3.21",
"resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.3.21.tgz",
"integrity": "sha512-BYyVbrbys535FplX0+GVOlYBg/cyk1U5SRhSxRRFZYi9epVlEBBPk8/6wV4cQPGb6EwXkVj7YtPWXjXcGfzWmA==",
"dev": true,
"requires": {
"ajv": "6.10.2",
"fast-json-stable-stringify": "2.0.0",
"magic-string": "0.25.3",
"rxjs": "6.4.0",
"source-map": "0.7.3"
}
},
"rxjs": {
"version": "6.4.0",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz",
@ -2293,12 +2193,6 @@
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
"dev": true
},
"source-map": {
"version": "0.7.3",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
"integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
"dev": true
}
}
},
@ -2364,9 +2258,9 @@
"dev": true
},
"@types/node": {
"version": "12.12.22",
"resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.22.tgz",
"integrity": "sha512-r5i93jqbPWGXYXxianGATOxTelkp6ih/U0WVnvaqAvTqM+0U6J3kw6Xk6uq/dWNRkEVw/0SLcO5ORXbVNz4FMQ==",
"version": "13.1.6",
"resolved": "https://registry.npmjs.org/@types/node/-/node-13.1.6.tgz",
"integrity": "sha512-Jg1F+bmxcpENHP23sVKkNuU3uaxPnsBMW0cLjleiikFKomJQbsn0Cqk2yDvQArqzZN6ABfBkZ0To7pQ8sLdWDg==",
"dev": true
},
"@types/q": {
@ -2753,14 +2647,6 @@
"dev": true,
"requires": {
"type-fest": "^0.8.1"
},
"dependencies": {
"type-fest": {
"version": "0.8.1",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
"integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
"dev": true
}
}
},
"ansi-html": {
@ -3650,14 +3536,14 @@
}
},
"browserslist": {
"version": "4.6.6",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.6.6.tgz",
"integrity": "sha512-D2Nk3W9JL9Fp/gIcWei8LrERCS+eXu9AM5cfXA8WEZ84lFks+ARnZ0q/R69m2SV3Wjma83QDDPxsNKXUwdIsyA==",
"version": "4.8.3",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.8.3.tgz",
"integrity": "sha512-iU43cMMknxG1ClEZ2MDKeonKE1CCrFVkQK2AqO2YWFmvIrx4JWrvQ4w4hQez6EpVI8rHTtqh/ruHHDHSOKxvUg==",
"dev": true,
"requires": {
"caniuse-lite": "^1.0.30000984",
"electron-to-chromium": "^1.3.191",
"node-releases": "^1.1.25"
"caniuse-lite": "^1.0.30001017",
"electron-to-chromium": "^1.3.322",
"node-releases": "^1.1.44"
}
},
"browserstack": {
@ -3858,9 +3744,9 @@
}
},
"caniuse-lite": {
"version": "1.0.30000989",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000989.tgz",
"integrity": "sha512-vrMcvSuMz16YY6GSVZ0dWDTJP8jqk3iFQ/Aq5iqblPwxSVVZI+zxDyTX0VPqtQsDnfdrBDcsmhgTEOh5R8Lbpw==",
"version": "1.0.30001019",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001019.tgz",
"integrity": "sha512-6ljkLtF1KM5fQ+5ZN0wuyVvvebJxgJPTmScOMaFuQN2QuOzvRJnWSKfzQskQU5IOU4Gap3zasYPIinzwUjoj/g==",
"dev": true
},
"canonical-path": {
@ -3925,9 +3811,9 @@
}
},
"chownr": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.2.tgz",
"integrity": "sha512-GkfeAQh+QNy3wquu9oIZr6SS5x7wGdSgNQvD10X3r+AZr1Oys22HW8kAmDMvNg2+Dm0TeGaEuO8gFwdBXxwO8A==",
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.3.tgz",
"integrity": "sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw==",
"dev": true
},
"chrome-trace-event": {
@ -4162,18 +4048,18 @@
"dev": true
},
"compressible": {
"version": "2.0.17",
"resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.17.tgz",
"integrity": "sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw==",
"version": "2.0.18",
"resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
"integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
"dev": true,
"requires": {
"mime-db": ">= 1.40.0 < 2"
"mime-db": ">= 1.43.0 < 2"
},
"dependencies": {
"mime-db": {
"version": "1.42.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.42.0.tgz",
"integrity": "sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ==",
"version": "1.43.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz",
"integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==",
"dev": true
}
}
@ -4454,37 +4340,20 @@
}
},
"core-js": {
"version": "3.6.1",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.1.tgz",
"integrity": "sha512-186WjSik2iTGfDjfdCZAxv2ormxtKgemjC3SI6PL31qOA0j5LhTDVjHChccoc7brwLvpvLPiMyRlcO88C4l1QQ=="
"version": "3.6.3",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.3.tgz",
"integrity": "sha512-DOO9b18YHR+Wk5kJ/c5YFbXuUETreD4TrvXb6edzqZE3aAEd0eJIAWghZ9HttMuiON8SVCnU3fqA4rPxRDD1HQ=="
},
"core-js-compat": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.0.tgz",
"integrity": "sha512-Z3eCNjGgoYluH89Jt4wVkfYsc/VdLrA2/woX5lm0isO/pCT+P+Y+o65bOuEnjDJLthdwTBxbCVzptTXtc18fJg==",
"version": "3.6.3",
"resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.3.tgz",
"integrity": "sha512-Y3YNGU3bU1yrnzVodop23ghArbKv4IqkZg9MMOWv/h7KT6NRk1/SzHhWDDlubg2+tlcUzAqgj1/GyeJ9fUKMeg==",
"dev": true,
"requires": {
"browserslist": "^4.8.2",
"browserslist": "^4.8.3",
"semver": "7.0.0"
},
"dependencies": {
"browserslist": {
"version": "4.8.2",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.8.2.tgz",
"integrity": "sha512-+M4oeaTplPm/f1pXDw84YohEv7B1i/2Aisei8s4s6k3QsoSHa7i5sz8u/cGQkkatCPxMASKxPualR4wwYgVboA==",
"dev": true,
"requires": {
"caniuse-lite": "^1.0.30001015",
"electron-to-chromium": "^1.3.322",
"node-releases": "^1.1.42"
}
},
"caniuse-lite": {
"version": "1.0.30001016",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001016.tgz",
"integrity": "sha512-yYQ2QfotceRiH4U+h1Us86WJXtVHDmy3nEKIdYPsZCYnOV5/tMgGbmoIlrMzmh2VXlproqYtVaKeGDBkMZifFA==",
"dev": true
},
"semver": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz",
@ -4690,9 +4559,9 @@
"integrity": "sha1-LkYovhncSyFLXAJjDFlx6BFhgGI="
},
"cyclist": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz",
"integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=",
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz",
"integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=",
"dev": true
},
"damerau-levenshtein": {
@ -5090,9 +4959,9 @@
"dev": true
},
"electron-to-chromium": {
"version": "1.3.322",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.322.tgz",
"integrity": "sha512-Tc8JQEfGQ1MzfSzI/bTlSr7btJv/FFO7Yh6tanqVmIWOuNCu6/D1MilIEgLtmWqIrsv+o4IjpLAhgMBr/ncNAA==",
"version": "1.3.331",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.331.tgz",
"integrity": "sha512-GuDv5gkxwRROYnmIVFUohoyrNapWCKLNn80L7Pa+9WRF/oY4t7XLH7wBMsYBgIRwi8BvEvsGKLKh8kOciOp6kA==",
"dev": true
},
"elliptic": {
@ -5355,9 +5224,9 @@
"dev": true
},
"events": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz",
"integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==",
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/events/-/events-3.1.0.tgz",
"integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==",
"dev": true
},
"eventsource": {
@ -5924,12 +5793,12 @@
}
},
"fs-minipass": {
"version": "1.2.6",
"resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.6.tgz",
"integrity": "sha512-crhvyXcMejjv3Z5d2Fa9sf5xLYVCF5O1c71QxbVnbLsmYMBEvDAftewesN/HhY03YRoA7zOMxjNGrF5svGaaeQ==",
"version": "1.2.7",
"resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz",
"integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==",
"dev": true,
"requires": {
"minipass": "^2.2.1"
"minipass": "^2.6.0"
}
},
"fs-write-stream-atomic": {
@ -6540,9 +6409,9 @@
"dev": true
},
"ignore-walk": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz",
"integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==",
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz",
"integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==",
"dev": true,
"requires": {
"minimatch": "^3.0.4"
@ -7550,12 +7419,12 @@
}
},
"karma-jasmine": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-2.0.1.tgz",
"integrity": "sha512-iuC0hmr9b+SNn1DaUD2QEYtUxkS1J+bSJSn7ejdEexs7P8EYvA1CWkEdrDQ+8jVH3AgWlCNwjYsT1chjcNW9lA==",
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-3.1.0.tgz",
"integrity": "sha512-IVGbC8gap5x5NNCEOsAE77ic8rZtHDt6wmO0fFC5yT5FeB8qKnGTeud2mtKyQ41xl7vZkZ7ZxKr4wMGR6tWN+A==",
"dev": true,
"requires": {
"jasmine-core": "^3.3"
"jasmine-core": "^3.5.0"
}
},
"karma-jasmine-html-reporter": {
@ -7827,16 +7696,16 @@
"dev": true
},
"make-fetch-happen": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-5.0.0.tgz",
"integrity": "sha512-nFr/vpL1Jc60etMVKeaLOqfGjMMb3tAHFVJWxHOFCFS04Zmd7kGlMxo0l1tzfhoQje0/UPnd0X8OeGUiXXnfPA==",
"version": "5.0.2",
"resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-5.0.2.tgz",
"integrity": "sha512-07JHC0r1ykIoruKO8ifMXu+xEU8qOXDFETylktdug6vJDACnP+HKevOu3PXyNPzFyTSlz8vrBYlBO1JZRe8Cag==",
"dev": true,
"requires": {
"agentkeepalive": "^3.4.1",
"cacache": "^12.0.0",
"http-cache-semantics": "^3.8.1",
"http-proxy-agent": "^2.1.0",
"https-proxy-agent": "^2.2.1",
"https-proxy-agent": "^2.2.3",
"lru-cache": "^5.1.1",
"mississippi": "^3.0.0",
"node-fetch-npm": "^2.0.2",
@ -7845,35 +7714,6 @@
"ssri": "^6.0.0"
},
"dependencies": {
"cacache": {
"version": "12.0.3",
"resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz",
"integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==",
"dev": true,
"requires": {
"bluebird": "^3.5.5",
"chownr": "^1.1.1",
"figgy-pudding": "^3.5.1",
"glob": "^7.1.4",
"graceful-fs": "^4.1.15",
"infer-owner": "^1.0.3",
"lru-cache": "^5.1.1",
"mississippi": "^3.0.0",
"mkdirp": "^0.5.1",
"move-concurrently": "^1.0.1",
"promise-inflight": "^1.0.1",
"rimraf": "^2.6.3",
"ssri": "^6.0.1",
"unique-filename": "^1.1.1",
"y18n": "^4.0.0"
}
},
"graceful-fs": {
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz",
"integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==",
"dev": true
},
"lru-cache": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
@ -7883,16 +7723,10 @@
"yallist": "^3.0.2"
}
},
"y18n": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
"integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
"dev": true
},
"yallist": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz",
"integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==",
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
"dev": true
}
}
@ -8194,9 +8028,9 @@
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
},
"minipass": {
"version": "2.3.5",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.5.tgz",
"integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==",
"version": "2.9.0",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz",
"integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==",
"dev": true,
"requires": {
"safe-buffer": "^5.1.2",
@ -8204,20 +8038,20 @@
},
"dependencies": {
"yallist": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz",
"integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==",
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
"dev": true
}
}
},
"minizlib": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.2.1.tgz",
"integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==",
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz",
"integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==",
"dev": true,
"requires": {
"minipass": "^2.2.1"
"minipass": "^2.9.0"
}
},
"mississippi": {
@ -8441,9 +8275,9 @@
}
},
"node-releases": {
"version": "1.1.43",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.43.tgz",
"integrity": "sha512-Rmfnj52WNhvr83MvuAWHEqXVoZXCcDQssSOffU4n4XOL9sPrP61mSZ88g25NqmABDvH7PiAlFCzoSCSdzA293w==",
"version": "1.1.45",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.45.tgz",
"integrity": "sha512-cXvGSfhITKI8qsV116u2FTzH5EWZJfgG7d4cpqwF8I8+1tWpD6AsvvGRKq2onR0DNj1jfqsjkXZsm14JMS7Cyg==",
"dev": true,
"requires": {
"semver": "^6.3.0"
@ -8658,10 +8492,13 @@
}
},
"npm-bundled": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.6.tgz",
"integrity": "sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==",
"dev": true
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz",
"integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==",
"dev": true,
"requires": {
"npm-normalize-package-bin": "^1.0.1"
}
},
"npm-normalize-package-bin": {
"version": "1.0.1",
@ -8682,9 +8519,9 @@
}
},
"npm-packlist": {
"version": "1.4.4",
"resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.4.tgz",
"integrity": "sha512-zTLo8UcVYtDU3gdeaFu2Xu0n0EvelfHDGuqtNIn5RO7yQj4H1TqNdBc/yZjxnWA0PVB8D3Woyp0i5B43JwQ6Vw==",
"version": "1.4.7",
"resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.7.tgz",
"integrity": "sha512-vAj7dIkp5NhieaGZxBJB8fF4R0078rqsmhJcAfXZ6O7JJhjhPK96n5Ry1oZcfLXgfun0GWTZPOxaEyqv8GBykQ==",
"dev": true,
"requires": {
"ignore-walk": "^3.0.1",
@ -8703,9 +8540,9 @@
}
},
"npm-registry-fetch": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-4.0.0.tgz",
"integrity": "sha512-Jllq35Jag8dtv0M17ue74XtdQTyqKzuAYGiX9mAjOhkmNjib3bBUgK6mUY61+AHnXeSRobQkpY3/xIOS/omptw==",
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-4.0.2.tgz",
"integrity": "sha512-Z0IFtPEozNdeZRPh3aHHxdG+ZRpzcbQaJLthsm3VhNf6DScicTFRHZzK82u8RsJUsUHkX+QH/zcB/5pmd20H4A==",
"dev": true,
"requires": {
"JSONStream": "^1.3.4",
@ -8713,7 +8550,8 @@
"figgy-pudding": "^3.4.1",
"lru-cache": "^5.1.1",
"make-fetch-happen": "^5.0.0",
"npm-package-arg": "^6.1.0"
"npm-package-arg": "^6.1.0",
"safe-buffer": "^5.2.0"
},
"dependencies": {
"lru-cache": {
@ -8725,10 +8563,16 @@
"yallist": "^3.0.2"
}
},
"safe-buffer": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz",
"integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==",
"dev": true
},
"yallist": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz",
"integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==",
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
"dev": true
}
}
@ -8976,22 +8820,22 @@
},
"dependencies": {
"es-abstract": {
"version": "1.17.0-next.1",
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.0-next.1.tgz",
"integrity": "sha512-7MmGr03N7Rnuid6+wyhD9sHNE2n4tFSwExnU2lQl3lIo2ShXWGePY80zYaoMOmILWv57H0amMjZGHNzzGG70Rw==",
"version": "1.17.0",
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.0.tgz",
"integrity": "sha512-yYkE07YF+6SIBmg1MsJ9dlub5L48Ek7X0qz+c/CPCHS9EBXfESorzng4cJQjJW5/pB6vDF41u7F8vUhLVDqIug==",
"dev": true,
"requires": {
"es-to-primitive": "^1.2.1",
"function-bind": "^1.1.1",
"has": "^1.0.3",
"has-symbols": "^1.0.1",
"is-callable": "^1.1.4",
"is-regex": "^1.0.4",
"is-callable": "^1.1.5",
"is-regex": "^1.0.5",
"object-inspect": "^1.7.0",
"object-keys": "^1.1.1",
"object.assign": "^4.1.0",
"string.prototype.trimleft": "^2.1.0",
"string.prototype.trimright": "^2.1.0"
"string.prototype.trimleft": "^2.1.1",
"string.prototype.trimright": "^2.1.1"
}
},
"es-to-primitive": {
@ -9010,6 +8854,21 @@
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz",
"integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==",
"dev": true
},
"is-callable": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz",
"integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==",
"dev": true
},
"is-regex": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz",
"integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==",
"dev": true,
"requires": {
"has": "^1.0.3"
}
}
}
},
@ -9274,18 +9133,6 @@
"mkdirp": "^0.5.0",
"safe-buffer": "^5.1.2",
"yallist": "^3.0.3"
},
"dependencies": {
"minipass": {
"version": "2.9.0",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz",
"integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==",
"dev": true,
"requires": {
"safe-buffer": "^5.1.2",
"yallist": "^3.0.0"
}
}
}
},
"yallist": {
@ -9303,12 +9150,12 @@
"dev": true
},
"parallel-transform": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz",
"integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=",
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz",
"integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==",
"dev": true,
"requires": {
"cyclist": "~0.2.2",
"cyclist": "^1.0.1",
"inherits": "^2.0.3",
"readable-stream": "^2.1.5"
}
@ -10261,22 +10108,22 @@
},
"dependencies": {
"es-abstract": {
"version": "1.17.0-next.1",
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.0-next.1.tgz",
"integrity": "sha512-7MmGr03N7Rnuid6+wyhD9sHNE2n4tFSwExnU2lQl3lIo2ShXWGePY80zYaoMOmILWv57H0amMjZGHNzzGG70Rw==",
"version": "1.17.0",
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.0.tgz",
"integrity": "sha512-yYkE07YF+6SIBmg1MsJ9dlub5L48Ek7X0qz+c/CPCHS9EBXfESorzng4cJQjJW5/pB6vDF41u7F8vUhLVDqIug==",
"dev": true,
"requires": {
"es-to-primitive": "^1.2.1",
"function-bind": "^1.1.1",
"has": "^1.0.3",
"has-symbols": "^1.0.1",
"is-callable": "^1.1.4",
"is-regex": "^1.0.4",
"is-callable": "^1.1.5",
"is-regex": "^1.0.5",
"object-inspect": "^1.7.0",
"object-keys": "^1.1.1",
"object.assign": "^4.1.0",
"string.prototype.trimleft": "^2.1.0",
"string.prototype.trimright": "^2.1.0"
"string.prototype.trimleft": "^2.1.1",
"string.prototype.trimright": "^2.1.1"
}
},
"es-to-primitive": {
@ -10295,6 +10142,21 @@
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz",
"integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==",
"dev": true
},
"is-callable": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz",
"integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==",
"dev": true
},
"is-regex": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz",
"integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==",
"dev": true,
"requires": {
"has": "^1.0.3"
}
}
}
},
@ -10338,9 +10200,9 @@
"dev": true
},
"regjsparser": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.1.tgz",
"integrity": "sha512-7LutE94sz/NKSYegK+/4E77+8DipxF+Qn2Tmu362AcmsF2NYq/wx3+ObvU90TKEhjf7hQoFXo23ajjrXP7eUgg==",
"version": "0.6.2",
"resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.2.tgz",
"integrity": "sha512-E9ghzUtoLwDekPT0DYCp+c4h+bvuUpe6rRHCTYn6eGoqj1LgKXxT6I0Il4WbjhQkOghzi/V+y03bPKvbllL93Q==",
"dev": true,
"requires": {
"jsesc": "~0.5.0"
@ -10897,9 +10759,9 @@
"dev": true
},
"smart-buffer": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.0.2.tgz",
"integrity": "sha512-JDhEpTKzXusOqXZ0BUIdH+CjFdO/CR3tLlf5CN34IypI+xMmXW1uB16OOY8z3cICbJlDAVJzNbwBhNO0wt9OAw==",
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.1.0.tgz",
"integrity": "sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw==",
"dev": true
},
"snapdragon": {
@ -11158,13 +11020,13 @@
}
},
"socks": {
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/socks/-/socks-2.3.2.tgz",
"integrity": "sha512-pCpjxQgOByDHLlNqlnh/mNSAxIUkyBBuwwhTcV+enZGbDaClPvHdvm6uvOwZfFJkam7cGhBNbb4JxiP8UZkRvQ==",
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/socks/-/socks-2.3.3.tgz",
"integrity": "sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA==",
"dev": true,
"requires": {
"ip": "^1.1.5",
"smart-buffer": "4.0.2"
"ip": "1.1.5",
"smart-buffer": "^4.1.0"
}
},
"socks-proxy-agent": {
@ -11502,9 +11364,9 @@
}
},
"stream-shift": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz",
"integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=",
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz",
"integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==",
"dev": true
},
"streamroller": {
@ -12001,16 +11863,16 @@
}
},
"ts-node": {
"version": "8.5.4",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.5.4.tgz",
"integrity": "sha512-izbVCRV68EasEPQ8MSIGBNK9dc/4sYJJKYA+IarMQct1RtEot6Xp0bXuClsbUSnKpg50ho+aOAx8en5c+y4OFw==",
"version": "8.6.1",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.6.1.tgz",
"integrity": "sha512-KqPbO7/UuOPE4ANAOV9geZjk6tet6rK2K+DFeEJq6kIXUi0nLkrOMksozGkIlFopOorkStlwar3DdWYrdl7zCw==",
"dev": true,
"requires": {
"arg": "^4.1.0",
"diff": "^4.0.1",
"make-error": "^1.1.1",
"source-map-support": "^0.5.6",
"yn": "^3.0.0"
"yn": "^4.0.0"
}
},
"tslib": {
@ -12099,6 +11961,12 @@
"integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
"optional": true
},
"type-fest": {
"version": "0.8.1",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
"integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
"dev": true
},
"type-is": {
"version": "1.6.18",
"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
@ -14615,9 +14483,9 @@
"dev": true
},
"yn": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
"integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yn/-/yn-4.0.0.tgz",
"integrity": "sha512-huWiiCS4TxKc4SfgmTwW1K7JmXPPAmuXWYy4j9qjQo4+27Kni8mGhAAi1cloRWmBe2EqcLgt3IGqQoRL/MtPgg==",
"dev": true
},
"zone.js": {

View File

@ -34,7 +34,7 @@
"test": "npm-run-all test:app test:api",
"test:app": "ng test --code-coverage --watch=false",
"test:api": "./src/api/vendor/phpunit/phpunit/phpunit -c test/api/phpunit.xml",
"test:api-single": "./src/api/vendor/phpunit/phpunit/phpunit -c test/api/phpunit.xml -g single",
"test:api-single": "./src/api/vendor/phpunit/phpunit/phpunit -c test/api/phpunit.xml --group single",
"test:watch": "ng test --code-coverage --watch",
"lint": "ng lint",
"postinstall": "cd src/api/ && composer update && composer install --optimize-autoloader && cd ../../"
@ -52,7 +52,7 @@
"chartist": "^0.11.4",
"chartist-plugin-tooltips": "^0.0.17",
"classlist.js": "^1.1.20150312",
"core-js": "^3.6.1",
"core-js": "^3.6.3",
"dragula": "^3.7.2",
"highlight.js": "^9.17.1",
"marked": "^0.8.0",
@ -63,8 +63,8 @@
"zone.js": "^0.9.1"
},
"devDependencies": {
"@angular-devkit/build-angular": "^0.803.21",
"@angular/cli": "^8.3.21",
"@angular-devkit/build-angular": "^0.803.22",
"@angular/cli": "^8.3.22",
"@angular/compiler-cli": "^8.2.14",
"@angular/language-service": "^8.2.14",
"@types/chartist": "^0.9.46",
@ -72,7 +72,7 @@
"@types/jasmine": "~3.5.0",
"@types/jasminewd2": "~2.0.8",
"@types/marked": "^0.7.2",
"@types/node": "^12.12.22",
"@types/node": "^13.1.6",
"bourbon": "6.0.0",
"bourbon-neat": "4.0.0",
"codelyzer": "^5.2.1",
@ -82,13 +82,13 @@
"karma": "^4.4.1",
"karma-chrome-launcher": "^3.1.0",
"karma-coverage-istanbul-reporter": "^2.1.1",
"karma-jasmine": "~2.0.1",
"karma-jasmine": "~3.1.0",
"karma-jasmine-html-reporter": "^1.5.1",
"nodemon": "^2.0.2",
"npm-run-all": "^4.1.5",
"protractor": "~5.4.2",
"puppeteer": "^2.0.0",
"ts-node": "^8.5.4",
"ts-node": "^8.6.1",
"tslint": "~5.20.1",
"typescript": "^3.5.3"
}

View File

@ -2,7 +2,7 @@
$container = $app->getContainer();
// Inject a Monolog logger into the dependency container
$container['logger'] = function($c) {
$container['logger'] = function() {
$logger = new Monolog\Logger('API');
$fileHandler = new Monolog\Handler\StreamHandler('logs/api.log');
@ -13,7 +13,7 @@ $container['logger'] = function($c) {
// Replace notFoundHandler to use an API response
$container['notFoundHandler'] = function($c) {
return function($request, $response) use ($c) {
return function() use ($c) {
return $c['response']
->withHeader('Content-Type', 'application/json')
->write('{ message: "Matching API call not found." }');
@ -22,7 +22,7 @@ $container['notFoundHandler'] = function($c) {
// Replace the errorHandler to use an API response
$container['errorHandler'] = function ($c) {
return function ($request, $response, $exception) use ($c) {
return function ($exception) use ($c) {
$c['logger']->addError('Server error', $exception->getTrace());
return $c['response']->withStatus(500)
@ -33,7 +33,7 @@ $container['errorHandler'] = function ($c) {
};
$container['phpErrorHandler'] = function ($c) {
return function ($request, $response, $exception) use ($c) {
return function ($exception) use ($c) {
$c['logger']->addError('Server error', $exception->getTrace());
return $c['response']->withStatus(500)

View File

@ -1,12 +1,12 @@
{
"require": {
"monolog/monolog": "^1.18",
"gabordemooij/redbean": "^5.1",
"slim/slim": "^3.3",
"monolog/monolog": "^2.0",
"gabordemooij/redbean": "^5.4",
"slim/slim": "^4.3",
"firebase/php-jwt": "^5.0",
"phpmailer/phpmailer": "^6.0",
"phpunit/phpunit": "^6.0",
"myclabs/php-enum": "^1.5"
"phpmailer/phpmailer": "^6.1",
"phpunit/phpunit": "^8.5",
"myclabs/php-enum": "^1.7"
},
"license": "MIT",
"authors": [

681
src/api/composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -99,7 +99,7 @@ class Boards extends BaseController {
$data = json_decode($request->getBody());
if (!property_exists($args, 'id')) {
if (is_null($args) || !array_key_exists('id', $args)) {
$this->logger->addError('Update Board: ', [$data]);
$this->apiJson->addAlert('error', 'Error updating board. ' .
'Please check your entries and try again.');
@ -113,14 +113,6 @@ class Boards extends BaseController {
return $this->jsonResponse($response, 403);
}
if (!property_exists($data, 'id')) {
$this->logger->addError('Update Board: ', [$board, $data]);
$this->apiJson->addAlert('error', 'Error updating board. ' .
'Please check your entries and try again.');
return $this->jsonResponse($response);
}
$update = R::load('board', (int)$args['id']);
$update->id = BeanLoader::LoadBoard($update, $request->getBody())
? $board->id : 0;

View File

@ -78,6 +78,15 @@ class Columns extends BaseController {
return $this->jsonResponse($response, $status);
}
$data = json_decode($request->getBody());
if (is_null($args) || !array_key_exists('id', $args)) {
$this->logger->addError('Update Task: ', [$data]);
$this->apiJson->addAlert('error', 'Error updating task. Please try again.');
return $this->jsonResponse($response);
}
$column = R::load('column', (int)$args['id']);
$update = R::dispense('column');

View File

@ -79,6 +79,16 @@ class Comments extends BaseController {
return $this->jsonResponse($response, $status);
}
$data = json_decode($request->getBody());
if (is_null($args) || !$args['id']) {
$this->logger->addError('Update Comment: ', [$data]);
$this->apiJson->addAlert('error', 'Error updating comment. ' .
'Please try again.');
return $this->jsonResponse($response);
}
$actor = R::load('user', Auth::GetUserId($request));
$comment = R::load('comment', (int)$args['id']);
@ -94,7 +104,6 @@ class Comments extends BaseController {
}
} // @codeCoverageIgnore
$data = json_decode($request->getBody());
$update = R::dispense('comment');
$update->id = BeanLoader::LoadComment($update, json_encode($data))
? $comment->id

View File

@ -84,6 +84,15 @@ class Tasks extends BaseController {
return $this->jsonResponse($response, $status);
}
$data = json_decode($request->getBody());
if (is_null($args) || !array_key_exists('id', $args)) {
$this->logger->addError('Update Task: ', [$data]);
$this->apiJson->addAlert('error', 'Error updating task. Please try again.');
return $this->jsonResponse($response);
}
$task = R::load('task', (int)$args['id']);
$update = R::load('task', (int)$args['id']);
@ -209,7 +218,9 @@ class Tasks extends BaseController {
}
private function checkAutomaticActions($before, $after) {
$boardId = $this->getBoardId($after[0]['column_id']);
$boardId = $this->getBoardId(
is_array($after) ? $after[0]['column_id'] : $after['column_id']
);
$autoActions = R::find('autoaction', ' board_id = ? ', [ $boardId ]);
foreach ($autoActions as $action) {
@ -220,6 +231,7 @@ class Tasks extends BaseController {
$this->alterTask($action, $after[0]['id']);
}
break;
case ActionTrigger::ASSIGNED_TO_USER():
$prevAssigned = $this->isInList($action->source_id,
isset($before[0]['sharedUser']) ?
@ -236,6 +248,7 @@ class Tasks extends BaseController {
}
}
break;
case ActionTrigger::ADDED_TO_CATEGORY():
$prevAssigned = $this->isInList($action->source_id,
isset($before[0]['sharedCategory']) ?
@ -250,8 +263,8 @@ class Tasks extends BaseController {
$this->alterTask($action, $after[0]['id']);
}
}
break;
case ActionTrigger::POINTS_CHANGED():
$points = (isset($before[0]['points'])) ?
(int)$before[0]['points'] :
@ -263,6 +276,7 @@ class Tasks extends BaseController {
$after[0]['points']);
}
break;
}
}
}

View File

@ -132,6 +132,7 @@ export class BoardDisplayComponent implements OnInit, OnDestroy, AfterContentIni
}
});
/* istanbul ignore next */
this.dragula.dropModel('tasks-bag').subscribe((value: any) => {
const taskId = +value[1].id;
const toColumnId = +value[2].parentNode.id;
@ -298,6 +299,7 @@ export class BoardDisplayComponent implements OnInit, OnDestroy, AfterContentIni
}
}
/* istanbul ignore next */
private changeTaskColumn(taskId: number, toColumnId: number) {
const column = this.activeBoard.columns
.find(col => col.id === toColumnId);

View File

@ -134,6 +134,7 @@ export class BoardService {
);
}
/* istanbul ignore next */
uploadAttachment(attachment: Attachment, data: FormData): Observable<ApiResponse> {
const headers = new HttpHeaders();
const options = { headers, params: new HttpParams() };
@ -151,7 +152,10 @@ export class BoardService {
}
private defaultCallback = (err: any, text: string) => {
console.log('default', err, text);
if (err) {
return '';
}
return text;
}

View File

@ -281,10 +281,12 @@ export class ColumnDisplayComponent implements OnInit, OnDestroy {
});
}
/* istanbul ignore next */
fileChange(file: File) {
this.fileUpload = file;
}
/* istanbul ignore next */
uploadFile() {
if (!this.fileUpload) {
this.notes.add({ type: 'error', text: this.strings.boards_taskNoFileError });

View File

@ -1,5 +1,6 @@
import { Component, Input } from '@angular/core';
/* istanbul ignore next */
@Component({
selector: 'tb-calendar',
templateUrl: './calendar.component.html'

View File

@ -1,6 +1,7 @@
import { Component, Input, AfterViewInit } from '@angular/core';
import * as Chartist from 'chartist';
/* istanbul ignore next */
@Component({
selector: 'tb-charts',
templateUrl: './charts.component.html'

View File

@ -4,6 +4,7 @@ import { Title } from '@angular/platform-browser';
// import { Charts } from './charts/charts.component';
// import { Calendar } from './calendar/calendar.component';
/* istanbul ignore next */
@Component({
selector: 'tb-dashboard',
templateUrl: './dashboard.component.html'

View File

@ -5,14 +5,14 @@ use RedBeanPHP\R;
class ActivityTest extends PHPUnit\Framework\TestCase {
private $activity;
public static function setupBeforeClass() {
public static function setUpBeforeClass(): void {
try {
R::setup('sqlite:tests.db');
} catch (Exception $ex) {
}
}
public function setUp() {
public function setUp(): void {
R::nuke();
Auth::CreateInitialAdmin(new ContainerMock());

View File

@ -5,14 +5,14 @@ use RedBeanPHP\R;
class AttachmentsTest extends PHPUnit\Framework\TestCase {
private $attachments;
public static function setupBeforeClass() {
public static function setUpBeforeClass(): void {
try {
R::setup('sqlite:tests.db');
} catch (Exception $ex) {
}
}
public function setUp() {
public function setUp(): void {
R::nuke();
Auth::CreateInitialAdmin(new ContainerMock());

View File

@ -5,14 +5,14 @@ use Firebase\JWT\JWT;
class AuthTest extends PHPUnit\Framework\TestCase {
private $auth;
public static function setupBeforeClass() {
public static function setUpBeforeClass(): void {
try {
R::setup('sqlite:tests.db');
} catch (Exception $ex) {
}
}
public function setUp() {
public function setUp(): void {
R::nuke();
$this->auth = new Auth(new ContainerMock());

View File

@ -5,14 +5,14 @@ use RedBeanPHP\R;
class AutoActionsTest extends PHPUnit\Framework\TestCase {
private $actions;
public static function setupBeforeClass() {
public static function setUpBeforeClass(): void {
try {
R::setup('sqlite:tests.db');
} catch (Exception $ex) {
}
}
public function setUp() {
public function setUp(): void {
R::nuke();
Auth::CreateInitialAdmin(new ContainerMock());

View File

@ -5,14 +5,14 @@ use RedBeanPHP\R;
class BoardsTest extends PHPUnit\Framework\TestCase {
private $boards;
public static function setupBeforeClass() {
public static function setUpBeforeClass(): void {
try {
R::setup('sqlite:tests.db');
} catch (Exception $ex) {
}
}
public function setUp() {
public function setUp(): void {
R::nuke();
Auth::CreateInitialAdmin(new ContainerMock());
@ -229,11 +229,14 @@ class BoardsTest extends PHPUnit\Framework\TestCase {
public function testUpdateBoardForbidden() {
DataMock::CreateBoardAdminUser();
$args = [];
$args['id'] = 1;
$request = new RequestMock();
$request->header = [DataMock::GetJwt(2)];
$actual = $this->boards->updateBoard($request,
new ResponseMock(), null);
new ResponseMock(), $args);
$this->assertEquals('Access restricted.',
$actual->alerts[0]['text']);
}

View File

@ -5,14 +5,14 @@ use RedBeanPHP\R;
class ColumnsTest extends PHPUnit\Framework\TestCase {
private $columns;
public static function setupBeforeClass() {
public static function setUpBeforeClass(): void {
try {
R::setup('sqlite:tests.db');
} catch (Exception $ex) {
}
}
public function setUp() {
public function setUp(): void {
R::nuke();
Auth::CreateInitialAdmin(new ContainerMock());
@ -192,6 +192,13 @@ class ColumnsTest extends PHPUnit\Framework\TestCase {
$request->header = [DataMock::GetJwt()];
$request->invalidPayload = true;
$args = [];
$args['id'] = 1;
$response = $this->columns->updateColumn($request,
new ResponseMock(), $args);
$this->assertEquals('error', $response->alerts[0]['type']);
$response = $this->columns->updateColumn($request,
new ResponseMock(), null);
$this->assertEquals('error', $response->alerts[0]['type']);

View File

@ -5,14 +5,14 @@ use RedBeanPHP\R;
class CommentsTest extends PHPUnit\Framework\TestCase {
private $comments;
public static function setupBeforeClass() {
public static function setUpBeforeClass(): void {
try {
R::setup('sqlite:tests.db');
} catch (Exception $ex) {
}
}
public function setUp() {
public function setUp(): void {
R::nuke();
Auth::CreateInitialAdmin(new ContainerMock());
@ -154,6 +154,13 @@ class CommentsTest extends PHPUnit\Framework\TestCase {
$request->header = [DataMock::GetJwt()];
$request->invalidPayload = true;
$args = [];
$args['id'] = 1;
$response = $this->comments->updateComment($request,
new ResponseMock(), $args);
$this->assertEquals('error', $response->alerts[0]['type']);
$response = $this->comments->updateComment($request,
new ResponseMock(), null);
$this->assertEquals('error', $response->alerts[0]['type']);

View File

@ -5,14 +5,14 @@ use RedBeanPHP\R;
class TasksTest extends PHPUnit\Framework\TestCase {
private $tasks;
public static function setupBeforeClass() {
public static function setUpBeforeClass(): void {
try {
R::setup('sqlite:tests.db');
} catch (Exception $ex) {
}
}
public function setUp() {
public function setUp(): void {
R::nuke();
Auth::CreateInitialAdmin(new ContainerMock());
@ -223,6 +223,13 @@ class TasksTest extends PHPUnit\Framework\TestCase {
$request->header = [DataMock::getJwt()];
$request->invalidPayload = true;
$args = [];
$args['id'] = 1;
$response = $this->tasks->updateTask($request,
new ResponseMock(), $args);
$this->assertEquals('error', $response->alerts[0]['type']);
$response = $this->tasks->updateTask($request,
new ResponseMock(), null);
$this->assertEquals('error', $response->alerts[0]['type']);

View File

@ -5,14 +5,14 @@ use RedBeanPHP\R;
class UsersTest extends PHPUnit\Framework\TestCase {
private $users;
public static function setupBeforeClass() {
public static function setUpBeforeClass(): void {
try {
R::setup('sqlite:tests.db');
} catch (Exception $ex) {
}
}
public function setUp() {
public function setUp(): void {
R::nuke();
Auth::CreateInitialAdmin(new ContainerMock());

View File

@ -1,6 +1,6 @@
<phpunit>
<testsuites>
<testsuite>
<testsuite name="api">
<directory>./</directory>
</testsuite>
</testsuites>

View File

@ -82,7 +82,7 @@ describe('ApiInterceptor', () => {
it('handles errors and clears the JWT',
inject([HttpClient, HttpTestingController],
(http: HttpClient, httpMock: HttpTestingController) => {
sessionStorage.setItem('taskboard.jwt', 'fake');
sessionStorage.setItem('taskboard.jwt', null);
http.get('').subscribe(response => {
expect(response).toBeTruthy();

View File

@ -41,180 +41,186 @@ describe('BoardService', () => {
expect(service).toBeTruthy();
});
// it('lets the active board get updated', () => {
// let changed = false;
//
// service.activeBoardChanged.subscribe(() => (changed = true));
//
// service.updateActiveBoard(<any>{});
//
// expect(changed).toEqual(true);
// });
//
// it('gets all boards', () => {
// service.getBoards().subscribe(response => {
// expect(response.data.length).toEqual(0);
// });
//
// testCall('api/boards', 'GET');
// });
//
// it('handles errors when getting all boards', () => {
// service.getBoards().subscribe(() => {}, response => {
// expect(response.alerts.length).toEqual(1);
// });
//
// testCall('api/boards', 'GET', true);
// });
//
// it('toggles the collapsed state of a column', () => {
// service.toggleCollapsed(1, 1).subscribe(response => {
// expect(response.data.length).toEqual(0);
// });
//
// testCall('api/users/1/cols', 'POST');
// });
//
// it('handles error when toggling collapse', () => {
// service.toggleCollapsed(1, 1).subscribe(() => {}, response => {
// expect(response.alerts.length).toEqual(1);
// });
//
// testCall('api/users/1/cols', 'POST', true);
// });
//
// it('updates a board', () => {
// service.updateBoard(<any>{ id: 1 }).subscribe(response => {
// expect(response.data.length).toEqual(0);
// });
//
// testCall('api/boards/1', 'POST');
// });
//
// it('handles errors on board update', () => {
// service.updateBoard(<any>{ id: 1 }).subscribe(() => {}, response => {
// expect(response.alerts.length).toEqual(1);
// });
//
// testCall('api/boards/1', 'POST', true);
// });
//
// it('updates a column', () => {
// service.updateColumn(<any>{ id: 1 }).subscribe(response => {
// expect(response.data.length).toEqual(0);
// });
//
// testCall('api/columns/1', 'POST');
// });
//
// it('handles errors on column update', () => {
// service.updateColumn(<any>{ id: 1 }).subscribe(() => {}, response => {
// expect(response.alerts.length).toEqual(1);
// });
//
// testCall('api/columns/1', 'POST', true);
// });
//
// it('adds a task', () => {
// service.addTask(<any>{}).subscribe(response => {
// expect(response.data.length).toEqual(0);
// });
//
// testCall('api/tasks', 'POST');
// });
//
// it('handles errors on task add', () => {
// service.addTask(<any>{}).subscribe(() => {}, response => {
// expect(response.alerts.length).toEqual(1);
// });
//
// testCall('api/tasks', 'POST', true);
// });
//
// it('updates a task', () => {
// service.updateTask(<any>{ id: 1 }).subscribe(response => {
// expect(response.data.length).toEqual(0);
// });
//
// testCall('api/tasks/1', 'POST');
// });
//
// it('handles errors on task update', () => {
// service.updateTask(<any>{ id: 1 }).subscribe(() => {}, response => {
// expect(response.alerts.length).toEqual(1);
// });
//
// testCall('api/tasks/1', 'POST', true);
// });
//
// it('removes a task', () => {
// service.removeTask(1).subscribe(response => {
// expect(response.data.length).toEqual(0);
// });
//
// testCall('api/tasks/1', 'DELETE');
// });
//
// it('handles errors on task removal', () => {
// service.removeTask(1).subscribe(() => {}, response => {
// expect(response.alerts.length).toEqual(1);
// });
//
// testCall('api/tasks/1', 'DELETE', true);
// });
//
// it('gets task activity', () => {
// service.getTaskActivity(1).subscribe(response => {
// expect(response.data.length).toEqual(0);
// });
//
// testCall('api/activity/task/1', 'GET');
// });
//
// it('handles errors on get task activity', () => {
// service.getTaskActivity(1).subscribe(() => {}, response => {
// expect(response.alerts.length).toEqual(1);
// });
//
// testCall('api/activity/task/1', 'GET', true);
// });
//
// it('updates a comment', () => {
// service.updateComment(<any>{ id: 1 }).subscribe(response => {
// expect(response.data.length).toEqual(0);
// });
//
// testCall('api/comments/1', 'POST');
// });
//
// it('handles errors on comment update', () => {
// service.updateComment(<any>{ id: 1 }).subscribe(() => {}, response => {
// expect(response.alerts.length).toEqual(1);
// });
//
// testCall('api/comments/1', 'POST', true);
// });
//
// it('removes a comment', () => {
// service.removeComment(1).subscribe(response => {
// expect(response.data.length).toEqual(0);
// });
//
// testCall('api/comments/1', 'DELETE');
// });
//
// it('handles errors on comment removal', () => {
// service.removeComment(1).subscribe(() => {}, response => {
// expect(response.alerts.length).toEqual(1);
// });
//
// testCall('api/comments/1', 'DELETE', true);
// });
//
// it('refreshes the API token', () => {
// service.refreshToken();
// testCall('api/refresh', 'POST');
// });
it('lets the active board get updated', () => {
let changed = false;
service.activeBoardChanged.subscribe(() => (changed = true));
service.updateActiveBoard(<any>{});
expect(changed).toEqual(true);
});
it('gets all boards', () => {
service.getBoards().subscribe(response => {
expect(response.data.length).toEqual(0);
});
testCall('api/boards', 'GET');
});
it('converts markdown', () => {
const actual = service.convertMarkdown('# Test');
expect(actual.html).toEqual('<h1 id="test">Test</h1>\n');
});
it('handles errors when getting all boards', () => {
service.getBoards().subscribe(() => {}, response => {
expect(response.alerts.length).toEqual(1);
});
testCall('api/boards', 'GET', true);
});
it('toggles the collapsed state of a column', () => {
service.toggleCollapsed(1, 1).subscribe(response => {
expect(response.data.length).toEqual(0);
});
testCall('api/users/1/cols', 'POST');
});
it('handles error when toggling collapse', () => {
service.toggleCollapsed(1, 1).subscribe(() => {}, response => {
expect(response.alerts.length).toEqual(1);
});
testCall('api/users/1/cols', 'POST', true);
});
it('updates a board', () => {
service.updateBoard(<any>{ id: 1 }).subscribe(response => {
expect(response.data.length).toEqual(0);
});
testCall('api/boards/1', 'POST');
});
it('handles errors on board update', () => {
service.updateBoard(<any>{ id: 1 }).subscribe(() => {}, response => {
expect(response.alerts.length).toEqual(1);
});
testCall('api/boards/1', 'POST', true);
});
it('updates a column', () => {
service.updateColumn(<any>{ id: 1 }).subscribe(response => {
expect(response.data.length).toEqual(0);
});
testCall('api/columns/1', 'POST');
});
it('handles errors on column update', () => {
service.updateColumn(<any>{ id: 1 }).subscribe(() => {}, response => {
expect(response.alerts.length).toEqual(1);
});
testCall('api/columns/1', 'POST', true);
});
it('adds a task', () => {
service.addTask(<any>{}).subscribe(response => {
expect(response.data.length).toEqual(0);
});
testCall('api/tasks', 'POST');
});
it('handles errors on task add', () => {
service.addTask(<any>{}).subscribe(() => {}, response => {
expect(response.alerts.length).toEqual(1);
});
testCall('api/tasks', 'POST', true);
});
it('updates a task', () => {
service.updateTask(<any>{ id: 1 }).subscribe(response => {
expect(response.data.length).toEqual(0);
});
testCall('api/tasks/1', 'POST');
});
it('handles errors on task update', () => {
service.updateTask(<any>{ id: 1 }).subscribe(() => {}, response => {
expect(response.alerts.length).toEqual(1);
});
testCall('api/tasks/1', 'POST', true);
});
it('removes a task', () => {
service.removeTask(1).subscribe(response => {
expect(response.data.length).toEqual(0);
});
testCall('api/tasks/1', 'DELETE');
});
it('handles errors on task removal', () => {
service.removeTask(1).subscribe(() => {}, response => {
expect(response.alerts.length).toEqual(1);
});
testCall('api/tasks/1', 'DELETE', true);
});
it('gets task activity', () => {
service.getTaskActivity(1).subscribe(response => {
expect(response.data.length).toEqual(0);
});
testCall('api/activity/task/1', 'GET');
});
it('handles errors on get task activity', () => {
service.getTaskActivity(1).subscribe(() => {}, response => {
expect(response.alerts.length).toEqual(1);
});
testCall('api/activity/task/1', 'GET', true);
});
it('updates a comment', () => {
service.updateComment(<any>{ id: 1 }).subscribe(response => {
expect(response.data.length).toEqual(0);
});
testCall('api/comments/1', 'POST');
});
it('handles errors on comment update', () => {
service.updateComment(<any>{ id: 1 }).subscribe(() => {}, response => {
expect(response.alerts.length).toEqual(1);
});
testCall('api/comments/1', 'POST', true);
});
it('removes a comment', () => {
service.removeComment(1).subscribe(response => {
expect(response.data.length).toEqual(0);
});
testCall('api/comments/1', 'DELETE');
});
it('handles errors on comment removal', () => {
service.removeComment(1).subscribe(() => {}, response => {
expect(response.alerts.length).toEqual(1);
});
testCall('api/comments/1', 'DELETE', true);
});
it('refreshes the API token', () => {
service.refreshToken();
testCall('api/refresh', 'POST');
});
});

View File

@ -44,6 +44,8 @@ describe('ContextMenu', () => {
it('captures parent oncontextmenu events', () => {
const parentElement = component.el.nativeElement.parentElement;
component.el.nativeElement.appendChild(document.createElement('div'));
expect(parentElement.oncontextmenu).toEqual(jasmine.any(Function));
parentElement.oncontextmenu({

View File

@ -10,7 +10,7 @@
"module": "esnext",
"moduleResolution": "node",
"importHelpers": true,
"target": "es2015",
"target": "es5",
"typeRoots": [
"node_modules/@types"
],