UNCLASSIFIED

Commit 364dd6fe authored by luke.glasscock's avatar luke.glasscock Committed by graham.smith
Browse files

BULL-797: Update unit test

parent 02a57f2a
...@@ -295,22 +295,41 @@ ...@@ -295,22 +295,41 @@
}, },
"dependencies": { "dependencies": {
"browserslist": { "browserslist": {
"version": "4.16.6", "version": "4.16.7",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.7.tgz",
"integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", "integrity": "sha512-7I4qVwqZltJ7j37wObBe3SoTz+nS8APaNcrBOlgoirb6/HbEU2XxW/LpUDTCngM6iauwFqmRTuOMfyKnFGY5JA==",
"dev": true, "dev": true,
"requires": { "requires": {
"caniuse-lite": "^1.0.30001219", "caniuse-lite": "^1.0.30001248",
"colorette": "^1.2.2", "colorette": "^1.2.2",
"electron-to-chromium": "^1.3.723", "electron-to-chromium": "^1.3.793",
"escalade": "^3.1.1", "escalade": "^3.1.1",
"node-releases": "^1.1.71" "node-releases": "^1.1.73"
},
"dependencies": {
"caniuse-lite": {
"version": "1.0.30001248",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001248.tgz",
"integrity": "sha512-NwlQbJkxUFJ8nMErnGtT0QTM2TJ33xgz4KXJSMIrjXIbDVdaYueGyjOrLKRtJC+rTiWfi6j5cnZN1NBiSBJGNw==",
"dev": true
}
} }
}, },
"caniuse-lite": { "caniuse-lite": {
"version": "1.0.30001223", "version": "1.0.30001223",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001223.tgz", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001223.tgz",
"integrity": "sha512-k/RYs6zc/fjbxTjaWZemeSmOjO0JJV+KguOBA3NwPup8uzxM1cMhR2BD9XmO86GuqaqTCO8CgkgH9Rz//vdDiA==", "integrity": "sha512-k/RYs6zc/fjbxTjaWZemeSmOjO0JJV+KguOBA3NwPup8uzxM1cMhR2BD9XmO86GuqaqTCO8CgkgH9Rz//vdDiA=="
},
"electron-to-chromium": {
"version": "1.3.795",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.795.tgz",
"integrity": "sha512-4TPxrLf9Fzsi4rVgTlDm+ubxoXm3/TN67/LGHx/a4UkVubKILa6L26O6eTnHewixG/knzU9L3lLmfL39eElwlQ==",
"dev": true
},
"node-releases": {
"version": "1.1.73",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz",
"integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==",
"dev": true "dev": true
}, },
"semver": { "semver": {
...@@ -4149,16 +4168,24 @@ ...@@ -4149,16 +4168,24 @@
} }
}, },
"browserslist": { "browserslist": {
"version": "4.16.6", "version": "4.16.7",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.7.tgz",
"integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", "integrity": "sha512-7I4qVwqZltJ7j37wObBe3SoTz+nS8APaNcrBOlgoirb6/HbEU2XxW/LpUDTCngM6iauwFqmRTuOMfyKnFGY5JA==",
"dev": true, "dev": true,
"requires": { "requires": {
"caniuse-lite": "^1.0.30001219", "caniuse-lite": "^1.0.30001248",
"colorette": "^1.2.2", "colorette": "^1.2.2",
"electron-to-chromium": "^1.3.723", "electron-to-chromium": "^1.3.793",
"escalade": "^3.1.1", "escalade": "^3.1.1",
"node-releases": "^1.1.71" "node-releases": "^1.1.73"
},
"dependencies": {
"caniuse-lite": {
"version": "1.0.30001248",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001248.tgz",
"integrity": "sha512-NwlQbJkxUFJ8nMErnGtT0QTM2TJ33xgz4KXJSMIrjXIbDVdaYueGyjOrLKRtJC+rTiWfi6j5cnZN1NBiSBJGNw==",
"dev": true
}
} }
}, },
"cacache": { "cacache": {
...@@ -4201,13 +4228,12 @@ ...@@ -4201,13 +4228,12 @@
"caniuse-lite": { "caniuse-lite": {
"version": "1.0.30001223", "version": "1.0.30001223",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001223.tgz", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001223.tgz",
"integrity": "sha512-k/RYs6zc/fjbxTjaWZemeSmOjO0JJV+KguOBA3NwPup8uzxM1cMhR2BD9XmO86GuqaqTCO8CgkgH9Rz//vdDiA==", "integrity": "sha512-k/RYs6zc/fjbxTjaWZemeSmOjO0JJV+KguOBA3NwPup8uzxM1cMhR2BD9XmO86GuqaqTCO8CgkgH9Rz//vdDiA=="
"dev": true
}, },
"chalk": { "chalk": {
"version": "4.1.1", "version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true, "dev": true,
"optional": true, "optional": true,
"requires": { "requires": {
...@@ -4241,6 +4267,12 @@ ...@@ -4241,6 +4267,12 @@
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true "dev": true
}, },
"electron-to-chromium": {
"version": "1.3.795",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.795.tgz",
"integrity": "sha512-4TPxrLf9Fzsi4rVgTlDm+ubxoXm3/TN67/LGHx/a4UkVubKILa6L26O6eTnHewixG/knzU9L3lLmfL39eElwlQ==",
"dev": true
},
"fs-extra": { "fs-extra": {
"version": "7.0.1", "version": "7.0.1",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
...@@ -4292,6 +4324,12 @@ ...@@ -4292,6 +4324,12 @@
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
"dev": true "dev": true
}, },
"node-releases": {
"version": "1.1.73",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz",
"integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==",
"dev": true
},
"p-map": { "p-map": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz",
...@@ -4367,9 +4405,9 @@ ...@@ -4367,9 +4405,9 @@
} }
}, },
"vue-loader-v16": { "vue-loader-v16": {
"version": "npm:vue-loader@16.3.3", "version": "npm:vue-loader@16.5.0",
"resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.3.3.tgz", "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.5.0.tgz",
"integrity": "sha512-/1GzCuQ6MRORbC+leKTKoTGtpQt60bYe0gDGEextSteA2OM+v201FPha5jzmjQzVhRcwieZeUvezAtG5a/e5cw==", "integrity": "sha512-WXh+7AgFxGTgb5QAkQtFeUcHNIEq3PGVQ8WskY5ZiFbWBkOwcCPRs4w/2tVyTbh2q6TVRlO3xfvIukUtjsu62A==",
"dev": true, "dev": true,
"optional": true, "optional": true,
"requires": { "requires": {
...@@ -5089,26 +5127,38 @@ ...@@ -5089,26 +5127,38 @@
}, },
"dependencies": { "dependencies": {
"browserslist": { "browserslist": {
"version": "4.16.6", "version": "4.16.7",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.7.tgz",
"integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", "integrity": "sha512-7I4qVwqZltJ7j37wObBe3SoTz+nS8APaNcrBOlgoirb6/HbEU2XxW/LpUDTCngM6iauwFqmRTuOMfyKnFGY5JA==",
"dev": true, "dev": true,
"requires": { "requires": {
"caniuse-lite": "^1.0.30001219", "caniuse-lite": "^1.0.30001248",
"colorette": "^1.2.2", "colorette": "^1.2.2",
"electron-to-chromium": "^1.3.723", "electron-to-chromium": "^1.3.793",
"escalade": "^3.1.1", "escalade": "^3.1.1",
"node-releases": "^1.1.71" "node-releases": "^1.1.73"
}, },
"dependencies": { "dependencies": {
"caniuse-lite": { "caniuse-lite": {
"version": "1.0.30001223", "version": "1.0.30001248",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001223.tgz", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001248.tgz",
"integrity": "sha512-k/RYs6zc/fjbxTjaWZemeSmOjO0JJV+KguOBA3NwPup8uzxM1cMhR2BD9XmO86GuqaqTCO8CgkgH9Rz//vdDiA==", "integrity": "sha512-NwlQbJkxUFJ8nMErnGtT0QTM2TJ33xgz4KXJSMIrjXIbDVdaYueGyjOrLKRtJC+rTiWfi6j5cnZN1NBiSBJGNw==",
"dev": true "dev": true
} }
} }
}, },
"electron-to-chromium": {
"version": "1.3.795",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.795.tgz",
"integrity": "sha512-4TPxrLf9Fzsi4rVgTlDm+ubxoXm3/TN67/LGHx/a4UkVubKILa6L26O6eTnHewixG/knzU9L3lLmfL39eElwlQ==",
"dev": true
},
"node-releases": {
"version": "1.1.73",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz",
"integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==",
"dev": true
},
"postcss": { "postcss": {
"version": "7.0.36", "version": "7.0.36",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz",
...@@ -6146,25 +6196,37 @@ ...@@ -6146,25 +6196,37 @@
}, },
"dependencies": { "dependencies": {
"browserslist": { "browserslist": {
"version": "4.16.6", "version": "4.16.7",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.7.tgz",
"integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", "integrity": "sha512-7I4qVwqZltJ7j37wObBe3SoTz+nS8APaNcrBOlgoirb6/HbEU2XxW/LpUDTCngM6iauwFqmRTuOMfyKnFGY5JA==",
"dev": true, "dev": true,
"requires": { "requires": {
"caniuse-lite": "^1.0.30001219", "caniuse-lite": "^1.0.30001248",
"colorette": "^1.2.2", "colorette": "^1.2.2",
"electron-to-chromium": "^1.3.723", "electron-to-chromium": "^1.3.793",
"escalade": "^3.1.1", "escalade": "^3.1.1",
"node-releases": "^1.1.71" "node-releases": "^1.1.73"
}, },
"dependencies": { "dependencies": {
"caniuse-lite": { "caniuse-lite": {
"version": "1.0.30001223", "version": "1.0.30001248",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001223.tgz", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001248.tgz",
"integrity": "sha512-k/RYs6zc/fjbxTjaWZemeSmOjO0JJV+KguOBA3NwPup8uzxM1cMhR2BD9XmO86GuqaqTCO8CgkgH9Rz//vdDiA==", "integrity": "sha512-NwlQbJkxUFJ8nMErnGtT0QTM2TJ33xgz4KXJSMIrjXIbDVdaYueGyjOrLKRtJC+rTiWfi6j5cnZN1NBiSBJGNw==",
"dev": true "dev": true
} }
} }
},
"electron-to-chromium": {
"version": "1.3.795",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.795.tgz",
"integrity": "sha512-4TPxrLf9Fzsi4rVgTlDm+ubxoXm3/TN67/LGHx/a4UkVubKILa6L26O6eTnHewixG/knzU9L3lLmfL39eElwlQ==",
"dev": true
},
"node-releases": {
"version": "1.1.73",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz",
"integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==",
"dev": true
} }
} }
}, },
...@@ -7189,22 +7251,41 @@ ...@@ -7189,22 +7251,41 @@
}, },
"dependencies": { "dependencies": {
"browserslist": { "browserslist": {
"version": "4.16.6", "version": "4.16.7",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.7.tgz",
"integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", "integrity": "sha512-7I4qVwqZltJ7j37wObBe3SoTz+nS8APaNcrBOlgoirb6/HbEU2XxW/LpUDTCngM6iauwFqmRTuOMfyKnFGY5JA==",
"dev": true, "dev": true,
"requires": { "requires": {
"caniuse-lite": "^1.0.30001219", "caniuse-lite": "^1.0.30001248",
"colorette": "^1.2.2", "colorette": "^1.2.2",
"electron-to-chromium": "^1.3.723", "electron-to-chromium": "^1.3.793",
"escalade": "^3.1.1", "escalade": "^3.1.1",
"node-releases": "^1.1.71" "node-releases": "^1.1.73"
},
"dependencies": {
"caniuse-lite": {
"version": "1.0.30001248",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001248.tgz",
"integrity": "sha512-NwlQbJkxUFJ8nMErnGtT0QTM2TJ33xgz4KXJSMIrjXIbDVdaYueGyjOrLKRtJC+rTiWfi6j5cnZN1NBiSBJGNw==",
"dev": true
}
} }
}, },
"caniuse-lite": { "caniuse-lite": {
"version": "1.0.30001223", "version": "1.0.30001223",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001223.tgz", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001223.tgz",
"integrity": "sha512-k/RYs6zc/fjbxTjaWZemeSmOjO0JJV+KguOBA3NwPup8uzxM1cMhR2BD9XmO86GuqaqTCO8CgkgH9Rz//vdDiA==", "integrity": "sha512-k/RYs6zc/fjbxTjaWZemeSmOjO0JJV+KguOBA3NwPup8uzxM1cMhR2BD9XmO86GuqaqTCO8CgkgH9Rz//vdDiA=="
},
"electron-to-chromium": {
"version": "1.3.795",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.795.tgz",
"integrity": "sha512-4TPxrLf9Fzsi4rVgTlDm+ubxoXm3/TN67/LGHx/a4UkVubKILa6L26O6eTnHewixG/knzU9L3lLmfL39eElwlQ==",
"dev": true
},
"node-releases": {
"version": "1.1.73",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz",
"integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==",
"dev": true "dev": true
}, },
"semver": { "semver": {
...@@ -8965,12 +9046,6 @@ ...@@ -8965,12 +9046,6 @@
"integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==", "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==",
"dev": true "dev": true
}, },
"electron-to-chromium": {
"version": "1.3.727",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.727.tgz",
"integrity": "sha512-Mfz4FIB4FSvEwBpDfdipRIrwd6uo8gUDoRDF4QEYb4h4tSuI3ov594OrjU6on042UlFHouIJpClDODGkPcBSbg==",
"dev": true
},
"elegant-spinner": { "elegant-spinner": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz",
...@@ -14333,12 +14408,6 @@ ...@@ -14333,12 +14408,6 @@
"integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=",
"dev": true "dev": true
}, },
"node-releases": {
"version": "1.1.71",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz",
"integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==",
"dev": true
},
"nopt": { "nopt": {
"version": "5.0.0", "version": "5.0.0",
"resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz",
...@@ -14783,6 +14852,18 @@ ...@@ -14783,6 +14852,18 @@
"dev": true, "dev": true,
"requires": { "requires": {
"url-parse": "^1.4.3" "url-parse": "^1.4.3"
},
"dependencies": {
"url-parse": {
"version": "1.5.3",
"resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.3.tgz",
"integrity": "sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ==",
"dev": true,
"requires": {
"querystringify": "^2.1.1",
"requires-port": "^1.0.0"
}
}
} }
}, },
"os-browserify": { "os-browserify": {
...@@ -15223,22 +15304,41 @@ ...@@ -15223,22 +15304,41 @@
}, },
"dependencies": { "dependencies": {
"browserslist": { "browserslist": {
"version": "4.16.6", "version": "4.16.7",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.7.tgz",
"integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", "integrity": "sha512-7I4qVwqZltJ7j37wObBe3SoTz+nS8APaNcrBOlgoirb6/HbEU2XxW/LpUDTCngM6iauwFqmRTuOMfyKnFGY5JA==",
"dev": true, "dev": true,
"requires": { "requires": {
"caniuse-lite": "^1.0.30001219", "caniuse-lite": "^1.0.30001248",
"colorette": "^1.2.2", "colorette": "^1.2.2",
"electron-to-chromium": "^1.3.723", "electron-to-chromium": "^1.3.793",
"escalade": "^3.1.1", "escalade": "^3.1.1",
"node-releases": "^1.1.71" "node-releases": "^1.1.73"
},
"dependencies": {
"caniuse-lite": {
"version": "1.0.30001248",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001248.tgz",
"integrity": "sha512-NwlQbJkxUFJ8nMErnGtT0QTM2TJ33xgz4KXJSMIrjXIbDVdaYueGyjOrLKRtJC+rTiWfi6j5cnZN1NBiSBJGNw==",
"dev": true
}
} }
}, },
"caniuse-lite": { "caniuse-lite": {
"version": "1.0.30001244", "version": "1.0.30001244",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001244.tgz", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001244.tgz",
"integrity": "sha512-Wb4UFZPkPoJoKKVfELPWytRzpemjP/s0pe22NriANru1NoI+5bGNxzKtk7edYL8rmCWTfQO8eRiF0pn1Dqzx7Q==", "integrity": "sha512-Wb4UFZPkPoJoKKVfELPWytRzpemjP/s0pe22NriANru1NoI+5bGNxzKtk7edYL8rmCWTfQO8eRiF0pn1Dqzx7Q=="
},
"electron-to-chromium": {
"version": "1.3.795",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.795.tgz",
"integrity": "sha512-4TPxrLf9Fzsi4rVgTlDm+ubxoXm3/TN67/LGHx/a4UkVubKILa6L26O6eTnHewixG/knzU9L3lLmfL39eElwlQ==",
"dev": true
},
"node-releases": {
"version": "1.1.73",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz",
"integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==",
"dev": true "dev": true
}, },
"postcss": { "postcss": {
...@@ -15601,22 +15701,41 @@ ...@@ -15601,22 +15701,41 @@
}, },
"dependencies": { "dependencies": {
"browserslist": { "browserslist": {
"version": "4.16.6", "version": "4.16.7",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.7.tgz",
"integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", "integrity": "sha512-7I4qVwqZltJ7j37wObBe3SoTz+nS8APaNcrBOlgoirb6/HbEU2XxW/LpUDTCngM6iauwFqmRTuOMfyKnFGY5JA==",
"dev": true, "dev": true,
"requires": { "requires": {
"caniuse-lite": "^1.0.30001219", "caniuse-lite": "^1.0.30001248",
"colorette": "^1.2.2", "colorette": "^1.2.2",
"electron-to-chromium": "^1.3.723", "electron-to-chromium": "^1.3.793",
"escalade": "^3.1.1", "escalade": "^3.1.1",
"node-releases": "^1.1.71" "node-releases": "^1.1.73"
},
"dependencies": {
"caniuse-lite": {
"version": "1.0.30001248",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001248.tgz",
"integrity": "sha512-NwlQbJkxUFJ8nMErnGtT0QTM2TJ33xgz4KXJSMIrjXIbDVdaYueGyjOrLKRtJC+rTiWfi6j5cnZN1NBiSBJGNw==",
"dev": true
}
} }
}, },
"caniuse-lite": { "caniuse-lite": {
"version": "1.0.30001223", "version": "1.0.30001223",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001223.tgz", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001223.tgz",
"integrity": "sha512-k/RYs6zc/fjbxTjaWZemeSmOjO0JJV+KguOBA3NwPup8uzxM1cMhR2BD9XmO86GuqaqTCO8CgkgH9Rz//vdDiA==", "integrity": "sha512-k/RYs6zc/fjbxTjaWZemeSmOjO0JJV+KguOBA3NwPup8uzxM1cMhR2BD9XmO86GuqaqTCO8CgkgH9Rz//vdDiA=="
},
"electron-to-chromium": {
"version": "1.3.795",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.795.tgz",
"integrity": "sha512-4TPxrLf9Fzsi4rVgTlDm+ubxoXm3/TN67/LGHx/a4UkVubKILa6L26O6eTnHewixG/knzU9L3lLmfL39eElwlQ==",
"dev": true
},
"node-releases": {
"version": "1.1.73",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz",
"integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==",
"dev": true "dev": true
}, },
"postcss": { "postcss": {
...@@ -15745,22 +15864,41 @@ ...@@ -15745,22 +15864,41 @@
}, },
"dependencies": { "dependencies": {
"browserslist": { "browserslist": {
"version": "4.16.6", "version": "4.16.7",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.7.tgz",
"integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", "integrity": "sha512-7I4qVwqZltJ7j37wObBe3SoTz+nS8APaNcrBOlgoirb6/HbEU2XxW/LpUDTCngM6iauwFqmRTuOMfyKnFGY5JA==",
"dev": true, "dev": true,
"requires": { "requires": {
"caniuse-lite": "^1.0.30001219", "caniuse-lite": "^1.0.30001248",
"colorette": "^1.2.2", "colorette": "^1.2.2",
"electron-to-chromium": "^1.3.723", "electron-to-chromium": "^1.3.793",
"escalade": "^3.1.1", "escalade": "^3.1.1",
"node-releases": "^1.1.71" "node-releases": "^1.1.73"
},
"dependencies": {
"caniuse-lite": {
"version": "1.0.30001248",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001248.tgz",
"integrity": "sha512-NwlQbJkxUFJ8nMErnGtT0QTM2TJ33xgz4KXJSMIrjXIbDVdaYueGyjOrLKRtJC+rTiWfi6j5cnZN1NBiSBJGNw==",
"dev": true
}
} }
}, },
"caniuse-lite": { "caniuse-lite": {
"version": "1.0.30001223", "version": "1.0.30001223",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001223.tgz", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001223.tgz",
"integrity": "sha512-k/RYs6zc/fjbxTjaWZemeSmOjO0JJV+KguOBA3NwPup8uzxM1cMhR2BD9XmO86GuqaqTCO8CgkgH9Rz//vdDiA==", "integrity": "sha512-k/RYs6zc/fjbxTjaWZemeSmOjO0JJV+KguOBA3NwPup8uzxM1cMhR2BD9XmO86GuqaqTCO8CgkgH9Rz//vdDiA=="
},
"electron-to-chromium": {
"version": "1.3.795",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.795.tgz",
"integrity": "sha512-4TPxrLf9Fzsi4rVgTlDm+ubxoXm3/TN67/LGHx/a4UkVubKILa6L26O6eTnHewixG/knzU9L3lLmfL39eElwlQ==",
"dev": true
},
"node-releases": {
"version": "1.1.73",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz",
"integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==",
"dev": true "dev": true
}, },
"postcss": { "postcss": {
...@@ -16205,22 +16343,41 @@ ...@@ -16205,22 +16343,41 @@
}, },
"dependencies": { "dependencies": {
"browserslist": { "browserslist": {
"version": "4.16.6", "version": "4.16.7",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.7.tgz",
"integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", "integrity": "sha512-7I4qVwqZltJ7j37wObBe3SoTz+nS8APaNcrBOlgoirb6/HbEU2XxW/LpUDTCngM6iauwFqmRTuOMfyKnFGY5JA==",
"dev": true, "dev": true,
"requires": { "requires": {
"caniuse-lite": "^1.0.30001219", "caniuse-lite": "^1.0.30001248",
"colorette": "^1.2.2", "colorette": "^1.2.2",
"electron-to-chromium": "^1.3.723", "electron-to-chromium": "^1.3.793",
"escalade": "^3.1.1", "escalade": "^3.1.1",
"node-releases": "^1.1.71" "node-releases": "^1.1.73"
},
"dependencies": {
"caniuse-lite": {
"version": "1.0.30001248",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001248.tgz",
"integrity": "sha512-NwlQbJkxUFJ8nMErnGtT0QTM2TJ33xgz4KXJSMIrjXIbDVdaYueGyjOrLKRtJC+rTiWfi6j5cnZN1NBiSBJGNw==",
"dev": true
}
} }
}, },
"caniuse-lite": { "caniuse-lite": {
"version": "1.0.30001223", "version": "1.0.30001223",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001223.tgz", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001223.tgz",
"integrity": "sha512-k/RYs6zc/fjbxTjaWZemeSmOjO0JJV+KguOBA3NwPup8uzxM1cMhR2BD9XmO86GuqaqTCO8CgkgH9Rz//vdDiA==", "integrity": "sha512-k/RYs6zc/fjbxTjaWZemeSmOjO0JJV+KguOBA3NwPup8uzxM1cMhR2BD9XmO86GuqaqTCO8CgkgH9Rz//vdDiA=="
},
"electron-to-chromium": {
"version": "1.3.795",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.795.tgz",
"integrity": "sha512-4TPxrLf9Fzsi4rVgTlDm+ubxoXm3/TN67/LGHx/a4UkVubKILa6L26O6eTnHewixG/knzU9L3lLmfL39eElwlQ==",
"dev": true
},
"node-releases": {
"version": "1.1.73",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz",
"integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==",
"dev": true "dev": true
}, },
"postcss": { "postcss": {
...@@ -16387,22 +16544,41 @@ ...@@ -16387,22 +16544,41 @@
}, },
"dependencies": { "dependencies": {
"browserslist": { "browserslist": {
"version": "4.16.6", "version": "4.16.7",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.7.tgz",
"integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", "integrity": "sha512-7I4qVwqZltJ7j37wObBe3SoTz+nS8APaNcrBOlgoirb6/HbEU2XxW/LpUDTCngM6iauwFqmRTuOMfyKnFGY5JA==",
"dev": true, "dev": true,
"requires": { "requires": {
"caniuse-lite": "^1.0.30001219", "caniuse-lite": "^1.0.30001248",
"colorette": "^1.2.2", "colorette": "^1.2.2",
"electron-to-chromium": "^1.3.723", "electron-to-chromium": "^1.3.793",
"escalade": "^3.1.1", "escalade": "^3.1.1",
"node-releases": "^1.1.71" "node-releases": "^1.1.73"
},
"dependencies": {
"caniuse-lite": {
"version": "1.0.30001248",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001248.tgz",
"integrity": "sha512-NwlQbJkxUFJ8nMErnGtT0QTM2TJ33xgz4KXJSMIrjXIbDVdaYueGyjOrLKRtJC+rTiWfi6j5cnZN1NBiSBJGNw==",
"dev": true
}
} }
}, },
"caniuse-lite": { "caniuse-lite": {
"version": "1.0.30001223", "version": "1.0.30001223",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001223.tgz", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001223.tgz",
"integrity": "sha512-k/RYs6zc/fjbxTjaWZemeSmOjO0JJV+KguOBA3NwPup8uzxM1cMhR2BD9XmO86GuqaqTCO8CgkgH9Rz//vdDiA==", "integrity": "sha512-k/RYs6zc/fjbxTjaWZemeSmOjO0JJV+KguOBA3NwPup8uzxM1cMhR2BD9XmO86GuqaqTCO8CgkgH9Rz//vdDiA=="
},
"electron-to-chromium": {
"version": "1.3.795",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.795.tgz",
"integrity": "sha512-4TPxrLf9Fzsi4rVgTlDm+ubxoXm3/TN67/LGHx/a4UkVubKILa6L26O6eTnHewixG/knzU9L3lLmfL39eElwlQ==",
"dev": true
},
"node-releases": {
"version": "1.1.73",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz",
"integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==",
"dev": true "dev": true
}, },
"postcss": { "postcss": {
...@@ -17708,9 +17884,9 @@ ...@@ -17708,9 +17884,9 @@
}, },
"dependencies": { "dependencies": {
"path-parse": { "path-parse": {
"version": "1.0.6", "version": "1.0.7",
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
"integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
"dev": true "dev": true
} }
} }
...@@ -18425,6 +18601,16 @@ ...@@ -18425,6 +18601,16 @@
"requires": { "requires": {
"websocket-driver": ">=0.5.1" "websocket-driver": ">=0.5.1"
} }
},
"url-parse": {
"version": "1.5.3",
"resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.3.tgz",
"integrity": "sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ==",
"dev": true,
"requires": {
"querystringify": "^2.1.1",
"requires-port": "^1.0.0"
}
} }
} }
}, },
...@@ -18894,22 +19080,41 @@ ...@@ -18894,22 +19080,41 @@
}, },
"dependencies": { "dependencies": {
"browserslist": { "browserslist": {
"version": "4.16.6", "version": "4.16.7",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.7.tgz",
"integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", "integrity": "sha512-7I4qVwqZltJ7j37wObBe3SoTz+nS8APaNcrBOlgoirb6/HbEU2XxW/LpUDTCngM6iauwFqmRTuOMfyKnFGY5JA==",
"dev": true, "dev": true,
"requires": { "requires": {
"caniuse-lite": "^1.0.30001219", "caniuse-lite": "^1.0.30001248",
"colorette": "^1.2.2", "colorette": "^1.2.2",
"electron-to-chromium": "^1.3.723", "electron-to-chromium": "^1.3.793",
"escalade": "^3.1.1", "escalade": "^3.1.1",
"node-releases": "^1.1.71" "node-releases": "^1.1.73"
},
"dependencies": {
"caniuse-lite": {
"version": "1.0.30001248",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001248.tgz",
"integrity": "sha512-NwlQbJkxUFJ8nMErnGtT0QTM2TJ33xgz4KXJSMIrjXIbDVdaYueGyjOrLKRtJC+rTiWfi6j5cnZN1NBiSBJGNw==",
"dev": true
}
} }
}, },
"caniuse-lite": { "caniuse-lite": {
"version": "1.0.30001223", "version": "1.0.30001223",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001223.tgz", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001223.tgz",
"integrity": "sha512-k/RYs6zc/fjbxTjaWZemeSmOjO0JJV+KguOBA3NwPup8uzxM1cMhR2BD9XmO86GuqaqTCO8CgkgH9Rz//vdDiA==", "integrity": "sha512-k/RYs6zc/fjbxTjaWZemeSmOjO0JJV+KguOBA3NwPup8uzxM1cMhR2BD9XmO86GuqaqTCO8CgkgH9Rz//vdDiA=="
},
"electron-to-chromium": {
"version": "1.3.795",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.795.tgz",
"integrity": "sha512-4TPxrLf9Fzsi4rVgTlDm+ubxoXm3/TN67/LGHx/a4UkVubKILa6L26O6eTnHewixG/knzU9L3lLmfL39eElwlQ==",
"dev": true
},
"node-releases": {
"version": "1.1.73",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz",
"integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==",
"dev": true "dev": true
}, },
"postcss": { "postcss": {
...@@ -20461,16 +20666,6 @@ ...@@ -20461,16 +20666,6 @@
"schema-utils": "^2.5.0" "schema-utils": "^2.5.0"
} }
}, },
"url-parse": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.1.tgz",
"integrity": "sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q==",
"dev": true,
"requires": {
"querystringify": "^2.1.1",
"requires-port": "^1.0.0"
}
},
"use": { "use": {
"version": "3.1.1", "version": "3.1.1",
"resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
......
...@@ -161,11 +161,13 @@ ...@@ -161,11 +161,13 @@
"minimist": "^1.2.5", "minimist": "^1.2.5",
"node-notifier": "^9.0.0", "node-notifier": "^9.0.0",
"normalize-url": "^4.5.1", "normalize-url": "^4.5.1",
"path-parse": "^1.0.7",
"postcss": "^7.0.36", "postcss": "^7.0.36",
"serialize-javascript": "^3.1.0", "serialize-javascript": "^3.1.0",
"sockjs": "^0.3.21", "sockjs": "^0.3.21",
"ssri": "^8.0.1", "ssri": "^8.0.1",
"trim-newlines": "^3.0.0", "trim-newlines": "^3.0.0",
"url-parse": "^1.5.3",
"y18n": "^5.0.5", "y18n": "^5.0.5",
"yargs-parser": "^18.1.3", "yargs-parser": "^18.1.3",
"ws": "^7.4.6" "ws": "^7.4.6"
......
...@@ -8,5 +8,18 @@ export const createBaseHttp = () => { ...@@ -8,5 +8,18 @@ export const createBaseHttp = () => {
}; };
export const HTTP = createBaseHttp(); export const HTTP = createBaseHttp();
HTTP.interceptors.response.use(
HTTP.interceptors.response.use((response) => response?.data?.result); function (response) {
return response?.data?.result;
},
function (err) {
// If err.status does not exist a general networking error occurred.
// We'll assume that their keycloak session has expired, so refresh the
// page which will redirect them to login
if (!err.status) {
location.reload();
} else {
throw err;
}
}
);
import axios from "axios";
// TODO: the goal is to be able to delete this file - this is only temporary
// until the backend has the necessary REST endpoints and the frontend has
// been updated to call them
export const HTTP = axios.create({
baseURL: "/static/mock-data",
});
...@@ -2,6 +2,6 @@ import { HTTP } from "@/api/http-common"; ...@@ -2,6 +2,6 @@ import { HTTP } from "@/api/http-common";
export default { export default {
async capacityMetrics(params) { async capacityMetrics(params) {
return await HTTP.get("/admin/capacity-metrics", { params }); return HTTP.get("/admin/capacity-metrics", { params });
}, },
}; };
...@@ -2,7 +2,7 @@ import { HTTP } from "@/api/http-common"; ...@@ -2,7 +2,7 @@ import { HTTP } from "@/api/http-common";
export default { export default {
async getProjectsSummary() { async getProjectsSummary() {
return await HTTP.get( return HTTP.get(
"/gitlab/projects-with-jobs-and-pipelines-for-logged-in-user" "/gitlab/projects-with-jobs-and-pipelines-for-logged-in-user"
); );
}, },
......
...@@ -5,7 +5,7 @@ const defaultCertificateFileName = "certificate.pdf"; ...@@ -5,7 +5,7 @@ const defaultCertificateFileName = "certificate.pdf";
export default { export default {
defaultCertificateFileName, defaultCertificateFileName,
async getScheduleForUser() { async getScheduleForUser() {
return await HTTP.get("/courses/my-registrations"); return HTTP.get("/courses/my-registrations");
}, },
async downloadCertificate(courseId, userId) { async downloadCertificate(courseId, userId) {
const certificateHTTP = createBaseHttp(); const certificateHTTP = createBaseHttp();
......
import get from "lodash/get";
import { HTTP } from "@/api/mock-http-common";
export default {
async getStatusSummary() {
const response = await HTTP.get(`status.json`);
return get(response, "data.result");
},
};
...@@ -9,13 +9,13 @@ const getTeamMemberBody = (users) => { ...@@ -9,13 +9,13 @@ const getTeamMemberBody = (users) => {
export default { export default {
async getMyTeam() { async getMyTeam() {
return await HTTP.get("/teams/my-teams"); return HTTP.get("/teams/my-teams");
}, },
async getTeams(params) { async getTeams(params) {
return await HTTP.get("/teams", { params }); return HTTP.get("/teams", { params });
}, },
async getTeam(teamId) { async getTeam(teamId) {
return await HTTP.get(`/teams/${teamId}`, { return HTTP.get(`/teams/${teamId}`, {
params: { members: true }, params: { members: true },
}); });
}, },
...@@ -23,11 +23,11 @@ export default { ...@@ -23,11 +23,11 @@ export default {
await HTTP.delete("/teams", { params: { teamIds: `[${teamIds.join()}]` } }); await HTTP.delete("/teams", { params: { teamIds: `[${teamIds.join()}]` } });
}, },
async addTeam(team) { async addTeam(team) {
return await HTTP.post("/teams", team); return HTTP.post("/teams", team);
}, },
async addTeams(newTeams) { async addTeams(newTeams) {
for (let i = 0; i < newTeams.length; i++) { for (const newTeam of newTeams) {
await this.addTeam(newTeams[i]); await this.addTeam(newTeam);
} }
}, },
......
...@@ -68,22 +68,18 @@ export default { ...@@ -68,22 +68,18 @@ export default {
window.open("/api/courses/export"); window.open("/api/courses/export");
}, },
async getCourseRegistrationsById(courseId, params) { async getCourseRegistrationsById(courseId, params) {
const response = await HTTP.get(`/courses/${courseId}/registrations`, { return HTTP.get(`/courses/${courseId}/registrations`, {
params, params,
}); });
return response;
}, },
async setUserAttendance(courseId, body) { async setUserAttendance(courseId, body) {
return await HTTP.put( return HTTP.put(`/courses/${courseId}/registrations/attendance`, body);
`/courses/${courseId}/registrations/attendance`,
body
);
}, },
async setCourseRegistrationsByUserId(courseId, userId, body) { async setCourseRegistrationsByUserId(courseId, userId, body) {
return await HTTP.put(`/courses/${courseId}/registrations/${userId}`, body); return HTTP.put(`/courses/${courseId}/registrations/${userId}`, body);
}, },
async removeCourseRegistrationsByUserId(courseId, userId) { async removeCourseRegistrationsByUserId(courseId, userId) {
return await HTTP.delete(`/courses/${courseId}/registrations/${userId}`); return HTTP.delete(`/courses/${courseId}/registrations/${userId}`);
}, },
async removeCourseRegistrationsByUsers(courseId, registrations) { async removeCourseRegistrationsByUsers(courseId, registrations) {
for (const registration of registrations) { for (const registration of registrations) {
......
...@@ -2,10 +2,10 @@ import { HTTP } from "@/api/http-common"; ...@@ -2,10 +2,10 @@ import { HTTP } from "@/api/http-common";
export default { export default {
async getUser() { async getUser() {
return await HTTP.get("/whoami"); return HTTP.get("/whoami");
}, },
async search(params) { async search(params) {
return await HTTP.get("/users", { params }); return HTTP.get("/users", { params });
}, },
async getUsersByPersonnelType(params) { async getUsersByPersonnelType(params) {
return this.search(params); return this.search(params);
......
<template>
<v-container class="my-courses text-left px-2">
<v-skeleton-loader :loading="loading" type="paragraph@5" class="w-100">
<ErrorMessage v-if="error" v-bind:errorMessage="errorMessage" />
<v-card v-if="emptyString">
<v-card-title
>There currently are no current or upcoming courses.</v-card-title
>
<v-card-text
>Courses in progress or upcoming will appear here.</v-card-text
>
</v-card>
<v-container class="px-6" v-else>
<div
v-for="(item, index) in schedule"
:key="index"
:class="{ last: index == schedule.length - 1 }"
>
<div
v-if="inDateRange(item.startDate, item.endDate)"
class="dot dot-white"
></div>
<div v-else class="dot dot-green"></div>
<div class="d-flex col-12 py-0 class-container">
<div
v-if="inDateRange(item.startDate, item.endDate)"
class="dot-border dot-border-white col-1 d-inline-block"
></div>
<div
v-else
class="dot-border dot-border-green col-1 d-inline-block"
></div>
<div
class="col-sm col-3 d-inline-block d-flex align-start class-name"
>
{{ item.name }}
</div>
<div class="col-sm col-4 d-inline-block resText">
{{ item.startDate }} - {{ item.endDate }}
</div>
<div class="col-sm col-4 d-inline-block resText">
<div v-if="inDateRange(item.startDate, item.endDate)">
In Progress
</div>
<div v-else>
{{ seatsRemaining(item.capacity, item.registeredCount) }}
remaining seats
</div>
</div>
</div>
</div>
</v-container>
</v-skeleton-loader>
</v-container>
</template>
<script>
import TrainingService from "@/api/services/training";
import moment from "moment";
import { SET_ERROR_MESSAGE } from "@/store/mutation-types";
import ErrorMessage from "@/components/APIErrorCard";
export default {
components: {
ErrorMessage,
},
data: () => ({
loading: false,
schedule: [],
emptyString: false,
errorMessage: null,
error: false,
}),
async mounted() {
this.params = {
registeredCount: true,
dateFrom: `${moment().format("YYYY-MM-DD")}`,
dateTo: `${moment().add(6, "months").format("YYYY-MM-DD")}`,
sort: "startDate",
};
try {
this.loading = true;
const response = await TrainingService.getCourses(this.params);
this.schedule = response.courses;
if (this.schedule.length === 0) {
this.emptyString = true;
}
} catch (error) {
this.error = true;
this.$store.commit(SET_ERROR_MESSAGE, error);
this.errorMessage = error;
} finally {
this.loading = false;
}
},
methods: {
inDateRange(startDate, endDate) {
return moment().isBetween(startDate, endDate);
},
seatsRemaining(capacity, registered) {
return capacity - registered;
},
},
};
</script>
<template> <template>
<div> <div>
This is a test
<UserSelect <UserSelect
:force-error="areNoAvailableSeats" :force-error="areNoAvailableSeats"
:force-error-message=" :force-error-message="
...@@ -37,12 +38,10 @@ export default { ...@@ -37,12 +38,10 @@ export default {
type: String, type: String,
default: "Select Course", default: "Select Course",
}, },
// needed in order for Add to Course button to become enabled
// parent components need to pass in their own updateCourseMembers
updateCourseMembers: { updateCourseMembers: {
type: Function, type: Function,
default: () => {
// TODO: confirm this is even being triggered; looks like it's being passed as prop 'update-course-members'
return;
},
}, },
isCourseSelected: { isCourseSelected: {
type: Boolean, type: Boolean,
......
<template>
<v-container class="curriculum-schedule text-left px-2">
<v-skeleton-loader :loading="loading" type="paragraph@5" class="w-100">
<ErrorMessage v-if="error" v-bind:errorMessage="errorMessage" />
<v-card v-if="emptyString">
<v-card-title
>There currently are no current or upcoming courses.</v-card-title
>
<v-card-text
>Courses in progress or upcoming will appear here.</v-card-text
>
</v-card>
<v-container class="px-6" v-else>
<div
v-for="(item, index) in schedule"
:key="index"
:class="{ last: index == schedule.length - 1 }"
>
<div
v-if="inDateRange(item.startDate, item.endDate)"
class="dot dot-white"
></div>
<div v-else class="dot dot-green"></div>
<div class="d-flex col-12 py-0 class-container">
<div
v-if="inDateRange(item.startDate, item.endDate)"
class="dot-border dot-border-white col-1 d-inline-block"
></div>
<div
v-else
class="dot-border dot-border-green col-1 d-inline-block"
></div>
<div
class="col-sm col-3 d-inline-block d-flex align-start class-name"
>
{{ item.name }}
</div>
<div class="col-sm col-4 d-inline-block resText">
{{ item.startDate }} - {{ item.endDate }}
</div>
<div class="col-sm col-4 d-inline-block resText">
<div v-if="inDateRange(item.startDate, item.endDate)">
In Progress
</div>
<div v-else>
{{ seatsRemaining(item.capacity, item.registeredCount) }}
remaining seats
</div>
</div>
</div>
</div>
</v-container>
</v-skeleton-loader>
</v-container>
</template>
<script>
import TrainingService from "@/api/services/training";
import moment from "moment";
import { SET_ERROR_MESSAGE } from "@/store/mutation-types";
import ErrorMessage from "@/components/APIErrorCard";
export default {
components: {
ErrorMessage,
},
data: () => ({
loading: false,
schedule: [],
emptyString: false,
errorMessage: null,
error: false,
}),
async mounted() {
this.params = {
registeredCount: true,
instructorOf: true,
dateFrom: `${moment().format("YYYY-MM-DD")}`,
dateTo: `${moment().add(6, "months").format("YYYY-MM-DD")}`,
sort: "startDate",
};
try {
this.loading = true;
const response = await TrainingService.getCourses(this.params);
this.schedule = response.courses;
if (this.schedule.length === 0) {
this.emptyString = true;
}
} catch (error) {
this.error = true;
this.$store.commit(SET_ERROR_MESSAGE, error);
this.errorMessage = error;
} finally {
this.loading = false;
}
},
methods: {
inDateRange(startDate, endDate) {
return moment().isBetween(startDate, endDate);
},
seatsRemaining(capacity, registered) {
return capacity - registered;
},
},
};
</script>
...@@ -394,14 +394,13 @@ export default { ...@@ -394,14 +394,13 @@ export default {
}, },
personnelList() { personnelList() {
const list = [...this.personnel.listItems]; const list = [...this.personnel.listItems];
const filteredList = list.filter(({ email, number, name }) => { return list.filter(({ email, number, name }) => {
return ( return (
includes(toLower(email), this.searchBy) || includes(toLower(email), this.searchBy) ||
includes(toLower(name), this.searchBy) || includes(toLower(name), this.searchBy) ||
includes(toLower(number), this.searchBy) includes(toLower(number), this.searchBy)
); );
}); });
return filteredList;
}, },
permissionTypesDropdown() { permissionTypesDropdown() {
return map(this.permissionTypes, (label) => { return map(this.permissionTypes, (label) => {
......
...@@ -230,9 +230,8 @@ ...@@ -230,9 +230,8 @@
import { mapState, mapMutations } from "vuex"; import { mapState, mapMutations } from "vuex";
import ProjectService from "@/api/services/project"; import ProjectService from "@/api/services/project";
import GitLabIcon from "@/components/icons/GitLabIcon"; import GitLabIcon from "@/components/icons/GitLabIcon";
import { SET_PROJECTS } from "@/store/mutation-types"; import { SET_PROJECTS, SET_ERROR_MESSAGE } from "@/store/mutation-types";
import ErrorMessage from "@/components/APIErrorCard"; import ErrorMessage from "@/components/APIErrorCard";
import { SET_ERROR_MESSAGE } from "@/store/mutation-types";
export default { export default {
components: { components: {
...@@ -296,10 +295,9 @@ export default { ...@@ -296,10 +295,9 @@ export default {
}, },
computed: { computed: {
filteredProjects() { filteredProjects() {
const projects = this.detailed return this.detailed
? this.projects ? this.projects
: this.projects.filter((o) => o.favorite); : this.projects.filter((o) => o.favorite);
return projects;
}, },
...mapState({ ...mapState({
projects: (state) => state.projects.list, projects: (state) => state.projects.list,
......
<template>
<v-container class="remaining-seats text-left px-2">
<v-skeleton-loader :loading="loading" type="paragraph@5" class="w-100">
<v-card v-if="emptyString">
<v-card-title>You currently don't have any classes! </v-card-title>
<v-card-text>Your scheduled classes will appear here.</v-card-text>
</v-card>
<v-container class="px-6" v-else>
<div
v-for="(item, index) in schedule"
:key="index"
class="flex-wrap text-left pb-3 row justify-content-center d-flex"
>
<div class="col-3 d-inline-block class-name">
{{ item.name }}
</div>
<div class="col-5 d-inline-block availability-bar">
<div class="pt-2">
<v-progress-linear
class="availability-bar"
rounded
background-color="white"
height="8px"
:value="(100 * item.registeredCount) / item.capacity"
></v-progress-linear>
</div>
</div>
<div class="col-2 d-inline-block">
<div class="white-space-nowrap ml-5 mt-1 small-count">
{{ item.registeredCount }} / {{ item.capacity }}
</div>
</div>
<div class="col-1 d-inline-block gutter" />
</div>
</v-container>
</v-skeleton-loader>
</v-container>
</template>
<script>
import TrainingService from "@/api/services/training";
import moment from "moment";
export default {
data: () => ({
loading: false,
schedule: [],
emptyString: false,
}),
async mounted() {
this.params = {
registeredCount: true,
dateFrom: `${moment().format("YYYY-MM-DD")}`,
dateTo: `${moment().add(6, "months").format("YYYY-MM-DD")}`,
};
try {
this.loading = true;
const response = await TrainingService.getCourses(this.params);
console.log(response);
this.schedule = response.courses;
if (this.schedule.length === 0) {
this.emptyString = true;
}
} catch (error) {
console.error(error);
} finally {
this.loading = false;
}
},
};
</script>
<style lang="scss">
.class-name {
color: #bdc931;
}
.small-count {
font-size: 10px;
}
</style>
<template>
<v-container class="status-summary text-center px-8">
<ErrorMessage v-if="error" />
<div v-else>
<div class="support-row d-flex flex-wrap flex-sm-nowrap text-left pb-8">
<div class="pr-0 pr-sm-10 text-container pb-3 pb-md-0">
<div class="subhead">View Status History</div>
Any previous status reports or connection issues
</div>
<v-spacer class="d-none d-sm-flex" />
<v-btn color="secondary" target="_blank" class="mx-auto">
View History
</v-btn>
</div>
<div class="d-flex flex-column text-left">
<v-skeleton-loader :loading="loading" type="list-item-avatar@8">
<v-expansion-panels accordion multiple hover>
<v-expansion-panel
v-for="(system, index) in systemStatus.systems"
:key="index"
>
<v-expansion-panel-header expand-icon="mdi-chevron-right">
<div class="d-flex align-items-center">
<v-icon class="icon mr-3">
{{ getIconName(system.name) }}
</v-icon>
{{ system.name }}
<v-spacer />
<div class="mx-6">
<v-tooltip top>
<template v-slot:activator="{ on, attrs }">
<span v-bind="attrs" v-on="on">
<GitLabIcon
class="status-icon mx-4"
:status="getStatusMapping(system.status)"
/>
</span>
</template>
<span> Latest Pipeline: {{ system.status }} </span>
</v-tooltip>
</div>
</div>
</v-expansion-panel-header>
<v-expansion-panel-content>
<div class="d-flex flex-wrap">
<p v-if="system.description" class="system-description">
{{ system.description }}
</p>
<v-spacer />
<ExternalLink
v-if="system.link"
:href="system.link"
class="mb-4"
>
{{ system.name }}
</ExternalLink>
</div>
<p class="subhead">Current status</p>
<div class="px-4">
<p>
<strong class="text-capitalize" :class="system.status">
{{ system.status }}
</strong>
since
<v-tooltip right>
<template v-slot:activator="{ on, attrs }">
<span v-bind="attrs" v-on="on" class="text-no-wrap">
{{ getIsoDateString(system.lastChange) }}
</span>
</template>
<span>{{ getLocalDateString(system.lastChange) }}</span>
</v-tooltip>
</p>
<p v-if="system.statusDetails">
{{ system.statusDetails }}
</p>
</div>
</v-expansion-panel-content>
</v-expansion-panel>
</v-expansion-panels>
</v-skeleton-loader>
</div>
</div>
</v-container>
</template>
<script>
import StatusService from "@/api/services/status";
import ExternalLink from "@/components/ExternalLink";
import GitLabIcon from "@/components/icons/GitLabIcon";
import { SET_ERROR_MESSAGE } from "@/store/mutation-types";
import ErrorMessage from "@/components/APIErrorCard";
export default {
components: {
ExternalLink,
GitLabIcon,
ErrorMessage,
},
data: () => ({
loading: false,
systemStatus: [],
error: false,
}),
async mounted() {
try {
this.loading = true;
this.systemStatus = await StatusService.getStatusSummary();
console.log("this.systemStatus", this.systemStatus);
} catch (error) {
this.error = true;
this.$store.commit(SET_ERROR_MESSAGE, error);
console.error(error);
} finally {
// TODO: remove fake wait
setTimeout(() => {
this.loading = false;
}, 2000);
}
},
methods: {
getIconName(systemName) {
const iconName = systemName.toLowerCase()?.replace(" ", "-");
if (this.$vuetify.icons.values[iconName]) {
return `$vuetify.icons.${iconName}`;
}
return null;
},
getLocalDateString(millis) {
return new Date(millis).toLocaleString();
},
getIsoDateString(millis) {
return new Date(millis).toISOString();
},
// map our status up/down/degraded to gitlab icon parlance
getStatusMapping(status) {
if (status === "down") {
return "failed";
} else if (status === "up") {
return "passed";
} else {
return "warning";
}
},
},
};
</script>
<style lang="scss">
.status-summary {
.support-row {
.v-btn {
max-width: 160px;
width: 160px;
}
& > * {
align-items: center;
}
}
.system-description,
.text-container {
min-width: 200px;
}
.degraded {
color: #fc9403;
}
.down {
color: #ff3738;
}
.up {
color: #56f000;
}
}
</style>
...@@ -2,11 +2,20 @@ import NotAuthorizedComponent from "@/components/NotAuthorizedComponent"; ...@@ -2,11 +2,20 @@ import NotAuthorizedComponent from "@/components/NotAuthorizedComponent";
import NotFoundComponent from "@/components/NotFoundComponent"; import NotFoundComponent from "@/components/NotFoundComponent";
import Permission from "@/config/user-permissions"; import Permission from "@/config/user-permissions";
const importHelper = (importFn) => {
return () => {
return importFn().catch((error) => {
console.error(error);
location.reload();
});
};
};
export default [ export default [
{ {
path: "/", path: "/",
name: "Launchboard", name: "Launchboard",
component: () => import("@/views/Home.vue"), component: importHelper(() => import("@/views/Home.vue")),
meta: { meta: {
title: "Platform One: Launchboard", title: "Platform One: Launchboard",
bodyClass: "launchboard-page", bodyClass: "launchboard-page",
...@@ -16,8 +25,9 @@ export default [ ...@@ -16,8 +25,9 @@ export default [
path: "/projects", path: "/projects",
name: "Projects", name: "Projects",
// route level code-splitting // route level code-splitting
component: () => component: importHelper(() =>
import(/* webpackChunkName: "projects" */ "@/views/Projects.vue"), import(/* webpackChunkName: "projects" */ "@/views/Projects.vue")
),
meta: { meta: {
title: "Platform One: My Projects", title: "Platform One: My Projects",
bodyClass: "projects-page", bodyClass: "projects-page",
...@@ -27,7 +37,9 @@ export default [ ...@@ -27,7 +37,9 @@ export default [
path: "/team", path: "/team",
name: "Team", name: "Team",
// route level code-splitting // route level code-splitting
component: () => import(/* webpackChunkName: "team" */ "@/views/Team.vue"), component: importHelper(() =>
import(/* webpackChunkName: "team" */ "@/views/Team.vue")
),
meta: { meta: {
title: "Platform One: My Team", title: "Platform One: My Team",
bodyClass: "team-page", bodyClass: "team-page",
...@@ -37,8 +49,9 @@ export default [ ...@@ -37,8 +49,9 @@ export default [
path: "/resources", path: "/resources",
name: "Resources", name: "Resources",
// route level code-splitting // route level code-splitting
component: () => component: importHelper(() =>
import(/* webpackChunkName: "resources" */ "@/views/Resources.vue"), import(/* webpackChunkName: "resources" */ "@/views/Resources.vue")
),
meta: { meta: {
title: "Platform One: Resources", title: "Platform One: Resources",
bodyClass: "resources-page", bodyClass: "resources-page",
...@@ -48,8 +61,9 @@ export default [ ...@@ -48,8 +61,9 @@ export default [
path: "/help", path: "/help",
name: "Help Center", name: "Help Center",
// route level code-splitting // route level code-splitting
component: () => component: importHelper(() =>
import(/* webpackChunkName: "help-center" */ "@/views/HelpCenter.vue"), import(/* webpackChunkName: "help-center" */ "@/views/HelpCenter.vue")
),
meta: { meta: {
title: "Platform One: Help Center", title: "Platform One: Help Center",
bodyClass: "help-page", bodyClass: "help-page",
...@@ -59,8 +73,9 @@ export default [ ...@@ -59,8 +73,9 @@ export default [
path: "/settings", path: "/settings",
name: "Settings", name: "Settings",
// route level code-splitting // route level code-splitting
component: () => component: importHelper(() =>
import(/* webpackChunkName: "settings" */ "@/views/Settings.vue"), import(/* webpackChunkName: "settings" */ "@/views/Settings.vue")
),
meta: { meta: {
title: "Platform One: Settings", title: "Platform One: Settings",
bodyClass: "settings-page", bodyClass: "settings-page",
...@@ -70,8 +85,9 @@ export default [ ...@@ -70,8 +85,9 @@ export default [
{ {
path: "/teams", path: "/teams",
name: "Teams", name: "Teams",
component: () => component: importHelper(() =>
import(/* webpackChunkName: "teams" */ "@/views/super-admin/Teams.vue"), import(/* webpackChunkName: "teams" */ "@/views/super-admin/Teams.vue")
),
meta: { meta: {
title: "Platform One: Teams", title: "Platform One: Teams",
bodyClass: "teams-page", bodyClass: "teams-page",
...@@ -81,7 +97,9 @@ export default [ ...@@ -81,7 +97,9 @@ export default [
{ {
path: "/teams/details/:teamId", path: "/teams/details/:teamId",
name: "TeamDetails", name: "TeamDetails",
component: () => import(/* webpackChunkName: "team" */ "@/views/Team.vue"), component: importHelper(() =>
import(/* webpackChunkName: "team" */ "@/views/Team.vue")
),
meta: { meta: {
title: "Platform One: Team Details", title: "Platform One: Team Details",
bodyClass: "team-page", bodyClass: "team-page",
...@@ -90,10 +108,11 @@ export default [ ...@@ -90,10 +108,11 @@ export default [
{ {
path: "/training", path: "/training",
name: "Courses", name: "Courses",
component: () => component: importHelper(() =>
import( import(
/* webpackChunkName: "training" */ "@/views/super-admin/Training.vue" /* webpackChunkName: "training" */ "@/views/super-admin/Training.vue"
), )
),
meta: { meta: {
title: "Platform One: Training", title: "Platform One: Training",
bodyClass: "training-page", bodyClass: "training-page",
...@@ -103,10 +122,11 @@ export default [ ...@@ -103,10 +122,11 @@ export default [
{ {
path: "/training/details/:trainingId", path: "/training/details/:trainingId",
name: "TrainingDetails", name: "TrainingDetails",
component: () => component: importHelper(() =>
import( import(
/* webpackChunkName: "training-details" */ "@/views/TrainingDetails.vue" /* webpackChunkName: "training-details" */ "@/views/TrainingDetails.vue"
), )
),
meta: { meta: {
title: "Platform One: Training Details", title: "Platform One: Training Details",
bodyClass: "training-details-page", bodyClass: "training-details-page",
...@@ -116,10 +136,11 @@ export default [ ...@@ -116,10 +136,11 @@ export default [
{ {
path: "/personnel", path: "/personnel",
name: "Personnel", name: "Personnel",
component: () => component: importHelper(() =>
import( import(
/* webpackChunkName: "personnel" */ "@/views/super-admin/Personnel.vue" /* webpackChunkName: "personnel" */ "@/views/super-admin/Personnel.vue"
), )
),
meta: { meta: {
title: "Platform One: Personnel", title: "Platform One: Personnel",
bodyClass: "personnel", bodyClass: "personnel",
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment