From b85d1a1b99cc521852667d22bd19e0795be2d6c3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Jan 2024 19:13:29 +0000 Subject: [PATCH 01/23] Bump follow-redirects from 1.14.9 to 1.15.4 in /web-ui Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.14.9 to 1.15.4. - [Release notes](https://github.com/follow-redirects/follow-redirects/releases) - [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.14.9...v1.15.4) --- updated-dependencies: - dependency-name: follow-redirects dependency-type: indirect ... Signed-off-by: dependabot[bot] --- web-ui/yarn.lock | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/web-ui/yarn.lock b/web-ui/yarn.lock index a77fe9c242..6117e588f7 100644 --- a/web-ui/yarn.lock +++ b/web-ui/yarn.lock @@ -8305,15 +8305,10 @@ flush-write-stream@^1.0.0: inherits "^2.0.3" readable-stream "^2.3.6" -follow-redirects@^1.0.0: - version "1.14.9" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.9.tgz#dd4ea157de7bfaf9ea9b3fbd85aa16951f78d8d7" - integrity sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w== - -follow-redirects@^1.15.0: - version "1.15.3" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.3.tgz#fe2f3ef2690afce7e82ed0b44db08165b207123a" - integrity sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q== +follow-redirects@^1.0.0, follow-redirects@^1.15.0: + version "1.15.4" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.4.tgz#cdc7d308bf6493126b17ea2191ea0ccf3e535adf" + integrity sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw== for-in@^1.0.2: version "1.0.2" From a37f5f185fc5f86dc46f46cdae097349b8741439 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 18 Jan 2024 19:28:16 +0000 Subject: [PATCH 02/23] Bump loader-utils from 1.4.0 to 1.4.2 in /web-ui Bumps [loader-utils](https://github.com/webpack/loader-utils) from 1.4.0 to 1.4.2. - [Release notes](https://github.com/webpack/loader-utils/releases) - [Changelog](https://github.com/webpack/loader-utils/blob/v1.4.2/CHANGELOG.md) - [Commits](https://github.com/webpack/loader-utils/compare/v1.4.0...v1.4.2) --- updated-dependencies: - dependency-name: loader-utils dependency-type: indirect ... Signed-off-by: dependabot[bot] --- web-ui/yarn.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/web-ui/yarn.lock b/web-ui/yarn.lock index 6117e588f7..24ef82c530 100644 --- a/web-ui/yarn.lock +++ b/web-ui/yarn.lock @@ -10894,27 +10894,27 @@ loader-utils@2.0.0: json5 "^2.1.2" loader-utils@^1.2.3, loader-utils@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" - integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== + version "1.4.2" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.2.tgz#29a957f3a63973883eb684f10ffd3d151fec01a3" + integrity sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg== dependencies: big.js "^5.2.2" emojis-list "^3.0.0" json5 "^1.0.1" loader-utils@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.2.tgz#d6e3b4fb81870721ae4e0868ab11dd638368c129" - integrity sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A== + version "2.0.4" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" + integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== dependencies: big.js "^5.2.2" emojis-list "^3.0.0" json5 "^2.1.2" loader-utils@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-3.2.0.tgz#bcecc51a7898bee7473d4bc6b845b23af8304d4f" - integrity sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ== + version "3.2.1" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-3.2.1.tgz#4fb104b599daafd82ef3e1a41fb9265f87e1f576" + integrity sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw== locate-path@^2.0.0: version "2.0.0" From 4c42b0e0374b0327f0b7c895dcb6cb86536ed6e7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 18 Jan 2024 19:32:06 +0000 Subject: [PATCH 03/23] Bump @babel/traverse from 7.17.3 to 7.23.7 in /web-ui Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.17.3 to 7.23.7. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.23.7/packages/babel-traverse) --- updated-dependencies: - dependency-name: "@babel/traverse" dependency-type: indirect ... Signed-off-by: dependabot[bot] --- web-ui/yarn.lock | 167 ++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 135 insertions(+), 32 deletions(-) diff --git a/web-ui/yarn.lock b/web-ui/yarn.lock index 6117e588f7..aa31cdde36 100644 --- a/web-ui/yarn.lock +++ b/web-ui/yarn.lock @@ -26,6 +26,14 @@ dependencies: "@babel/highlight" "^7.16.7" +"@babel/code-frame@^7.22.13", "@babel/code-frame@^7.23.5": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.23.5.tgz#9009b69a8c602293476ad598ff53e4562e15c244" + integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA== + dependencies: + "@babel/highlight" "^7.23.4" + chalk "^2.4.2" + "@babel/compat-data@^7.13.11", "@babel/compat-data@^7.16.8", "@babel/compat-data@^7.17.0", "@babel/compat-data@^7.17.10": version "7.17.10" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.10.tgz#711dc726a492dfc8be8220028b1b92482362baab" @@ -113,6 +121,16 @@ "@jridgewell/gen-mapping" "^0.1.0" jsesc "^2.5.1" +"@babel/generator@^7.23.6": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.6.tgz#9e1fca4811c77a10580d17d26b57b036133f3c2e" + integrity sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw== + dependencies: + "@babel/types" "^7.23.6" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + jsesc "^2.5.1" + "@babel/generator@^7.7.2": version "7.17.3" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.3.tgz#a2c30b0c4f89858cb87050c3ffdfd36bdf443200" @@ -203,6 +221,11 @@ dependencies: "@babel/types" "^7.16.7" +"@babel/helper-environment-visitor@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" + integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== + "@babel/helper-explode-assignable-expression@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz#12a6d8522fdd834f194e868af6354e8650242b7a" @@ -218,6 +241,14 @@ "@babel/template" "^7.16.7" "@babel/types" "^7.17.0" +"@babel/helper-function-name@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" + integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== + dependencies: + "@babel/template" "^7.22.15" + "@babel/types" "^7.23.0" + "@babel/helper-hoist-variables@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" @@ -225,6 +256,13 @@ dependencies: "@babel/types" "^7.16.7" +"@babel/helper-hoist-variables@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" + integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== + dependencies: + "@babel/types" "^7.22.5" + "@babel/helper-member-expression-to-functions@^7.16.7", "@babel/helper-member-expression-to-functions@^7.17.7": version "7.17.7" resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz#a34013b57d8542a8c4ff8ba3f747c02452a4d8c4" @@ -311,11 +349,28 @@ dependencies: "@babel/types" "^7.16.7" +"@babel/helper-split-export-declaration@^7.22.6": + version "7.22.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" + integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-string-parser@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz#9478c707febcbbe1ddb38a3d91a2e054ae622d83" + integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ== + "@babel/helper-validator-identifier@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== +"@babel/helper-validator-identifier@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== + "@babel/helper-validator-option@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" @@ -349,6 +404,15 @@ chalk "^2.0.0" js-tokens "^4.0.0" +"@babel/highlight@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.23.4.tgz#edaadf4d8232e1a961432db785091207ead0621b" + integrity sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A== + dependencies: + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" + js-tokens "^4.0.0" + "@babel/parser@^7.1.0": version "7.17.3" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.3.tgz#b07702b982990bf6fdc1da5049a23fece4c5c3d0" @@ -359,6 +423,11 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.10.tgz#873b16db82a8909e0fbd7f115772f4b739f6ce78" integrity sha512-n2Q6i+fnJqzOaq2VkdXxy2TCPCWQZHiCo0XqmrCvDWcZQKRyZzYi4Z0yxlBuN0w+r2ZHmre+Q087DSrw3pbJDQ== +"@babel/parser@^7.22.15", "@babel/parser@^7.23.6": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.6.tgz#ba1c9e512bda72a47e285ae42aff9d2a635a9e3b" + integrity sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ== + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz#4eda6d6c2a0aa79c70fa7b6da67763dfe2141050" @@ -1280,36 +1349,29 @@ "@babel/parser" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/traverse@^7.1.6", "@babel/traverse@^7.12.11", "@babel/traverse@^7.12.9", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.10", "@babel/traverse@^7.17.3", "@babel/traverse@^7.17.9", "@babel/traverse@^7.4.5": - version "7.17.10" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.10.tgz#1ee1a5ac39f4eac844e6cf855b35520e5eb6f8b5" - integrity sha512-VmbrTHQteIdUUQNTb+zE12SHS/xQVIShmBPhlNP12hD5poF2pbITW1Z4172d03HegaQWhLffdkRJYtAzp0AGcw== - dependencies: - "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.10" - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-function-name" "^7.17.9" - "@babel/helper-hoist-variables" "^7.16.7" - "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/parser" "^7.17.10" - "@babel/types" "^7.17.10" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/traverse@^7.7.2": - version "7.17.3" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.3.tgz#0ae0f15b27d9a92ba1f2263358ea7c4e7db47b57" - integrity sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw== - dependencies: - "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.3" - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-function-name" "^7.16.7" - "@babel/helper-hoist-variables" "^7.16.7" - "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/parser" "^7.17.3" - "@babel/types" "^7.17.0" - debug "^4.1.0" +"@babel/template@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38" + integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== + dependencies: + "@babel/code-frame" "^7.22.13" + "@babel/parser" "^7.22.15" + "@babel/types" "^7.22.15" + +"@babel/traverse@^7.1.6", "@babel/traverse@^7.12.11", "@babel/traverse@^7.12.9", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.10", "@babel/traverse@^7.17.3", "@babel/traverse@^7.17.9", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.2": + version "7.23.7" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.7.tgz#9a7bf285c928cb99b5ead19c3b1ce5b310c9c305" + integrity sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg== + dependencies: + "@babel/code-frame" "^7.23.5" + "@babel/generator" "^7.23.6" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/parser" "^7.23.6" + "@babel/types" "^7.23.6" + debug "^4.3.1" globals "^11.1.0" "@babel/types@^7.0.0", "@babel/types@^7.12.6", "@babel/types@^7.3.0", "@babel/types@^7.3.3": @@ -1328,6 +1390,15 @@ "@babel/helper-validator-identifier" "^7.16.7" to-fast-properties "^2.0.0" +"@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.6": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.6.tgz#be33fdb151e1f5a56877d704492c240fc71c7ccd" + integrity sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg== + dependencies: + "@babel/helper-string-parser" "^7.23.4" + "@babel/helper-validator-identifier" "^7.22.20" + to-fast-properties "^2.0.0" + "@base2/pretty-print-object@1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@base2/pretty-print-object/-/pretty-print-object-1.0.1.tgz#371ba8be66d556812dc7fb169ebc3c08378f69d4" @@ -1981,21 +2052,53 @@ "@jridgewell/set-array" "^1.0.0" "@jridgewell/sourcemap-codec" "^1.4.10" +"@jridgewell/gen-mapping@^0.3.2": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" + integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + "@jridgewell/resolve-uri@^3.0.3": version "3.0.7" resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz#30cd49820a962aff48c8fffc5cd760151fca61fe" integrity sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA== +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" + integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== + "@jridgewell/set-array@^1.0.0": version "1.1.1" resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.1.tgz#36a6acc93987adcf0ba50c66908bd0b70de8afea" integrity sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ== +"@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + "@jridgewell/sourcemap-codec@^1.4.10": version "1.4.13" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz#b6461fb0c2964356c469e115f504c95ad97ab88c" integrity sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w== +"@jridgewell/sourcemap-codec@^1.4.14": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/trace-mapping@^0.3.17": + version "0.3.21" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.21.tgz#5dc1df7b3dc4a6209e503a924e1ca56097a2bb15" + integrity sha512-SRfKmRe1KvYnxjEMtxEr+J4HIeMX5YBg/qhRHpxEIGjhX1rshcHlnFUE9K0GazhVKWM7B+nARSkV8LuvJdJ5/g== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + "@jridgewell/trace-mapping@^0.3.7", "@jridgewell/trace-mapping@^0.3.9": version "0.3.13" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz#dcfe3e95f224c8fe97a87a5235defec999aa92ea" @@ -5769,7 +5872,7 @@ ccount@^1.0.0: resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.1.0.tgz#246687debb6014735131be8abab2d93898f8d043" integrity sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg== -chalk@^2.0.0, chalk@^2.4.1: +chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -6852,7 +6955,7 @@ debug@^3.0.0, debug@^3.1.1, debug@^3.2.7: dependencies: ms "^2.1.1" -debug@^4.1.0, debug@^4.1.1: +debug@^4.1.0, debug@^4.1.1, debug@^4.3.1: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== From 2e6dc00b4f87a7a03aa7a97338953efbf71d87bd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 18 Jan 2024 19:36:11 +0000 Subject: [PATCH 04/23] Bump browserify-sign from 4.2.1 to 4.2.2 in /web-ui Dependabot couldn't find the original pull request head commit, 904e96425ba9955c702129364de3f9d806161a58. --- web-ui/yarn.lock | 42 ++++++++++++++++++++++++++++-------------- 1 file changed, 28 insertions(+), 14 deletions(-) diff --git a/web-ui/yarn.lock b/web-ui/yarn.lock index 6117e588f7..3c0df9cd0c 100644 --- a/web-ui/yarn.lock +++ b/web-ui/yarn.lock @@ -5356,11 +5356,16 @@ bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== -bn.js@^5.0.0, bn.js@^5.1.1: +bn.js@^5.0.0: version "5.2.0" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== +bn.js@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== + body-parser@1.20.0: version "1.20.0" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.0.tgz#3de69bd89011c11573d7bfee6a64f11b6bd27cc5" @@ -5489,7 +5494,7 @@ browserify-des@^1.0.0: inherits "^2.0.1" safe-buffer "^5.1.2" -browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: +browserify-rsa@^4.0.0, browserify-rsa@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== @@ -5498,19 +5503,19 @@ browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: randombytes "^2.0.1" browserify-sign@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" - integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== + version "4.2.2" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.2.tgz#e78d4b69816d6e3dd1c747e64e9947f9ad79bc7e" + integrity sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg== dependencies: - bn.js "^5.1.1" - browserify-rsa "^4.0.1" + bn.js "^5.2.1" + browserify-rsa "^4.1.0" create-hash "^1.2.0" create-hmac "^1.1.7" - elliptic "^6.5.3" + elliptic "^6.5.4" inherits "^2.0.4" - parse-asn1 "^5.1.5" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" + parse-asn1 "^5.1.6" + readable-stream "^3.6.2" + safe-buffer "^5.2.1" browserify-zlib@^0.2.0: version "0.2.0" @@ -7320,7 +7325,7 @@ element-resize-detector@^1.2.2: dependencies: batch-processor "1.0.0" -elliptic@^6.5.3: +elliptic@^6.5.3, elliptic@^6.5.4: version "6.5.4" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== @@ -12506,7 +12511,7 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parse-asn1@^5.0.0, parse-asn1@^5.1.5: +parse-asn1@^5.0.0, parse-asn1@^5.1.6: version "5.1.6" resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== @@ -14246,6 +14251,15 @@ readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0, readable string_decoder "^1.1.1" util-deprecate "^1.0.1" +readable-stream@^3.6.2: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + readdirp@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" @@ -14704,7 +14718,7 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: +safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== From e5998302f6bcbe775c792bd1e0b8ac66ba5cb250 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 21 Feb 2024 03:15:11 +0000 Subject: [PATCH 05/23] Bump ip from 1.1.5 to 1.1.9 in /web-ui Bumps [ip](https://github.com/indutny/node-ip) from 1.1.5 to 1.1.9. - [Commits](https://github.com/indutny/node-ip/compare/v1.1.5...v1.1.9) --- updated-dependencies: - dependency-name: ip dependency-type: indirect ... Signed-off-by: dependabot[bot] --- web-ui/yarn.lock | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/web-ui/yarn.lock b/web-ui/yarn.lock index 651d5ddef0..e723b796b9 100644 --- a/web-ui/yarn.lock +++ b/web-ui/yarn.lock @@ -9522,15 +9522,10 @@ invariant@^2.2.4: dependencies: loose-envify "^1.0.0" -ip@^1.1.0: - version "1.1.5" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" - integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= - -ip@^1.1.5: - version "1.1.8" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.8.tgz#ae05948f6b075435ed3307acce04629da8cdbf48" - integrity sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg== +ip@^1.1.0, ip@^1.1.5: + version "1.1.9" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.9.tgz#8dfbcc99a754d07f425310b86a99546b1151e396" + integrity sha512-cyRxvOEpNHNtchU3Ln9KC/auJgup87llfQpQ+t5ghoC/UhL16SWzbueiCsdTnWmqAWl7LadfuwhlqmtOaqMHdQ== ipaddr.js@1.9.1: version "1.9.1" From b7ff95395b1d83476ebb503421cf7117cb18b454 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 1 Mar 2024 17:43:01 +0000 Subject: [PATCH 06/23] Bump sanitize-html from 2.7.0 to 2.12.1 in /web-ui Bumps [sanitize-html](https://github.com/apostrophecms/sanitize-html) from 2.7.0 to 2.12.1. - [Changelog](https://github.com/apostrophecms/sanitize-html/blob/main/CHANGELOG.md) - [Commits](https://github.com/apostrophecms/sanitize-html/compare/2.7.0...2.12.1) --- updated-dependencies: - dependency-name: sanitize-html dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- web-ui/package.json | 2 +- web-ui/yarn.lock | 54 +++++++++++++++++++++++++++++++++++++++------ 2 files changed, 48 insertions(+), 8 deletions(-) diff --git a/web-ui/package.json b/web-ui/package.json index 48765d9d5e..4d6b361401 100644 --- a/web-ui/package.json +++ b/web-ui/package.json @@ -71,7 +71,7 @@ "react-swipeable-views": "^0.14.0", "react-test-renderer": "^17.0.2", "reselect": "^4.0.0", - "sanitize-html": "^2.6.1", + "sanitize-html": "^2.12.1", "styled-components": "^5.3.1", "universal-cookie": "^4.0.4" }, diff --git a/web-ui/yarn.lock b/web-ui/yarn.lock index e723b796b9..1cd9468ee8 100644 --- a/web-ui/yarn.lock +++ b/web-ui/yarn.lock @@ -7280,6 +7280,15 @@ dom-serializer@^1.3.2: domhandler "^4.2.0" entities "^2.0.0" +dom-serializer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" + integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== + dependencies: + domelementtype "^2.3.0" + domhandler "^5.0.2" + entities "^4.2.0" + dom-walk@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" @@ -7295,7 +7304,7 @@ domelementtype@1, domelementtype@^1.3.1: resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== -domelementtype@^2.0.1, domelementtype@^2.2.0: +domelementtype@^2.0.1, domelementtype@^2.2.0, domelementtype@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== @@ -7328,6 +7337,13 @@ domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: dependencies: domelementtype "^2.2.0" +domhandler@^5.0.2, domhandler@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" + integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== + dependencies: + domelementtype "^2.3.0" + domutils@^1.5.1, domutils@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" @@ -7345,6 +7361,15 @@ domutils@^2.0.0, domutils@^2.5.2, domutils@^2.7.0, domutils@^2.8.0: domelementtype "^2.2.0" domhandler "^4.2.0" +domutils@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.1.0.tgz#c47f551278d3dc4b0b1ab8cbb42d751a6f0d824e" + integrity sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA== + dependencies: + dom-serializer "^2.0.0" + domelementtype "^2.3.0" + domhandler "^5.0.3" + dot-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" @@ -7518,6 +7543,11 @@ entities@^2.0.0: resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== +entities@^4.2.0, entities@^4.4.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" + integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== + enzyme-shallow-equal@^1.0.0, enzyme-shallow-equal@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.4.tgz#b9256cb25a5f430f9bfe073a84808c1d74fced2e" @@ -9256,7 +9286,7 @@ htmlparser2@^4.0.0, htmlparser2@^4.1.0: domutils "^2.0.0" entities "^2.0.0" -htmlparser2@^6.0.0, htmlparser2@^6.1.0: +htmlparser2@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== @@ -9266,6 +9296,16 @@ htmlparser2@^6.0.0, htmlparser2@^6.1.0: domutils "^2.5.2" entities "^2.0.0" +htmlparser2@^8.0.0: + version "8.0.2" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-8.0.2.tgz#f002151705b383e62433b5cf466f5b716edaec21" + integrity sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA== + dependencies: + domelementtype "^2.3.0" + domhandler "^5.0.3" + domutils "^3.0.1" + entities "^4.4.0" + http-deceiver@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" @@ -14848,14 +14888,14 @@ sane@^4.0.3: minimist "^1.1.1" walker "~1.0.5" -sanitize-html@^2.6.1: - version "2.7.0" - resolved "https://registry.yarnpkg.com/sanitize-html/-/sanitize-html-2.7.0.tgz#e106205b468aca932e2f9baf241f24660d34e279" - integrity sha512-jfQelabOn5voO7FAfnQF7v+jsA6z9zC/O4ec0z3E35XPEtHYJT/OdUziVWlKW4irCr2kXaQAyXTXDHWAibg1tA== +sanitize-html@^2.12.1: + version "2.12.1" + resolved "https://registry.yarnpkg.com/sanitize-html/-/sanitize-html-2.12.1.tgz#280a0f5c37305222921f6f9d605be1f6558914c7" + integrity sha512-Plh+JAn0UVDpBRP/xEjsk+xDCoOvMBwQUf/K+/cBAVuTbtX8bj2VB7S1sL1dssVpykqp0/KPSesHrqXtokVBpA== dependencies: deepmerge "^4.2.2" escape-string-regexp "^4.0.0" - htmlparser2 "^6.0.0" + htmlparser2 "^8.0.0" is-plain-object "^5.0.0" parse-srcset "^1.0.2" postcss "^8.3.11" From 2c715c72ae7c18de3a7f1dc094da6415e9f81378 Mon Sep 17 00:00:00 2001 From: Zachary Klein Date: Wed, 6 Mar 2024 16:56:36 -0600 Subject: [PATCH 07/23] Check for report permission before rendering REPORTS menu item --- web-ui/src/components/menu/Menu.jsx | 8 ++++++-- web-ui/src/context/selectors.js | 10 ++++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/web-ui/src/components/menu/Menu.jsx b/web-ui/src/components/menu/Menu.jsx index b273b7c17e..d5ceccee1a 100644 --- a/web-ui/src/components/menu/Menu.jsx +++ b/web-ui/src/components/menu/Menu.jsx @@ -2,7 +2,7 @@ import React, { useContext, useEffect, useRef, useState } from "react"; import { postEmployeeHours } from "../../api/hours"; import { reportMemberCsv } from "../../api/member" -import { selectCsrfToken, selectIsAdmin, selectIsSupervisor } from "../../context/selectors"; +import {selectCsrfToken, selectHasReportPermission, selectIsAdmin, selectIsSupervisor} from "../../context/selectors"; import { UPDATE_TOAST } from "../../context/actions"; import fileDownload from 'js-file-download'; @@ -137,7 +137,11 @@ function Menu() { const csrf = selectCsrfToken(state); const { id, workEmail } = userProfile && userProfile.memberProfile ? userProfile.memberProfile : {}; + + console.log("userProfile", userProfile); + const isAdmin = selectIsAdmin(state); + const hasReportPermission = selectHasReportPermission(state); const isPDL = userProfile && userProfile.role && userProfile.role.includes("PDL"); const isSupervisor = selectIsSupervisor(state); @@ -372,7 +376,7 @@ function Menu() { {createListJsx(feedbackLinks, true)} - {isAdmin && ( + {hasReportPermission && ( + (loading) => loading.memberProfiles - + ) export const selectCurrentUser = createSelector( @@ -40,6 +40,12 @@ export const selectIsAdmin = createSelector( userProfile && userProfile.role && userProfile.role.includes("ADMIN") ); +export const selectHasReportPermission = createSelector( + selectUserProfile, + (userProfile) => + userProfile && userProfile.role && userProfile.permissions.any((permission) => permission.includes("REPORT")) +); + export const selectIsPDL = createSelector( selectUserProfile, (userProfile) => From 391cf09907a99942b1f1fd7c69fd771d1e861bf2 Mon Sep 17 00:00:00 2001 From: Zachary Klein Date: Thu, 7 Mar 2024 16:38:38 -0600 Subject: [PATCH 08/23] Fixed check for report permission --- web-ui/src/components/menu/Menu.test.js | 3 +++ web-ui/src/context/selectors.js | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/web-ui/src/components/menu/Menu.test.js b/web-ui/src/components/menu/Menu.test.js index 6653db5110..3efcaf7652 100644 --- a/web-ui/src/components/menu/Menu.test.js +++ b/web-ui/src/components/menu/Menu.test.js @@ -15,6 +15,7 @@ const initialState = { workEmail: "test@tester.com", }, role: ["MEMBER"], + permissions: [], imageUrl: "https://upload.wikimedia.org/wikipedia/commons/7/74/SNL_MrBill_Doll.jpg", }, @@ -31,6 +32,7 @@ const adminState = { workEmail: "test@tester.com", }, role: ["MEMBER", "ADMIN"], + permissions: [{ permission: "CAN_VIEW_SKILLS_REPORT"}], imageUrl: "https://upload.wikimedia.org/wikipedia/commons/7/74/SNL_MrBill_Doll.jpg", }, @@ -47,6 +49,7 @@ const pdlState = { workEmail: "test@tester.com", }, role: ["MEMBER","PDL"], + permissions: [], imageUrl: "https://upload.wikimedia.org/wikipedia/commons/7/74/SNL_MrBill_Doll.jpg", }, diff --git a/web-ui/src/context/selectors.js b/web-ui/src/context/selectors.js index d62d839780..fbe060ad94 100644 --- a/web-ui/src/context/selectors.js +++ b/web-ui/src/context/selectors.js @@ -43,7 +43,7 @@ export const selectIsAdmin = createSelector( export const selectHasReportPermission = createSelector( selectUserProfile, (userProfile) => - userProfile && userProfile.role && userProfile.permissions.any((permission) => permission.includes("REPORT")) + userProfile && userProfile.role && userProfile.permissions.find((p) => p?.permission?.includes("REPORT")) ); export const selectIsPDL = createSelector( From 4f6bab021c3238c0291f0ff2783f3a109e479bbf Mon Sep 17 00:00:00 2001 From: Zachary Klein Date: Thu, 7 Mar 2024 17:03:24 -0600 Subject: [PATCH 09/23] Added test for selectHasReportPermission selector --- web-ui/src/context/selectors.js | 2 +- web-ui/src/context/selectors.test.js | 2360 +++++++++++++------------- 2 files changed, 1194 insertions(+), 1168 deletions(-) diff --git a/web-ui/src/context/selectors.js b/web-ui/src/context/selectors.js index fbe060ad94..fdd8c0b100 100644 --- a/web-ui/src/context/selectors.js +++ b/web-ui/src/context/selectors.js @@ -43,7 +43,7 @@ export const selectIsAdmin = createSelector( export const selectHasReportPermission = createSelector( selectUserProfile, (userProfile) => - userProfile && userProfile.role && userProfile.permissions.find((p) => p?.permission?.includes("REPORT")) + userProfile && userProfile.role && userProfile.permissions.some((p) => p?.permission?.includes("REPORT")) ); export const selectIsPDL = createSelector( diff --git a/web-ui/src/context/selectors.test.js b/web-ui/src/context/selectors.test.js index 3b3baf2e2e..6b9ebc620d 100644 --- a/web-ui/src/context/selectors.test.js +++ b/web-ui/src/context/selectors.test.js @@ -1,1173 +1,1199 @@ import { - selectMemberProfiles, - selectProfileMap, - selectPdlRoles, - selectMappedPdls, - selectOrderedPdls, - selectCheckinPDLS, - selectTeamMembersWithCheckinPDL, - selectCheckinsForTeamMemberAndPDL, - selectCurrentMembers, - selectNormalizedMembers, - selectNormalizedTeams, - selectMostRecentCheckin, - selectSupervisors, - selectSupervisorHierarchyIds, - selectSubordinates, - selectIsSubordinateOfCurrentUser, + selectMemberProfiles, + selectProfileMap, + selectPdlRoles, + selectMappedPdls, + selectOrderedPdls, + selectCheckinPDLS, + selectTeamMembersWithCheckinPDL, + selectCheckinsForTeamMemberAndPDL, + selectCurrentMembers, + selectNormalizedMembers, + selectNormalizedTeams, + selectMostRecentCheckin, + selectSupervisors, + selectSupervisorHierarchyIds, + selectSubordinates, + selectIsSubordinateOfCurrentUser, selectHasReportPermission, } from "./selectors"; describe("Selectors", () => { - it("selectMemberProfiles should return an array of all member profiles", () => { - const testMemberProfiles = [ - { - id: 1, - bioText: "foo", - employeeId: 11, - name: "A Person", - firstName: "A", - lastName: "PersonA", - location: "St Louis", - title: "engineer", - workEmail: "employee@sample.com", - pdlId: 9, - startDate: [2012, 9, 29], - }, - { - id: 2, - bioText: "foo", - employeeId: 12, - name: "B Person", - firstName: "B", - lastName: "PersonB", - location: "St Louis", - title: "engineer", - workEmail: "employee@sample.com", - pdlId: 9, - startDate: [2012, 9, 29], - }, - { - id: 3, - bioText: "foo", - employeeId: 13, - name: "C Person", - firstName: "C", - lastName: "PersonC", - location: "St Louis", - title: "engineer", - workEmail: "employee@sample.com", - pdlId: 9, - startDate: [2012, 9, 29], - }, - ]; - const testState = { - memberProfiles: testMemberProfiles - }; - - expect(selectMemberProfiles(testState)).toEqual(testState.memberProfiles); - }); - - it("selectProfileMap should return an array of all member profiles mapped by id", () => { - const testMemberProfiles = [ - { - id: 1, - bioText: "foo", - employeeId: 11, - name: "A Person", - firstName: "A", - lastName: "PersonA", - location: "St Louis", - title: "engineer", - workEmail: "employee@sample.com", - pdlId: 9, - startDate: [2012, 9, 29], - }, - { - id: 2, - bioText: "foo", - employeeId: 12, - name: "B Person", - firstName: "B", - lastName: "PersonB", - location: "St Louis", - title: "engineer", - workEmail: "employee@sample.com", - pdlId: 9, - startDate: [2012, 9, 29], - }, - { - id: 3, - bioText: "foo", - employeeId: 13, - name: "C Person", - firstName: "C", - lastName: "PersonC", - location: "St Louis", - title: "engineer", - workEmail: "employee@sample.com", - pdlId: 9, - startDate: [2012, 9, 29], - }, - ]; - - const matchingProfiles = { - [testMemberProfiles[0].id]: testMemberProfiles[0], - [testMemberProfiles[1].id]: testMemberProfiles[1], - [testMemberProfiles[2].id]: testMemberProfiles[2], - }; - - const testState = { - memberProfiles: [ - testMemberProfiles[0], - testMemberProfiles[1], - testMemberProfiles[2], - ], - }; - - expect(selectProfileMap(testState)).toEqual(matchingProfiles); - }); - - it("selectPdlRoles should return an array of all member PDL roles", () => { - const matchingRoles = [ - { - id: "12", - memberid: "2", - role: "PDL", - }, - { - id: "13", - memberid: "3", - role: "PDL", - }, - ]; - const testState = { - roles: [ - { - id: "11", - memberid: "1", - role: "MEMBER", - }, - { - id: "12", - memberid: "2", - role: "PDL", - }, - { - id: "13", - memberid: "3", - role: "PDL", - }, - ], - }; - - expect(selectPdlRoles(testState)).toEqual(matchingRoles); - }); - - it("selectMappedPdls should return an array of all member PDL profiles", () => { - const matchingMembers = [ - { - id: "2", - bioText: "foo", - employeeId: 12, - name: "B Person", - firstName: "B", - lastName: "PersonB", - location: "St Louis", - title: "engineer", - workEmail: "employee@sample.com", - pdlId: 9, - startDate: [2012, 9, 29], - }, - { - id: "3", - bioText: "foo", - employeeId: 13, - name: "C Person", - firstName: "C", - lastName: "PersonC", - location: "St Louis", - title: "engineer", - workEmail: "employee@sample.com", - pdlId: 9, - startDate: [2012, 9, 29], - }, - ]; - - const testRoles = [ - { - id: "11", - role: "MEMBER" - }, - { - id: "12", - role: "PDL" - } - ] - - const matchingRoles = [ - { - memberRoleId: { - roleId: "12", - memberId: "2", - } - }, - { - memberRoleId: { - roleId: "12", - memberId: "3", - } - }, - ]; - - const testMemberRoles = [ - { - memberRoleId: { - roleId: "11", - memberId: "1", - } - }, - matchingRoles[0], - matchingRoles[1], - ]; - - const testState = { - memberProfiles: [ - { - id: "1", - bioText: "foo", - employeeId: 11, - name: "A Person", - firstName: "A", - lastName: "PersonA", - location: "St Louis", - title: "engineer", - workEmail: "employee@sample.com", - pdlId: 9, - startDate: [2012, 9, 29], - }, - { - id: "2", - bioText: "foo", - employeeId: 12, - name: "B Person", - firstName: "B", - lastName: "PersonB", - location: "St Louis", - title: "engineer", - workEmail: "employee@sample.com", - pdlId: 9, - startDate: [2012, 9, 29], - }, - { - id: "3", - bioText: "foo", - employeeId: 13, - name: "C Person", - firstName: "C", - lastName: "PersonC", - location: "St Louis", - title: "engineer", - workEmail: "employee@sample.com", - pdlId: 9, - startDate: [2012, 9, 29], - }, - ], - roles: testRoles, - userRoles: testMemberRoles, - }; - expect(selectMappedPdls(testState)).toEqual(matchingMembers); - }); - - it("selectOrderedPdls should return an array of all member PDL profiles ordered by last name", () => { - const matchingMembers = [ - { - id: "3", - bioText: "foo", - employeeId: 13, - name: "B PersonB", - firstName: "B", - lastName: "PersonB", - location: "St Louis", - title: "engineer", - workEmail: "employee@sample.com", - pdlId: 9, - startDate: [2012, 9, 29], - }, - { - id: "2", - bioText: "foo", - employeeId: 12, - name: "C PersonC", - firstName: "C", - lastName: "PersonC", - location: "St Louis", - title: "engineer", - workEmail: "employee@sample.com", - pdlId: 9, - startDate: [2012, 9, 29], - }, - ]; - - const testRoles = [ - { - id: "11", - role: "MEMBER" - }, - { - id: "12", - role: "PDL" - } - ] - - const matchingRoles = [ - { - memberRoleId: { - roleId: "12", - memberId: "2", - } - }, - { - memberRoleId: { - roleId: "12", - memberId: "3", - } - }, - ]; - - const testMemberRoles = [ - { - memberRoleId: { - roleId: "11", - memberId: "1", - } - }, - matchingRoles[0], - matchingRoles[1], - ]; - - const testState = { - memberProfiles: [ - { - id: "1", - bioText: "foo", - employeeId: 11, - name: "A PersonA", - firstName: "A", - lastName: "PersonA", - location: "St Louis", - title: "engineer", - workEmail: "employee@sample.com", - pdlId: 9, - startDate: [2012, 9, 29], - }, - { - id: "2", - bioText: "foo", - employeeId: 12, - name: "C PersonC", - firstName: "C", - lastName: "PersonC", - location: "St Louis", - title: "engineer", - workEmail: "employee@sample.com", - pdlId: 9, - startDate: [2012, 9, 29], - }, - { - id: "3", - bioText: "foo", - employeeId: 13, - name: "B PersonB", - firstName: "B", - lastName: "PersonB", - location: "St Louis", - title: "engineer", - workEmail: "employee@sample.com", - pdlId: 9, - startDate: [2012, 9, 29], - }, - ], - roles: testRoles, - userRoles: testMemberRoles, - }; - expect(selectOrderedPdls(testState)).toEqual(matchingMembers); - }); - - it("selectCheckinPdls should return an array of all member PDL profiles that have an associated checkin", () => { - const matchingMembers = [ - { - id: 12, - bioText: "foo", - name: "B PersonB", - firstName: "B", - lastName: "PersonB", - location: "St Louis", - title: "engineer", - workEmail: "employee@sample.com", - startDate: [2012, 9, 29], - }, - { - id: 13, - bioText: "foo", - name: "C PersonC", - firstName: "C", - lastName: "PersonC", - location: "St Louis", - title: "engineer", - workEmail: "employee@sample.com", - startDate: [2012, 9, 29], - }, - ]; - - const testState = { - checkins: [ - { pdlId: 13, completed: false, checkInDate: [2020, 9, 13] }, - { pdlId: 12, completed: false, checkInDate: [2021, 9, 12] }, - { pdlId: 12, completed: true, checkInDate: [2020, 9, 11] }, - ], - memberProfiles: [ - { - id: 11, - bioText: "foo", - name: "A PersonA", - firstName: "A", - lastName: "PersonA", - location: "St Louis", - title: "engineer", - workEmail: "employee@sample.com", - startDate: [2012, 9, 29], - }, - { - id: 12, - bioText: "foo", - name: "B PersonB", - firstName: "B", - lastName: "PersonB", - location: "St Louis", - title: "engineer", - workEmail: "employee@sample.com", - startDate: [2012, 9, 29], - }, - { - id: 13, - bioText: "foo", - name: "C PersonC", - firstName: "C", - lastName: "PersonC", - location: "St Louis", - title: "engineer", - workEmail: "employee@sample.com", - startDate: [2012, 9, 29], - }, - ], - }; - expect(selectCheckinPDLS(testState, true, true)).toEqual(matchingMembers); - }); - - it("selectTeamMembersWithCheckinPDL should return an array of all members associated with a pdl that have a checkin", () => { - const matchingMembers = [ - { - id: 12, - bioText: "foo", - name: "B PersonB", - firstName: "B", - lastName: "PersonB", - location: "St Louis", - pdlId: 1, - title: "engineer", - workEmail: "employee@sample.com", - startDate: [2012, 9, 29], - }, - { - id: 13, - bioText: "foo", - name: "C PersonC", - firstName: "C", - lastName: "PersonC", - location: "St Louis", - pdlId: 1, - title: "engineer", - workEmail: "employee@sample.com", - startDate: [2012, 9, 29], - }, - ]; - - const testState = { - checkins: [ - { - teamMemberId: 12, - pdlId: 1, - completed: false, - checkInDate: [2020, 9, 10], - }, - { - teamMemberId: 13, - pdlId: 1, - completed: false, - checkInDate: [2020, 9, 10], - }, - { - teamMemberId: 11, - pdlId: 2, - completed: false, - checkInDate: [2020, 9, 10], - }, - ], - memberProfiles: [ - { - id: 11, - bioText: "foo", - name: "A PersonA", - firstName: "A", - lastName: "PersonA", - location: "St Louis", - title: "engineer", - workEmail: "employee@sample.com", - pdlId: 2, - startDate: [2012, 9, 29], - }, - { - id: 12, - bioText: "foo", - name: "B PersonB", - firstName: "B", - lastName: "PersonB", - location: "St Louis", - pdlId: 1, - title: "engineer", - workEmail: "employee@sample.com", - startDate: [2012, 9, 29], - }, - { - id: 13, - bioText: "foo", - name: "C PersonC", - firstName: "C", - lastName: "PersonC", - location: "St Louis", - pdlId: 1, - title: "engineer", - workEmail: "employee@sample.com", - startDate: [2012, 9, 29], - }, - ], - }; - expect(selectTeamMembersWithCheckinPDL(testState, 1)).toEqual( - matchingMembers - ); - }); - - it("selectCheckinsForTeamMemberAndPDL should return an array of all members associated with a pdl that have a checkin", () => { - const matchingCheckins = [ - { - id: 1, - teamMemberId: 12, - pdlId: 1, - completed: false, - checkInDate: [2020, 9, 10], - }, - { - id: 2, - teamMemberId: 12, - pdlId: 1, - completed: true, - checkInDate: [2020, 10, 10], - }, - ]; - - const testState = { - checkins: [ - { - id: 1, - teamMemberId: 12, - pdlId: 1, - completed: false, - checkInDate: [2020, 9, 10], - }, - { - id: 2, - teamMemberId: 12, - pdlId: 1, - completed: true, - checkInDate: [2020, 10, 10], - }, - { - id: 3, - teamMemberId: 11, - pdlId: 2, - completed: false, - checkInDate: [2020, 9, 10], - }, - { - id: 4, - teamMemberId: 19, - pdlId: 4, - completed: false, - checkInDate: [2020, 9, 10], - }, - ], - memberProfiles: [ - { - id: 11, - bioText: "foo", - name: "A PersonA", - firstName: "A", - lastName: "PersonA", - location: "St Louis", - title: "engineer", - workEmail: "employee@sample.com", - pdlId: 2, - startDate: [2012, 9, 29], - }, - { - id: 12, - bioText: "foo", - name: "B PersonB", - firstName: "B", - lastName: "PersonB", - location: "St Louis", - pdlId: 1, - title: "engineer", - workEmail: "employee@sample.com", - startDate: [2012, 9, 29], - }, - { - id: 13, - bioText: "foo", - name: "C PersonC", - firstName: "C", - lastName: "PersonC", - location: "St Louis", - pdlId: 1, - title: "engineer", - workEmail: "employee@sample.com", - startDate: [2012, 9, 29], - }, - ], - }; - expect(selectCheckinsForTeamMemberAndPDL(testState, 12, 1)).toEqual( - matchingCheckins - ); - }); - - it("selectCurrentMembers should return an array of non-terminated profiles", () => { - const testMemberProfiles = [ - { - id: 1, - bioText: "foo", - employeeId: 11, - name: "Iván López Martín", - firstName: "Iván", - lastName: "Martín", - location: "St Louis", - title: "engineer", - workEmail: "employee@sample.com", - pdlId: 9, - startDate: [2012, 9, 29], - }, - { - id: 2, - bioText: "foo", - employeeId: 12, - name: "B Person", - firstName: "B", - lastName: "PersonB", - location: "St Louis", - title: "engineer", - workEmail: "employee@sample.com", - pdlId: 9, - startDate: [2012, 9, 29], - }, - { - id: 3, - bioText: "foo", - employeeId: 13, - name: "C Person", - firstName: "C", - lastName: "PersonC", - location: "St Louis", - title: "engineer", - workEmail: "employee@sample.com", - pdlId: 9, - startDate: [2012, 9, 29], - terminationDate: [2020, 12, 31], - }, - ]; - const testState = { - memberProfiles: [ - testMemberProfiles[0], - testMemberProfiles[1], - testMemberProfiles[2], - ], - }; - - const result = { - memberProfiles: [testMemberProfiles[0], testMemberProfiles[1]], - }; - - expect(selectCurrentMembers(testState)).toEqual(result.memberProfiles); - }); - - it("selectNormalizedMembers should return an array of appropriate member profiles despite accents", () => { - const testMemberProfiles = [ - { - id: 1, - bioText: "foo", - employeeId: 11, - name: "Iván López Martín", - firstName: "Iván", - lastName: "Martín", - location: "St Louis", - title: "engineer", - workEmail: "employee@sample.com", - pdlId: 9, - startDate: [2012, 9, 29], - }, - { - id: 2, - bioText: "foo", - employeeId: 12, - name: "B Person", - firstName: "B", - lastName: "PersonB", - location: "St Louis", - title: "engineer", - workEmail: "employee@sample.com", - pdlId: 9, - startDate: [2012, 9, 29], - }, - { - id: 3, - bioText: "foo", - employeeId: 13, - name: "C Person", - firstName: "C", - lastName: "PersonC", - location: "St Louis", - title: "engineer", - workEmail: "employee@sample.com", - pdlId: 9, - startDate: [2012, 9, 29], - }, - ]; - const testState = { - memberProfiles: [ - testMemberProfiles[0], - testMemberProfiles[1], - testMemberProfiles[2], - ], - }; - - const result = { - memberProfiles: [testMemberProfiles[0]], - }; - - const searchText = "ivan"; - - expect(selectNormalizedMembers(testState, searchText)).toEqual( - result.memberProfiles - ); - }); - - it("selectNormalizedTeams should return an array of appropriate teams despite accents", () => { - const testTeams = [ - { - id: "3fa85f64-5717-4562-b3fc-2c963f66afa6", - name: "Iváns Team", - description: "string", - }, - { - id: "3fa4-5717-4562-b3fc-2c963f66afa6", - name: "stuff", - description: "", - }, - ]; - const testState = { - teams: [testTeams[0], testTeams[1]], - }; - - const searchText = "ivan"; - - const result = { - teams: [testTeams[0]], - }; - - expect(selectNormalizedTeams(testState, searchText)).toEqual(result.teams); - }); - - it("selectMostRecentCheckin should return the most recent and or open checkin", () => { - const memberId = "1"; - const checkins = [ - { - checkInDate: [2020, 9, 29, 10, 32, 29, 40000000], - completed: false, - id: "2", - pdlId: "1", - teamMemberId: "1", - }, - { - checkInDate: [2020, 9, 30, 10, 32, 29, 40000000], - completed: false, - id: "1", - pdlId: "1", - teamMemberId: "1", - }, - ]; - - const state = { checkins: [checkins[0], checkins[1]] }; - - const expectedResult = { - checkInDate: [2020, 9, 30, 10, 32, 29, 40000000], - completed: false, - id: "1", - pdlId: "1", - teamMemberId: "1", - }; - - console.log(selectMostRecentCheckin(state, memberId)); - expect(selectMostRecentCheckin(state, memberId)).toEqual(expectedResult); - }); - - it("selectSupervisors should return only members who are supervisors", () => { - const testMemberProfiles = [ - { - id: 1, - employeeId: 11, - name: "Big Boss", - firstName: "Big", - lastName: "Boss", - supervisorid: 5, - }, - { - id: 2, - employeeId: 12, - name: "Huey Emmerich", - firstName: "Huey", - lastName: "Emmerich", - supervisorid: 1, - }, - { - id: 3, - employeeId: 13, - name: "Kazuhira Miller", - firstName: "Kazuhira", - lastName: "Miller", - supervisorid: 1, - }, - { - id: 4, - employeeId: 14, - name: "Revolver Ocelot", - firstName: "Revolver", - lastName: "Ocelot", - supervisorid: 3, - }, - { - id: 5, - employeeId: 15, - name: "The Boss", - firstName: "The", - lastName: "Boss", - }, - ] - - const testState = { - memberProfiles: testMemberProfiles - }; - - const expectedResult = [testMemberProfiles[4], testMemberProfiles[0], testMemberProfiles[2]]; - - expect(selectSupervisors(testState)).toEqual(expectedResult); - }); - - it("selectSupervisorHierarchyIds should return a list of ids of everyone who is above the selected member", () => { - const testMemberProfiles = [ - { - id: 1, - employeeId: 11, - name: "Big Boss", - firstName: "Big", - lastName: "Boss", - supervisorid: 2, - }, - { - id: 2, - employeeId: 12, - name: "Huey Emmerich", - firstName: "Huey", - lastName: "Emmerich", - supervisorid: 4, - }, - { - id: 3, - employeeId: 13, - name: "Kazuhira Miller", - firstName: "Kazuhira", - lastName: "Miller", - supervisorid: 5, - }, - { - id: 4, - employeeId: 14, - name: "Revolver Ocelot", - firstName: "Revolver", - lastName: "Ocelot", - supervisorid: 6, - }, - { - id: 5, - employeeId: 15, - name: "The Boss", - firstName: "The", - lastName: "Boss", - supervisorid: 6, - }, - { - id: 6, - employeeId: 15, - name: "No Supervisor", - firstName: "No", - lastName: "Supervisor", - }, - ] - - const testState = { - memberProfiles: testMemberProfiles - }; - - const expectedResult = [testMemberProfiles[1].id, testMemberProfiles[3].id, testMemberProfiles[5].id]; - - expect(selectSupervisorHierarchyIds(testMemberProfiles[0])(testState)).toEqual(expectedResult); - }); - - it("selectSubordinates should return entire subordinate heirarchy", () => { - const testMemberProfiles = [ - { - id: 1, - employeeId: 11, - name: "Big Boss", - firstName: "Big", - lastName: "Boss", - supervisorid: 5, - }, - { - id: 2, - employeeId: 12, - name: "Huey Emmerich", - firstName: "Huey", - lastName: "Emmerich", - supervisorid: 1, - }, - { - id: 3, - employeeId: 13, - name: "Kazuhira Miller", - firstName: "Kazuhira", - lastName: "Miller", - supervisorid: 1, - }, - { - id: 4, - employeeId: 14, - name: "Revolver Ocelot", - firstName: "Revolver", - lastName: "Ocelot", - supervisorid: 3, - }, - { - id: 5, - employeeId: 15, - name: "THE Boss", - firstName: "THE", - lastName: "Boss", - }, - { - id: 6, - employeeId: 16, - name: "Entry Level", - firstName: "Entry", - lastName: "Level", - supervisorid: 4, - }, - { - id: 7, - employeeId: 15, - name: "Other Boss", - firstName: "Other", - lastName: "Boss", - supervisorid: 5, - }, - { - id: 8, - employeeId: 15, - name: "Other Person", - firstName: "Other", - lastName: "Person", - supervisorid: 7, - }, - ] - - const testState = { - memberProfiles: testMemberProfiles - }; - - const expectedResult = [testMemberProfiles[1], testMemberProfiles[2], testMemberProfiles[3], testMemberProfiles[5]]; - - expect(selectSubordinates(testState, testMemberProfiles[0].id)).toEqual(expectedResult); - }); - -it("selectIsSubordinateOfCurrentUser should return true when user is in the current users' heirarchy", () => { - const testMemberProfiles = [ - { - id: 1, - employeeId: 11, - name: "Big Boss", - firstName: "Big", - lastName: "Boss", - supervisorid: 5, - }, - { - id: 2, - employeeId: 12, - name: "Huey Emmerich", - firstName: "Huey", - lastName: "Emmerich", - supervisorid: 1, - }, - { - id: 3, - employeeId: 13, - name: "Kazuhira Miller", - firstName: "Kazuhira", - lastName: "Miller", - supervisorid: 1, - }, - { - id: 4, - employeeId: 14, - name: "Revolver Ocelot", - firstName: "Revolver", - lastName: "Ocelot", - supervisorid: 3, - }, - { - id: 5, - employeeId: 15, - name: "THE Boss", - firstName: "THE", - lastName: "Boss", - }, - { - id: 6, - employeeId: 16, - name: "Entry Level", - firstName: "Entry", - lastName: "Level", - supervisorid: 4, - }, - { - id: 7, - employeeId: 15, - name: "Other Boss", - firstName: "Other", - lastName: "Boss", - supervisorid: 5, - }, - { - id: 8, - employeeId: 15, - name: "Other Person", - firstName: "Other", - lastName: "Person", - supervisorid: 7, - }, - ] - - const testState = { - userProfile: { - memberProfile: testMemberProfiles[0] - }, - memberProfiles: testMemberProfiles - }; - - expect(selectIsSubordinateOfCurrentUser(testState, testMemberProfiles[5].id)).toBe(true); - }); - -it("selectIsSubordinateOfCurrentUser should return false when user is not in the current users' heirarchy", () => { - const testMemberProfiles = [ - { - id: 1, - employeeId: 11, - name: "Big Boss", - firstName: "Big", - lastName: "Boss", - supervisorid: 5, - }, - { - id: 2, - employeeId: 12, - name: "Huey Emmerich", - firstName: "Huey", - lastName: "Emmerich", - supervisorid: 1, - }, - { - id: 3, - employeeId: 13, - name: "Kazuhira Miller", - firstName: "Kazuhira", - lastName: "Miller", - supervisorid: 1, - }, - { - id: 4, - employeeId: 14, - name: "Revolver Ocelot", - firstName: "Revolver", - lastName: "Ocelot", - supervisorid: 3, - }, - { - id: 5, - employeeId: 15, - name: "THE Boss", - firstName: "THE", - lastName: "Boss", - }, - { - id: 6, - employeeId: 16, - name: "Entry Level", - firstName: "Entry", - lastName: "Level", - supervisorid: 4, - }, - { - id: 7, - employeeId: 15, - name: "Other Boss", - firstName: "Other", - lastName: "Boss", - supervisorid: 5, - }, - { - id: 8, - employeeId: 15, - name: "Other Person", - firstName: "Other", - lastName: "Person", - supervisorid: 7, - }, - ] - - const testState = { - userProfile: { - memberProfile: testMemberProfiles[0] - }, - memberProfiles: testMemberProfiles - }; - - expect(selectIsSubordinateOfCurrentUser(testState, testMemberProfiles[7].id)).toBe(false); - }); + it("selectMemberProfiles should return an array of all member profiles", () => { + const testMemberProfiles = [ + { + id: 1, + bioText: "foo", + employeeId: 11, + name: "A Person", + firstName: "A", + lastName: "PersonA", + location: "St Louis", + title: "engineer", + workEmail: "employee@sample.com", + pdlId: 9, + startDate: [2012, 9, 29], + }, + { + id: 2, + bioText: "foo", + employeeId: 12, + name: "B Person", + firstName: "B", + lastName: "PersonB", + location: "St Louis", + title: "engineer", + workEmail: "employee@sample.com", + pdlId: 9, + startDate: [2012, 9, 29], + }, + { + id: 3, + bioText: "foo", + employeeId: 13, + name: "C Person", + firstName: "C", + lastName: "PersonC", + location: "St Louis", + title: "engineer", + workEmail: "employee@sample.com", + pdlId: 9, + startDate: [2012, 9, 29], + }, + ]; + const testState = { + memberProfiles: testMemberProfiles + }; + + expect(selectMemberProfiles(testState)).toEqual(testState.memberProfiles); + }); + + it("selectProfileMap should return an array of all member profiles mapped by id", () => { + const testMemberProfiles = [ + { + id: 1, + bioText: "foo", + employeeId: 11, + name: "A Person", + firstName: "A", + lastName: "PersonA", + location: "St Louis", + title: "engineer", + workEmail: "employee@sample.com", + pdlId: 9, + startDate: [2012, 9, 29], + }, + { + id: 2, + bioText: "foo", + employeeId: 12, + name: "B Person", + firstName: "B", + lastName: "PersonB", + location: "St Louis", + title: "engineer", + workEmail: "employee@sample.com", + pdlId: 9, + startDate: [2012, 9, 29], + }, + { + id: 3, + bioText: "foo", + employeeId: 13, + name: "C Person", + firstName: "C", + lastName: "PersonC", + location: "St Louis", + title: "engineer", + workEmail: "employee@sample.com", + pdlId: 9, + startDate: [2012, 9, 29], + }, + ]; + + const matchingProfiles = { + [testMemberProfiles[0].id]: testMemberProfiles[0], + [testMemberProfiles[1].id]: testMemberProfiles[1], + [testMemberProfiles[2].id]: testMemberProfiles[2], + }; + + const testState = { + memberProfiles: [ + testMemberProfiles[0], + testMemberProfiles[1], + testMemberProfiles[2], + ], + }; + + expect(selectProfileMap(testState)).toEqual(matchingProfiles); + }); + + it("selectPdlRoles should return an array of all member PDL roles", () => { + const matchingRoles = [ + { + id: "12", + memberid: "2", + role: "PDL", + }, + { + id: "13", + memberid: "3", + role: "PDL", + }, + ]; + const testState = { + roles: [ + { + id: "11", + memberid: "1", + role: "MEMBER", + }, + { + id: "12", + memberid: "2", + role: "PDL", + }, + { + id: "13", + memberid: "3", + role: "PDL", + }, + ], + }; + + expect(selectPdlRoles(testState)).toEqual(matchingRoles); + }); + + it("selectMappedPdls should return an array of all member PDL profiles", () => { + const matchingMembers = [ + { + id: "2", + bioText: "foo", + employeeId: 12, + name: "B Person", + firstName: "B", + lastName: "PersonB", + location: "St Louis", + title: "engineer", + workEmail: "employee@sample.com", + pdlId: 9, + startDate: [2012, 9, 29], + }, + { + id: "3", + bioText: "foo", + employeeId: 13, + name: "C Person", + firstName: "C", + lastName: "PersonC", + location: "St Louis", + title: "engineer", + workEmail: "employee@sample.com", + pdlId: 9, + startDate: [2012, 9, 29], + }, + ]; + + const testRoles = [ + { + id: "11", + role: "MEMBER" + }, + { + id: "12", + role: "PDL" + } + ] + + const matchingRoles = [ + { + memberRoleId: { + roleId: "12", + memberId: "2", + } + }, + { + memberRoleId: { + roleId: "12", + memberId: "3", + } + }, + ]; + + const testMemberRoles = [ + { + memberRoleId: { + roleId: "11", + memberId: "1", + } + }, + matchingRoles[0], + matchingRoles[1], + ]; + + const testState = { + memberProfiles: [ + { + id: "1", + bioText: "foo", + employeeId: 11, + name: "A Person", + firstName: "A", + lastName: "PersonA", + location: "St Louis", + title: "engineer", + workEmail: "employee@sample.com", + pdlId: 9, + startDate: [2012, 9, 29], + }, + { + id: "2", + bioText: "foo", + employeeId: 12, + name: "B Person", + firstName: "B", + lastName: "PersonB", + location: "St Louis", + title: "engineer", + workEmail: "employee@sample.com", + pdlId: 9, + startDate: [2012, 9, 29], + }, + { + id: "3", + bioText: "foo", + employeeId: 13, + name: "C Person", + firstName: "C", + lastName: "PersonC", + location: "St Louis", + title: "engineer", + workEmail: "employee@sample.com", + pdlId: 9, + startDate: [2012, 9, 29], + }, + ], + roles: testRoles, + userRoles: testMemberRoles, + }; + expect(selectMappedPdls(testState)).toEqual(matchingMembers); + }); + + it("selectOrderedPdls should return an array of all member PDL profiles ordered by last name", () => { + const matchingMembers = [ + { + id: "3", + bioText: "foo", + employeeId: 13, + name: "B PersonB", + firstName: "B", + lastName: "PersonB", + location: "St Louis", + title: "engineer", + workEmail: "employee@sample.com", + pdlId: 9, + startDate: [2012, 9, 29], + }, + { + id: "2", + bioText: "foo", + employeeId: 12, + name: "C PersonC", + firstName: "C", + lastName: "PersonC", + location: "St Louis", + title: "engineer", + workEmail: "employee@sample.com", + pdlId: 9, + startDate: [2012, 9, 29], + }, + ]; + + const testRoles = [ + { + id: "11", + role: "MEMBER" + }, + { + id: "12", + role: "PDL" + } + ] + + const matchingRoles = [ + { + memberRoleId: { + roleId: "12", + memberId: "2", + } + }, + { + memberRoleId: { + roleId: "12", + memberId: "3", + } + }, + ]; + + const testMemberRoles = [ + { + memberRoleId: { + roleId: "11", + memberId: "1", + } + }, + matchingRoles[0], + matchingRoles[1], + ]; + + const testState = { + memberProfiles: [ + { + id: "1", + bioText: "foo", + employeeId: 11, + name: "A PersonA", + firstName: "A", + lastName: "PersonA", + location: "St Louis", + title: "engineer", + workEmail: "employee@sample.com", + pdlId: 9, + startDate: [2012, 9, 29], + }, + { + id: "2", + bioText: "foo", + employeeId: 12, + name: "C PersonC", + firstName: "C", + lastName: "PersonC", + location: "St Louis", + title: "engineer", + workEmail: "employee@sample.com", + pdlId: 9, + startDate: [2012, 9, 29], + }, + { + id: "3", + bioText: "foo", + employeeId: 13, + name: "B PersonB", + firstName: "B", + lastName: "PersonB", + location: "St Louis", + title: "engineer", + workEmail: "employee@sample.com", + pdlId: 9, + startDate: [2012, 9, 29], + }, + ], + roles: testRoles, + userRoles: testMemberRoles, + }; + expect(selectOrderedPdls(testState)).toEqual(matchingMembers); + }); + + it("selectCheckinPdls should return an array of all member PDL profiles that have an associated checkin", () => { + const matchingMembers = [ + { + id: 12, + bioText: "foo", + name: "B PersonB", + firstName: "B", + lastName: "PersonB", + location: "St Louis", + title: "engineer", + workEmail: "employee@sample.com", + startDate: [2012, 9, 29], + }, + { + id: 13, + bioText: "foo", + name: "C PersonC", + firstName: "C", + lastName: "PersonC", + location: "St Louis", + title: "engineer", + workEmail: "employee@sample.com", + startDate: [2012, 9, 29], + }, + ]; + + const testState = { + checkins: [ + {pdlId: 13, completed: false, checkInDate: [2020, 9, 13]}, + {pdlId: 12, completed: false, checkInDate: [2021, 9, 12]}, + {pdlId: 12, completed: true, checkInDate: [2020, 9, 11]}, + ], + memberProfiles: [ + { + id: 11, + bioText: "foo", + name: "A PersonA", + firstName: "A", + lastName: "PersonA", + location: "St Louis", + title: "engineer", + workEmail: "employee@sample.com", + startDate: [2012, 9, 29], + }, + { + id: 12, + bioText: "foo", + name: "B PersonB", + firstName: "B", + lastName: "PersonB", + location: "St Louis", + title: "engineer", + workEmail: "employee@sample.com", + startDate: [2012, 9, 29], + }, + { + id: 13, + bioText: "foo", + name: "C PersonC", + firstName: "C", + lastName: "PersonC", + location: "St Louis", + title: "engineer", + workEmail: "employee@sample.com", + startDate: [2012, 9, 29], + }, + ], + }; + expect(selectCheckinPDLS(testState, true, true)).toEqual(matchingMembers); + }); + + it("selectTeamMembersWithCheckinPDL should return an array of all members associated with a pdl that have a checkin", () => { + const matchingMembers = [ + { + id: 12, + bioText: "foo", + name: "B PersonB", + firstName: "B", + lastName: "PersonB", + location: "St Louis", + pdlId: 1, + title: "engineer", + workEmail: "employee@sample.com", + startDate: [2012, 9, 29], + }, + { + id: 13, + bioText: "foo", + name: "C PersonC", + firstName: "C", + lastName: "PersonC", + location: "St Louis", + pdlId: 1, + title: "engineer", + workEmail: "employee@sample.com", + startDate: [2012, 9, 29], + }, + ]; + + const testState = { + checkins: [ + { + teamMemberId: 12, + pdlId: 1, + completed: false, + checkInDate: [2020, 9, 10], + }, + { + teamMemberId: 13, + pdlId: 1, + completed: false, + checkInDate: [2020, 9, 10], + }, + { + teamMemberId: 11, + pdlId: 2, + completed: false, + checkInDate: [2020, 9, 10], + }, + ], + memberProfiles: [ + { + id: 11, + bioText: "foo", + name: "A PersonA", + firstName: "A", + lastName: "PersonA", + location: "St Louis", + title: "engineer", + workEmail: "employee@sample.com", + pdlId: 2, + startDate: [2012, 9, 29], + }, + { + id: 12, + bioText: "foo", + name: "B PersonB", + firstName: "B", + lastName: "PersonB", + location: "St Louis", + pdlId: 1, + title: "engineer", + workEmail: "employee@sample.com", + startDate: [2012, 9, 29], + }, + { + id: 13, + bioText: "foo", + name: "C PersonC", + firstName: "C", + lastName: "PersonC", + location: "St Louis", + pdlId: 1, + title: "engineer", + workEmail: "employee@sample.com", + startDate: [2012, 9, 29], + }, + ], + }; + expect(selectTeamMembersWithCheckinPDL(testState, 1)).toEqual( + matchingMembers + ); + }); + + it("selectCheckinsForTeamMemberAndPDL should return an array of all members associated with a pdl that have a checkin", () => { + const matchingCheckins = [ + { + id: 1, + teamMemberId: 12, + pdlId: 1, + completed: false, + checkInDate: [2020, 9, 10], + }, + { + id: 2, + teamMemberId: 12, + pdlId: 1, + completed: true, + checkInDate: [2020, 10, 10], + }, + ]; + + const testState = { + checkins: [ + { + id: 1, + teamMemberId: 12, + pdlId: 1, + completed: false, + checkInDate: [2020, 9, 10], + }, + { + id: 2, + teamMemberId: 12, + pdlId: 1, + completed: true, + checkInDate: [2020, 10, 10], + }, + { + id: 3, + teamMemberId: 11, + pdlId: 2, + completed: false, + checkInDate: [2020, 9, 10], + }, + { + id: 4, + teamMemberId: 19, + pdlId: 4, + completed: false, + checkInDate: [2020, 9, 10], + }, + ], + memberProfiles: [ + { + id: 11, + bioText: "foo", + name: "A PersonA", + firstName: "A", + lastName: "PersonA", + location: "St Louis", + title: "engineer", + workEmail: "employee@sample.com", + pdlId: 2, + startDate: [2012, 9, 29], + }, + { + id: 12, + bioText: "foo", + name: "B PersonB", + firstName: "B", + lastName: "PersonB", + location: "St Louis", + pdlId: 1, + title: "engineer", + workEmail: "employee@sample.com", + startDate: [2012, 9, 29], + }, + { + id: 13, + bioText: "foo", + name: "C PersonC", + firstName: "C", + lastName: "PersonC", + location: "St Louis", + pdlId: 1, + title: "engineer", + workEmail: "employee@sample.com", + startDate: [2012, 9, 29], + }, + ], + }; + expect(selectCheckinsForTeamMemberAndPDL(testState, 12, 1)).toEqual( + matchingCheckins + ); + }); + + it("selectCurrentMembers should return an array of non-terminated profiles", () => { + const testMemberProfiles = [ + { + id: 1, + bioText: "foo", + employeeId: 11, + name: "Iván López Martín", + firstName: "Iván", + lastName: "Martín", + location: "St Louis", + title: "engineer", + workEmail: "employee@sample.com", + pdlId: 9, + startDate: [2012, 9, 29], + }, + { + id: 2, + bioText: "foo", + employeeId: 12, + name: "B Person", + firstName: "B", + lastName: "PersonB", + location: "St Louis", + title: "engineer", + workEmail: "employee@sample.com", + pdlId: 9, + startDate: [2012, 9, 29], + }, + { + id: 3, + bioText: "foo", + employeeId: 13, + name: "C Person", + firstName: "C", + lastName: "PersonC", + location: "St Louis", + title: "engineer", + workEmail: "employee@sample.com", + pdlId: 9, + startDate: [2012, 9, 29], + terminationDate: [2020, 12, 31], + }, + ]; + const testState = { + memberProfiles: [ + testMemberProfiles[0], + testMemberProfiles[1], + testMemberProfiles[2], + ], + }; + + const result = { + memberProfiles: [testMemberProfiles[0], testMemberProfiles[1]], + }; + + expect(selectCurrentMembers(testState)).toEqual(result.memberProfiles); + }); + + it("selectNormalizedMembers should return an array of appropriate member profiles despite accents", () => { + const testMemberProfiles = [ + { + id: 1, + bioText: "foo", + employeeId: 11, + name: "Iván López Martín", + firstName: "Iván", + lastName: "Martín", + location: "St Louis", + title: "engineer", + workEmail: "employee@sample.com", + pdlId: 9, + startDate: [2012, 9, 29], + }, + { + id: 2, + bioText: "foo", + employeeId: 12, + name: "B Person", + firstName: "B", + lastName: "PersonB", + location: "St Louis", + title: "engineer", + workEmail: "employee@sample.com", + pdlId: 9, + startDate: [2012, 9, 29], + }, + { + id: 3, + bioText: "foo", + employeeId: 13, + name: "C Person", + firstName: "C", + lastName: "PersonC", + location: "St Louis", + title: "engineer", + workEmail: "employee@sample.com", + pdlId: 9, + startDate: [2012, 9, 29], + }, + ]; + const testState = { + memberProfiles: [ + testMemberProfiles[0], + testMemberProfiles[1], + testMemberProfiles[2], + ], + }; + + const result = { + memberProfiles: [testMemberProfiles[0]], + }; + + const searchText = "ivan"; + + expect(selectNormalizedMembers(testState, searchText)).toEqual( + result.memberProfiles + ); + }); + + it("selectNormalizedTeams should return an array of appropriate teams despite accents", () => { + const testTeams = [ + { + id: "3fa85f64-5717-4562-b3fc-2c963f66afa6", + name: "Iváns Team", + description: "string", + }, + { + id: "3fa4-5717-4562-b3fc-2c963f66afa6", + name: "stuff", + description: "", + }, + ]; + const testState = { + teams: [testTeams[0], testTeams[1]], + }; + + const searchText = "ivan"; + + const result = { + teams: [testTeams[0]], + }; + + expect(selectNormalizedTeams(testState, searchText)).toEqual(result.teams); + }); + + it("selectMostRecentCheckin should return the most recent and or open checkin", () => { + const memberId = "1"; + const checkins = [ + { + checkInDate: [2020, 9, 29, 10, 32, 29, 40000000], + completed: false, + id: "2", + pdlId: "1", + teamMemberId: "1", + }, + { + checkInDate: [2020, 9, 30, 10, 32, 29, 40000000], + completed: false, + id: "1", + pdlId: "1", + teamMemberId: "1", + }, + ]; + + const state = {checkins: [checkins[0], checkins[1]]}; + + const expectedResult = { + checkInDate: [2020, 9, 30, 10, 32, 29, 40000000], + completed: false, + id: "1", + pdlId: "1", + teamMemberId: "1", + }; + + console.log(selectMostRecentCheckin(state, memberId)); + expect(selectMostRecentCheckin(state, memberId)).toEqual(expectedResult); + }); + + it("selectSupervisors should return only members who are supervisors", () => { + const testMemberProfiles = [ + { + id: 1, + employeeId: 11, + name: "Big Boss", + firstName: "Big", + lastName: "Boss", + supervisorid: 5, + }, + { + id: 2, + employeeId: 12, + name: "Huey Emmerich", + firstName: "Huey", + lastName: "Emmerich", + supervisorid: 1, + }, + { + id: 3, + employeeId: 13, + name: "Kazuhira Miller", + firstName: "Kazuhira", + lastName: "Miller", + supervisorid: 1, + }, + { + id: 4, + employeeId: 14, + name: "Revolver Ocelot", + firstName: "Revolver", + lastName: "Ocelot", + supervisorid: 3, + }, + { + id: 5, + employeeId: 15, + name: "The Boss", + firstName: "The", + lastName: "Boss", + }, + ] + + const testState = { + memberProfiles: testMemberProfiles + }; + + const expectedResult = [testMemberProfiles[4], testMemberProfiles[0], testMemberProfiles[2]]; + + expect(selectSupervisors(testState)).toEqual(expectedResult); + }); + + it("selectSupervisorHierarchyIds should return a list of ids of everyone who is above the selected member", () => { + const testMemberProfiles = [ + { + id: 1, + employeeId: 11, + name: "Big Boss", + firstName: "Big", + lastName: "Boss", + supervisorid: 2, + }, + { + id: 2, + employeeId: 12, + name: "Huey Emmerich", + firstName: "Huey", + lastName: "Emmerich", + supervisorid: 4, + }, + { + id: 3, + employeeId: 13, + name: "Kazuhira Miller", + firstName: "Kazuhira", + lastName: "Miller", + supervisorid: 5, + }, + { + id: 4, + employeeId: 14, + name: "Revolver Ocelot", + firstName: "Revolver", + lastName: "Ocelot", + supervisorid: 6, + }, + { + id: 5, + employeeId: 15, + name: "The Boss", + firstName: "The", + lastName: "Boss", + supervisorid: 6, + }, + { + id: 6, + employeeId: 15, + name: "No Supervisor", + firstName: "No", + lastName: "Supervisor", + }, + ] + + const testState = { + memberProfiles: testMemberProfiles + }; + + const expectedResult = [testMemberProfiles[1].id, testMemberProfiles[3].id, testMemberProfiles[5].id]; + + expect(selectSupervisorHierarchyIds(testMemberProfiles[0])(testState)).toEqual(expectedResult); + }); + + it("selectSubordinates should return entire subordinate heirarchy", () => { + const testMemberProfiles = [ + { + id: 1, + employeeId: 11, + name: "Big Boss", + firstName: "Big", + lastName: "Boss", + supervisorid: 5, + }, + { + id: 2, + employeeId: 12, + name: "Huey Emmerich", + firstName: "Huey", + lastName: "Emmerich", + supervisorid: 1, + }, + { + id: 3, + employeeId: 13, + name: "Kazuhira Miller", + firstName: "Kazuhira", + lastName: "Miller", + supervisorid: 1, + }, + { + id: 4, + employeeId: 14, + name: "Revolver Ocelot", + firstName: "Revolver", + lastName: "Ocelot", + supervisorid: 3, + }, + { + id: 5, + employeeId: 15, + name: "THE Boss", + firstName: "THE", + lastName: "Boss", + }, + { + id: 6, + employeeId: 16, + name: "Entry Level", + firstName: "Entry", + lastName: "Level", + supervisorid: 4, + }, + { + id: 7, + employeeId: 15, + name: "Other Boss", + firstName: "Other", + lastName: "Boss", + supervisorid: 5, + }, + { + id: 8, + employeeId: 15, + name: "Other Person", + firstName: "Other", + lastName: "Person", + supervisorid: 7, + }, + ] + + const testState = { + memberProfiles: testMemberProfiles + }; + + const expectedResult = [testMemberProfiles[1], testMemberProfiles[2], testMemberProfiles[3], testMemberProfiles[5]]; + + expect(selectSubordinates(testState, testMemberProfiles[0].id)).toEqual(expectedResult); + }); + + it("selectIsSubordinateOfCurrentUser should return true when user is in the current users' heirarchy", () => { + const testMemberProfiles = [ + { + id: 1, + employeeId: 11, + name: "Big Boss", + firstName: "Big", + lastName: "Boss", + supervisorid: 5, + }, + { + id: 2, + employeeId: 12, + name: "Huey Emmerich", + firstName: "Huey", + lastName: "Emmerich", + supervisorid: 1, + }, + { + id: 3, + employeeId: 13, + name: "Kazuhira Miller", + firstName: "Kazuhira", + lastName: "Miller", + supervisorid: 1, + }, + { + id: 4, + employeeId: 14, + name: "Revolver Ocelot", + firstName: "Revolver", + lastName: "Ocelot", + supervisorid: 3, + }, + { + id: 5, + employeeId: 15, + name: "THE Boss", + firstName: "THE", + lastName: "Boss", + }, + { + id: 6, + employeeId: 16, + name: "Entry Level", + firstName: "Entry", + lastName: "Level", + supervisorid: 4, + }, + { + id: 7, + employeeId: 15, + name: "Other Boss", + firstName: "Other", + lastName: "Boss", + supervisorid: 5, + }, + { + id: 8, + employeeId: 15, + name: "Other Person", + firstName: "Other", + lastName: "Person", + supervisorid: 7, + }, + ] + + const testState = { + userProfile: { + memberProfile: testMemberProfiles[0] + }, + memberProfiles: testMemberProfiles + }; + + expect(selectIsSubordinateOfCurrentUser(testState, testMemberProfiles[5].id)).toBe(true); + }); + + it("selectIsSubordinateOfCurrentUser should return false when user is not in the current users' heirarchy", () => { + const testMemberProfiles = [ + { + id: 1, + employeeId: 11, + name: "Big Boss", + firstName: "Big", + lastName: "Boss", + supervisorid: 5, + }, + { + id: 2, + employeeId: 12, + name: "Huey Emmerich", + firstName: "Huey", + lastName: "Emmerich", + supervisorid: 1, + }, + { + id: 3, + employeeId: 13, + name: "Kazuhira Miller", + firstName: "Kazuhira", + lastName: "Miller", + supervisorid: 1, + }, + { + id: 4, + employeeId: 14, + name: "Revolver Ocelot", + firstName: "Revolver", + lastName: "Ocelot", + supervisorid: 3, + }, + { + id: 5, + employeeId: 15, + name: "THE Boss", + firstName: "THE", + lastName: "Boss", + }, + { + id: 6, + employeeId: 16, + name: "Entry Level", + firstName: "Entry", + lastName: "Level", + supervisorid: 4, + }, + { + id: 7, + employeeId: 15, + name: "Other Boss", + firstName: "Other", + lastName: "Boss", + supervisorid: 5, + }, + { + id: 8, + employeeId: 15, + name: "Other Person", + firstName: "Other", + lastName: "Person", + supervisorid: 7, + }, + ] + + const testState = { + userProfile: { + memberProfile: testMemberProfiles[0] + }, + memberProfiles: testMemberProfiles + }; + + expect(selectIsSubordinateOfCurrentUser(testState, testMemberProfiles[7].id)).toBe(false); + }); + + + it("selectHasReportPermission should return false when user does not have a 'REPORT' permission", () => { + + + const testState1 = { + userProfile: { + firstName: "Big", + lastName: "Boss", + role: "ADMIN", + permissions: [{permission: "CAN_VIEW_SKILLS_REPORT"}, {permission: "CAN_VIEW_PERMISSIONS"}], + } + }; + const testState2 = { + userProfile: { + firstName: "Huey", + lastName: "Emmerich", + role: "MEMBER", + permissions: [{permission: "CAN_VIEW_FEEDBACK_REQUEST"}, {permission: "CAN_VIEW_FEEDBACK_ANSWER"}], + } + }; + + + expect(selectHasReportPermission(testState2)).toBe(false); + }); + }); From 08d6f64592357ad657a105df3c7bbb3a8397393c Mon Sep 17 00:00:00 2001 From: Michael Kimberlin Date: Fri, 8 Mar 2024 10:31:54 -0600 Subject: [PATCH 10/23] Killed off a leftover console.log --- web-ui/src/components/menu/Menu.jsx | 3 --- 1 file changed, 3 deletions(-) diff --git a/web-ui/src/components/menu/Menu.jsx b/web-ui/src/components/menu/Menu.jsx index d5ceccee1a..77b6f148d6 100644 --- a/web-ui/src/components/menu/Menu.jsx +++ b/web-ui/src/components/menu/Menu.jsx @@ -137,9 +137,6 @@ function Menu() { const csrf = selectCsrfToken(state); const { id, workEmail } = userProfile && userProfile.memberProfile ? userProfile.memberProfile : {}; - - console.log("userProfile", userProfile); - const isAdmin = selectIsAdmin(state); const hasReportPermission = selectHasReportPermission(state); const isPDL = From 9ba7dc16109ff07d02b5c6e33bc9ce575fb69643 Mon Sep 17 00:00:00 2001 From: Michael Kimberlin Date: Fri, 8 Mar 2024 14:18:34 -0600 Subject: [PATCH 11/23] Create jekyll-gh-pages.yml --- .github/workflows/jekyll-gh-pages.yml | 51 +++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 .github/workflows/jekyll-gh-pages.yml diff --git a/.github/workflows/jekyll-gh-pages.yml b/.github/workflows/jekyll-gh-pages.yml new file mode 100644 index 0000000000..29d85bacd8 --- /dev/null +++ b/.github/workflows/jekyll-gh-pages.yml @@ -0,0 +1,51 @@ +# Sample workflow for building and deploying a Jekyll site to GitHub Pages +name: Deploy Jekyll with GitHub Pages dependencies preinstalled + +on: + # Runs on pushes targeting the default branch + push: + branches: ["develop"] + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages +permissions: + contents: read + pages: write + id-token: write + +# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. +# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. +concurrency: + group: "pages" + cancel-in-progress: false + +jobs: + # Build job + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Setup Pages + uses: actions/configure-pages@v4 + - name: Build with Jekyll + uses: actions/jekyll-build-pages@v1 + with: + source: ./docs + destination: ./_site + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + + # Deployment job + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + needs: build + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 From f0c934104f7b7c9563b469c417546b414f5a3c6f Mon Sep 17 00:00:00 2001 From: Michael Kimberlin Date: Fri, 8 Mar 2024 14:27:02 -0600 Subject: [PATCH 12/23] Test GitHub page --- docs/_config.yml | 7 +++ docs/index.md | 123 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 130 insertions(+) create mode 100644 docs/_config.yml create mode 100644 docs/index.md diff --git a/docs/_config.yml b/docs/_config.yml new file mode 100644 index 0000000000..be5db6cdf0 --- /dev/null +++ b/docs/_config.yml @@ -0,0 +1,7 @@ +title: Check-Ins +logo: /web-ui/public/img/ocicube-color.png +description: Check-Ins is an open-source team engagement platform for organizations looking to create meaningful, long-term relationships with team members. +show_downloads: true +google_analytics: +theme: jekyll-theme-minimal + diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000000..8611051996 --- /dev/null +++ b/docs/index.md @@ -0,0 +1,123 @@ +--- +layout: default +--- + +Text can be **bold**, _italic_, or ~~strikethrough~~. + +[Link to another page](./another-page.html). + +There should be whitespace between paragraphs. + +There should be whitespace between paragraphs. We recommend including a README, or a file with information about your project. + +# Header 1 + +This is a normal paragraph following a header. GitHub is a code hosting platform for version control and collaboration. It lets you and others work together on projects from anywhere. + +## Header 2 + +> This is a blockquote following a header. +> +> When something is important enough, you do it even if the odds are not in your favor. + +### Header 3 + +```js +// Javascript code with syntax highlighting. +var fun = function lang(l) { + dateformat.i18n = require('./lang/' + l) + return true; +} +``` + +```ruby +# Ruby code with syntax highlighting +GitHubPages::Dependencies.gems.each do |gem, version| + s.add_dependency(gem, "= #{version}") +end +``` + +#### Header 4 + +* This is an unordered list following a header. +* This is an unordered list following a header. +* This is an unordered list following a header. + +##### Header 5 + +1. This is an ordered list following a header. +2. This is an ordered list following a header. +3. This is an ordered list following a header. + +###### Header 6 + +| head1 | head two | three | +|:-------------|:------------------|:------| +| ok | good swedish fish | nice | +| out of stock | good and plenty | nice | +| ok | good `oreos` | hmm | +| ok | good `zoute` drop | yumm | + +### There's a horizontal rule below this. + +* * * + +### Here is an unordered list: + +* Item foo +* Item bar +* Item baz +* Item zip + +### And an ordered list: + +1. Item one +1. Item two +1. Item three +1. Item four + +### And a nested list: + +- level 1 item + - level 2 item + - level 2 item + - level 3 item + - level 3 item +- level 1 item + - level 2 item + - level 2 item + - level 2 item +- level 1 item + - level 2 item + - level 2 item +- level 1 item + +### Small image + +![Octocat](https://github.githubassets.com/images/icons/emoji/octocat.png) + +### Large image + +![Branching](https://guides.github.com/activities/hello-world/branching.png) + + +### Definition lists can be used with HTML syntax. + +
+
Name
+
Godzilla
+
Born
+
1952
+
Birthplace
+
Japan
+
Color
+
Green
+
+ +``` +Long, single-line code blocks should not wrap. They should horizontally scroll if they are too long. This line should be long enough to demonstrate this. +``` + +``` +The final element. +``` From 98412281b1a0118821f6ffc57d6dab69c3b55207 Mon Sep 17 00:00:00 2001 From: Michael Kimberlin Date: Fri, 8 Mar 2024 15:54:46 -0600 Subject: [PATCH 13/23] Attempt logo in gh pages --- docs/_config.yml | 2 +- docs/assets/img/logo.png | Bin 0 -> 64872 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 docs/assets/img/logo.png diff --git a/docs/_config.yml b/docs/_config.yml index be5db6cdf0..c7380363b0 100644 --- a/docs/_config.yml +++ b/docs/_config.yml @@ -1,5 +1,5 @@ title: Check-Ins -logo: /web-ui/public/img/ocicube-color.png +logo: /assets/img/logo.png description: Check-Ins is an open-source team engagement platform for organizations looking to create meaningful, long-term relationships with team members. show_downloads: true google_analytics: diff --git a/docs/assets/img/logo.png b/docs/assets/img/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..fab51fa449aeb4baa483a252e2916ec58059f6dc GIT binary patch literal 64872 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 Y@4)#Mmaz9Fe7#wjUA|az!Ta9-0EbbqJ^%m! literal 0 HcmV?d00001 From 54efc370cbbb68505000706b01cd61ab2fe7c322 Mon Sep 17 00:00:00 2001 From: Michael Kimberlin Date: Mon, 11 Mar 2024 09:57:28 -0500 Subject: [PATCH 14/23] Allow for local preview of GH site --- .gitignore | 3 +- docs/Gemfile | 3 + docs/Gemfile.lock | 264 ++++++++++++++++++++++++++++++++++++++++++++++ docs/index.md | 2 + 4 files changed, 271 insertions(+), 1 deletion(-) create mode 100644 docs/Gemfile create mode 100644 docs/Gemfile.lock diff --git a/.gitignore b/.gitignore index 390cfcc419..8da3d509bb 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ bin/ build/ target/ out/ +_site/ .vscode/ .idea *.iml @@ -16,4 +17,4 @@ out/ node_modules .run **/run.bat -*.sh \ No newline at end of file +*.sh diff --git a/docs/Gemfile b/docs/Gemfile new file mode 100644 index 0000000000..0c8671cdee --- /dev/null +++ b/docs/Gemfile @@ -0,0 +1,3 @@ +source "https://rubygems.org" + +gem "github-pages", group: :jekyll_plugins diff --git a/docs/Gemfile.lock b/docs/Gemfile.lock new file mode 100644 index 0000000000..3db37abbe3 --- /dev/null +++ b/docs/Gemfile.lock @@ -0,0 +1,264 @@ +GEM + remote: https://rubygems.org/ + specs: + activesupport (6.1.7.7) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) + addressable (2.8.6) + public_suffix (>= 2.0.2, < 6.0) + base64 (0.2.0) + coffee-script (2.4.1) + coffee-script-source + execjs + coffee-script-source (1.12.2) + colorator (1.1.0) + commonmarker (0.23.10) + concurrent-ruby (1.2.3) + dnsruby (1.70.0) + simpleidn (~> 0.2.1) + em-websocket (0.5.3) + eventmachine (>= 0.12.9) + http_parser.rb (~> 0) + ethon (0.16.0) + ffi (>= 1.15.0) + eventmachine (1.2.7) + execjs (2.9.1) + faraday (2.8.1) + base64 + faraday-net_http (>= 2.0, < 3.1) + ruby2_keywords (>= 0.0.4) + faraday-net_http (3.0.2) + ffi (1.16.3) + forwardable-extended (2.6.0) + gemoji (4.1.0) + github-pages (231) + github-pages-health-check (= 1.18.2) + jekyll (= 3.9.5) + jekyll-avatar (= 0.8.0) + jekyll-coffeescript (= 1.2.2) + jekyll-commonmark-ghpages (= 0.4.0) + jekyll-default-layout (= 0.1.5) + jekyll-feed (= 0.17.0) + jekyll-gist (= 1.5.0) + jekyll-github-metadata (= 2.16.1) + jekyll-include-cache (= 0.2.1) + jekyll-mentions (= 1.6.0) + jekyll-optional-front-matter (= 0.3.2) + jekyll-paginate (= 1.1.0) + jekyll-readme-index (= 0.3.0) + jekyll-redirect-from (= 0.16.0) + jekyll-relative-links (= 0.6.1) + jekyll-remote-theme (= 0.4.3) + jekyll-sass-converter (= 1.5.2) + jekyll-seo-tag (= 2.8.0) + jekyll-sitemap (= 1.4.0) + jekyll-swiss (= 1.0.0) + jekyll-theme-architect (= 0.2.0) + jekyll-theme-cayman (= 0.2.0) + jekyll-theme-dinky (= 0.2.0) + jekyll-theme-hacker (= 0.2.0) + jekyll-theme-leap-day (= 0.2.0) + jekyll-theme-merlot (= 0.2.0) + jekyll-theme-midnight (= 0.2.0) + jekyll-theme-minimal (= 0.2.0) + jekyll-theme-modernist (= 0.2.0) + jekyll-theme-primer (= 0.6.0) + jekyll-theme-slate (= 0.2.0) + jekyll-theme-tactile (= 0.2.0) + jekyll-theme-time-machine (= 0.2.0) + jekyll-titles-from-headings (= 0.5.3) + jemoji (= 0.13.0) + kramdown (= 2.4.0) + kramdown-parser-gfm (= 1.1.0) + liquid (= 4.0.4) + mercenary (~> 0.3) + minima (= 2.5.1) + nokogiri (>= 1.13.6, < 2.0) + rouge (= 3.30.0) + terminal-table (~> 1.4) + github-pages-health-check (1.18.2) + addressable (~> 2.3) + dnsruby (~> 1.60) + octokit (>= 4, < 8) + public_suffix (>= 3.0, < 6.0) + typhoeus (~> 1.3) + html-pipeline (2.14.3) + activesupport (>= 2) + nokogiri (>= 1.4) + http_parser.rb (0.8.0) + i18n (1.14.4) + concurrent-ruby (~> 1.0) + jekyll (3.9.5) + addressable (~> 2.4) + colorator (~> 1.0) + em-websocket (~> 0.5) + i18n (>= 0.7, < 2) + jekyll-sass-converter (~> 1.0) + jekyll-watch (~> 2.0) + kramdown (>= 1.17, < 3) + liquid (~> 4.0) + mercenary (~> 0.3.3) + pathutil (~> 0.9) + rouge (>= 1.7, < 4) + safe_yaml (~> 1.0) + jekyll-avatar (0.8.0) + jekyll (>= 3.0, < 5.0) + jekyll-coffeescript (1.2.2) + coffee-script (~> 2.2) + coffee-script-source (~> 1.12) + jekyll-commonmark (1.4.0) + commonmarker (~> 0.22) + jekyll-commonmark-ghpages (0.4.0) + commonmarker (~> 0.23.7) + jekyll (~> 3.9.0) + jekyll-commonmark (~> 1.4.0) + rouge (>= 2.0, < 5.0) + jekyll-default-layout (0.1.5) + jekyll (>= 3.0, < 5.0) + jekyll-feed (0.17.0) + jekyll (>= 3.7, < 5.0) + jekyll-gist (1.5.0) + octokit (~> 4.2) + jekyll-github-metadata (2.16.1) + jekyll (>= 3.4, < 5.0) + octokit (>= 4, < 7, != 4.4.0) + jekyll-include-cache (0.2.1) + jekyll (>= 3.7, < 5.0) + jekyll-mentions (1.6.0) + html-pipeline (~> 2.3) + jekyll (>= 3.7, < 5.0) + jekyll-optional-front-matter (0.3.2) + jekyll (>= 3.0, < 5.0) + jekyll-paginate (1.1.0) + jekyll-readme-index (0.3.0) + jekyll (>= 3.0, < 5.0) + jekyll-redirect-from (0.16.0) + jekyll (>= 3.3, < 5.0) + jekyll-relative-links (0.6.1) + jekyll (>= 3.3, < 5.0) + jekyll-remote-theme (0.4.3) + addressable (~> 2.0) + jekyll (>= 3.5, < 5.0) + jekyll-sass-converter (>= 1.0, <= 3.0.0, != 2.0.0) + rubyzip (>= 1.3.0, < 3.0) + jekyll-sass-converter (1.5.2) + sass (~> 3.4) + jekyll-seo-tag (2.8.0) + jekyll (>= 3.8, < 5.0) + jekyll-sitemap (1.4.0) + jekyll (>= 3.7, < 5.0) + jekyll-swiss (1.0.0) + jekyll-theme-architect (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-cayman (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-dinky (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-hacker (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-leap-day (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-merlot (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-midnight (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-minimal (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-modernist (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-primer (0.6.0) + jekyll (> 3.5, < 5.0) + jekyll-github-metadata (~> 2.9) + jekyll-seo-tag (~> 2.0) + jekyll-theme-slate (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-tactile (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-time-machine (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-titles-from-headings (0.5.3) + jekyll (>= 3.3, < 5.0) + jekyll-watch (2.2.1) + listen (~> 3.0) + jemoji (0.13.0) + gemoji (>= 3, < 5) + html-pipeline (~> 2.2) + jekyll (>= 3.0, < 5.0) + kramdown (2.4.0) + rexml + kramdown-parser-gfm (1.1.0) + kramdown (~> 2.0) + liquid (4.0.4) + listen (3.9.0) + rb-fsevent (~> 0.10, >= 0.10.3) + rb-inotify (~> 0.9, >= 0.9.10) + mercenary (0.3.6) + mini_portile2 (2.8.5) + minima (2.5.1) + jekyll (>= 3.5, < 5.0) + jekyll-feed (~> 0.9) + jekyll-seo-tag (~> 2.1) + minitest (5.22.2) + nokogiri (1.13.10) + mini_portile2 (~> 2.8.0) + racc (~> 1.4) + octokit (4.25.1) + faraday (>= 1, < 3) + sawyer (~> 0.9) + pathutil (0.16.2) + forwardable-extended (~> 2.6) + public_suffix (5.0.4) + racc (1.7.3) + rb-fsevent (0.11.2) + rb-inotify (0.10.1) + ffi (~> 1.0) + rexml (3.2.6) + rouge (3.30.0) + ruby2_keywords (0.0.5) + rubyzip (2.3.2) + safe_yaml (1.0.5) + sass (3.7.4) + sass-listen (~> 4.0.0) + sass-listen (4.0.0) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + sawyer (0.9.2) + addressable (>= 2.3.5) + faraday (>= 0.17.3, < 3) + simpleidn (0.2.1) + unf (~> 0.1.4) + terminal-table (1.8.0) + unicode-display_width (~> 1.1, >= 1.1.1) + typhoeus (1.4.1) + ethon (>= 0.9.0) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + unf (0.1.4) + unf_ext + unf_ext (0.0.9.1) + unicode-display_width (1.8.0) + zeitwerk (2.6.13) + +PLATFORMS + ruby + +DEPENDENCIES + github-pages + +BUNDLED WITH + 1.17.2 diff --git a/docs/index.md b/docs/index.md index 8611051996..32a0e3789d 100644 --- a/docs/index.md +++ b/docs/index.md @@ -8,6 +8,8 @@ Text can be **bold**, _italic_, or ~~strikethrough~~. There should be whitespace between paragraphs. +Whitespace is great. + There should be whitespace between paragraphs. We recommend including a README, or a file with information about your project. # Header 1 From 9c450671724fa8cb3ead4fdd98660dbd1daf8ec3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Mar 2024 15:00:23 +0000 Subject: [PATCH 15/23] Bump nokogiri from 1.13.10 to 1.16.2 in /docs Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.13.10 to 1.16.2. - [Release notes](https://github.com/sparklemotion/nokogiri/releases) - [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md) - [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.13.10...v1.16.2) --- updated-dependencies: - dependency-name: nokogiri dependency-type: indirect ... Signed-off-by: dependabot[bot] --- docs/Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Gemfile.lock b/docs/Gemfile.lock index 3db37abbe3..0d7a987a49 100644 --- a/docs/Gemfile.lock +++ b/docs/Gemfile.lock @@ -214,8 +214,8 @@ GEM jekyll-feed (~> 0.9) jekyll-seo-tag (~> 2.1) minitest (5.22.2) - nokogiri (1.13.10) - mini_portile2 (~> 2.8.0) + nokogiri (1.16.2) + mini_portile2 (~> 2.8.2) racc (~> 1.4) octokit (4.25.1) faraday (>= 1, < 3) From 76407635f1b76ee4dc4d7daae2f46165146aea3d Mon Sep 17 00:00:00 2001 From: Michael Kimberlin Date: Wed, 13 Mar 2024 23:39:55 -0500 Subject: [PATCH 16/23] Switch to Just The Docs template --- docs/Gemfile | 4 + docs/Gemfile.lock | 64 ++++++++++---- docs/_config.yml | 23 ++++- docs/_sass/custom/setup.scss | 1 + docs/assets/img/logo.png | Bin 64872 -> 67709 bytes docs/getting-started/index.md | 8 ++ docs/getting-started/setup/index.md | 9 ++ docs/getting-started/setup/macos.md | 9 ++ docs/index.md | 132 ++++------------------------ 9 files changed, 115 insertions(+), 135 deletions(-) create mode 100644 docs/_sass/custom/setup.scss create mode 100644 docs/getting-started/index.md create mode 100644 docs/getting-started/setup/index.md create mode 100644 docs/getting-started/setup/macos.md diff --git a/docs/Gemfile b/docs/Gemfile index 0c8671cdee..cf29fd9c7b 100644 --- a/docs/Gemfile +++ b/docs/Gemfile @@ -1,3 +1,7 @@ source "https://rubygems.org" gem "github-pages", group: :jekyll_plugins + +gem "csv" +gem "webrick" +gem "just-the-docs" diff --git a/docs/Gemfile.lock b/docs/Gemfile.lock index 0d7a987a49..dd1886eba2 100644 --- a/docs/Gemfile.lock +++ b/docs/Gemfile.lock @@ -1,15 +1,20 @@ GEM remote: https://rubygems.org/ specs: - activesupport (6.1.7.7) + activesupport (7.1.3.2) + base64 + bigdecimal concurrent-ruby (~> 1.0, >= 1.0.2) + connection_pool (>= 2.2.5) + drb i18n (>= 1.6, < 2) minitest (>= 5.1) + mutex_m tzinfo (~> 2.0) - zeitwerk (~> 2.3) addressable (2.8.6) public_suffix (>= 2.0.2, < 6.0) base64 (0.2.0) + bigdecimal (3.1.6) coffee-script (2.4.1) coffee-script-source execjs @@ -17,8 +22,11 @@ GEM colorator (1.1.0) commonmarker (0.23.10) concurrent-ruby (1.2.3) - dnsruby (1.70.0) + connection_pool (2.4.1) + csv (3.2.8) + dnsruby (1.71.0) simpleidn (~> 0.2.1) + drb (2.2.1) em-websocket (0.5.3) eventmachine (>= 0.12.9) http_parser.rb (~> 0) @@ -26,11 +34,10 @@ GEM ffi (>= 1.15.0) eventmachine (1.2.7) execjs (2.9.1) - faraday (2.8.1) - base64 - faraday-net_http (>= 2.0, < 3.1) - ruby2_keywords (>= 0.0.4) - faraday-net_http (3.0.2) + faraday (2.9.0) + faraday-net_http (>= 2.0, < 3.2) + faraday-net_http (3.1.0) + net-http ffi (1.16.3) forwardable-extended (2.6.0) gemoji (4.1.0) @@ -199,6 +206,11 @@ GEM gemoji (>= 3, < 5) html-pipeline (~> 2.2) jekyll (>= 3.0, < 5.0) + just-the-docs (0.8.1) + jekyll (>= 3.8.5) + jekyll-include-cache + jekyll-seo-tag (>= 2.0) + rake (>= 12.3.1) kramdown (2.4.0) rexml kramdown-parser-gfm (1.1.0) @@ -208,14 +220,25 @@ GEM rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) mercenary (0.3.6) - mini_portile2 (2.8.5) minima (2.5.1) jekyll (>= 3.5, < 5.0) jekyll-feed (~> 0.9) jekyll-seo-tag (~> 2.1) - minitest (5.22.2) - nokogiri (1.16.2) - mini_portile2 (~> 2.8.2) + minitest (5.22.3) + mutex_m (0.2.0) + net-http (0.4.1) + uri + nokogiri (1.16.2-aarch64-linux) + racc (~> 1.4) + nokogiri (1.16.2-arm-linux) + racc (~> 1.4) + nokogiri (1.16.2-arm64-darwin) + racc (~> 1.4) + nokogiri (1.16.2-x86-linux) + racc (~> 1.4) + nokogiri (1.16.2-x86_64-darwin) + racc (~> 1.4) + nokogiri (1.16.2-x86_64-linux) racc (~> 1.4) octokit (4.25.1) faraday (>= 1, < 3) @@ -224,12 +247,12 @@ GEM forwardable-extended (~> 2.6) public_suffix (5.0.4) racc (1.7.3) + rake (13.1.0) rb-fsevent (0.11.2) rb-inotify (0.10.1) ffi (~> 1.0) rexml (3.2.6) rouge (3.30.0) - ruby2_keywords (0.0.5) rubyzip (2.3.2) safe_yaml (1.0.5) sass (3.7.4) @@ -252,13 +275,22 @@ GEM unf_ext unf_ext (0.0.9.1) unicode-display_width (1.8.0) - zeitwerk (2.6.13) + uri (0.13.0) + webrick (1.8.1) PLATFORMS - ruby + aarch64-linux + arm-linux + arm64-darwin + x86-linux + x86_64-darwin + x86_64-linux DEPENDENCIES + csv github-pages + just-the-docs + webrick BUNDLED WITH - 1.17.2 + 2.5.3 diff --git a/docs/_config.yml b/docs/_config.yml index c7380363b0..3666110d35 100644 --- a/docs/_config.yml +++ b/docs/_config.yml @@ -1,7 +1,22 @@ title: Check-Ins logo: /assets/img/logo.png -description: Check-Ins is an open-source team engagement platform for organizations looking to create meaningful, long-term relationships with team members. -show_downloads: true -google_analytics: -theme: jekyll-theme-minimal +description: Check-Ins is an open-source team engagement platform designed to empower you and your colleagues to collaborate, grow, and thrive. +theme: just-the-docs +baseurl: /check-ins +url: https://objectcomputing.github.io +repository: objectcomputing/check-ins # for github-metadata +permalink: pretty + +exclude: + - Makefile + - Gemfile + - Gemfile.lock + +plugins: + - jemoji + - jekyll-avatar + - jekyll-mentions + - jekyll-seo-tag + - jekyll-github-metadata + - jekyll-include-cache diff --git a/docs/_sass/custom/setup.scss b/docs/_sass/custom/setup.scss new file mode 100644 index 0000000000..365652650d --- /dev/null +++ b/docs/_sass/custom/setup.scss @@ -0,0 +1 @@ +$header-height: 5rem; diff --git a/docs/assets/img/logo.png b/docs/assets/img/logo.png index fab51fa449aeb4baa483a252e2916ec58059f6dc..b626d83905bb37eb0a704bdff19add81fa13307e 100644 GIT binary patch literal 67709 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 Y@4)#Mmaz9Fe7#wjUA|az!Ta9-0EbbqJ^%m! diff --git a/docs/getting-started/index.md b/docs/getting-started/index.md new file mode 100644 index 0000000000..91c76617ad --- /dev/null +++ b/docs/getting-started/index.md @@ -0,0 +1,8 @@ +--- +title: Getting Started +has_children: true +--- + +# Getting Started + +Test. diff --git a/docs/getting-started/setup/index.md b/docs/getting-started/setup/index.md new file mode 100644 index 0000000000..5b6bc360f9 --- /dev/null +++ b/docs/getting-started/setup/index.md @@ -0,0 +1,9 @@ +--- +title: Setup +parent: Getting Started +has_children: true +--- + +# Setting up your environment + +Test diff --git a/docs/getting-started/setup/macos.md b/docs/getting-started/setup/macos.md new file mode 100644 index 0000000000..53eb0f0179 --- /dev/null +++ b/docs/getting-started/setup/macos.md @@ -0,0 +1,9 @@ +--- +title: MacOS +parent: Setup +grand_parent: Getting Started +--- + +# What you'll need + +Test. diff --git a/docs/index.md b/docs/index.md index 32a0e3789d..0975d34744 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,125 +1,27 @@ --- -layout: default +title: Home +layout: home +nav_order: 1 --- -Text can be **bold**, _italic_, or ~~strikethrough~~. +# Strengthen Your Team -[Link to another page](./another-page.html). +* **Track skills and accomplishments:** Monitor your own development and identify areas for growth. +* **Organize into teams and collaborate:** Connect with colleagues, share knowledge, and work effectively together. +* **Plan and record professional development activities:** Set goals, track progress, and celebrate achievements. -There should be whitespace between paragraphs. +## Streamlined Processes -Whitespace is great. +* **Simplified check-ins:** Whether you're a team member or a leader, Check-Ins makes quarterly check-ins efficient and insightful. +* **Organization directory:** Easily find and connect with colleagues across the organization. +* **Birthday and anniversary announcements:** Celebrate milestones and build team spirit. +* **Peer feedback:** Foster a culture of continuous learning through constructive feedback exchange. +* **Performance review workflows:** Manage performance reviews with clear and efficient processes. -There should be whitespace between paragraphs. We recommend including a README, or a file with information about your project. +## Open Collaboration -# Header 1 +This project is built with an open-source foundation, encouraging contributions from the community. The codebase utilizes Micronaut for the backend, React for the frontend, and is built for cost-effective deployment on Google Cloud Platform (GCP). -This is a normal paragraph following a header. GitHub is a code hosting platform for version control and collaboration. It lets you and others work together on projects from anywhere. +## Get Involved -## Header 2 - -> This is a blockquote following a header. -> -> When something is important enough, you do it even if the odds are not in your favor. - -### Header 3 - -```js -// Javascript code with syntax highlighting. -var fun = function lang(l) { - dateformat.i18n = require('./lang/' + l) - return true; -} -``` - -```ruby -# Ruby code with syntax highlighting -GitHubPages::Dependencies.gems.each do |gem, version| - s.add_dependency(gem, "= #{version}") -end -``` - -#### Header 4 - -* This is an unordered list following a header. -* This is an unordered list following a header. -* This is an unordered list following a header. - -##### Header 5 - -1. This is an ordered list following a header. -2. This is an ordered list following a header. -3. This is an ordered list following a header. - -###### Header 6 - -| head1 | head two | three | -|:-------------|:------------------|:------| -| ok | good swedish fish | nice | -| out of stock | good and plenty | nice | -| ok | good `oreos` | hmm | -| ok | good `zoute` drop | yumm | - -### There's a horizontal rule below this. - -* * * - -### Here is an unordered list: - -* Item foo -* Item bar -* Item baz -* Item zip - -### And an ordered list: - -1. Item one -1. Item two -1. Item three -1. Item four - -### And a nested list: - -- level 1 item - - level 2 item - - level 2 item - - level 3 item - - level 3 item -- level 1 item - - level 2 item - - level 2 item - - level 2 item -- level 1 item - - level 2 item - - level 2 item -- level 1 item - -### Small image - -![Octocat](https://github.githubassets.com/images/icons/emoji/octocat.png) - -### Large image - -![Branching](https://guides.github.com/activities/hello-world/branching.png) - - -### Definition lists can be used with HTML syntax. - -
-
Name
-
Godzilla
-
Born
-
1952
-
Birthplace
-
Japan
-
Color
-
Green
-
- -``` -Long, single-line code blocks should not wrap. They should horizontally scroll if they are too long. This line should be long enough to demonstrate this. -``` - -``` -The final element. -``` +Check-Ins thrives on your participation! We welcome your feedback, feature requests, and bug reports. Let's build a better platform together. From 54fc70e8244c0b55d0ce88bcd851f751754f4100 Mon Sep 17 00:00:00 2001 From: Michael Kimberlin Date: Wed, 13 Mar 2024 23:48:58 -0500 Subject: [PATCH 17/23] Adjust base url --- docs/_config.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/_config.yml b/docs/_config.yml index 3666110d35..81a7de60a8 100644 --- a/docs/_config.yml +++ b/docs/_config.yml @@ -2,8 +2,7 @@ title: Check-Ins logo: /assets/img/logo.png description: Check-Ins is an open-source team engagement platform designed to empower you and your colleagues to collaborate, grow, and thrive. theme: just-the-docs -baseurl: /check-ins -url: https://objectcomputing.github.io +url: https://objectcomputing.github.io/check-ins repository: objectcomputing/check-ins # for github-metadata permalink: pretty From c1e0167cdf1a9d85d1834b065a43453022714d69 Mon Sep 17 00:00:00 2001 From: Michael Kimberlin Date: Thu, 14 Mar 2024 00:03:26 -0500 Subject: [PATCH 18/23] Workflow action switch --- .../{jekyll-gh-pages.yml => jekyll.yml} | 31 ++++++++++++++----- 1 file changed, 24 insertions(+), 7 deletions(-) rename .github/workflows/{jekyll-gh-pages.yml => jekyll.yml} (53%) diff --git a/.github/workflows/jekyll-gh-pages.yml b/.github/workflows/jekyll.yml similarity index 53% rename from .github/workflows/jekyll-gh-pages.yml rename to .github/workflows/jekyll.yml index 29d85bacd8..6cd1dae815 100644 --- a/.github/workflows/jekyll-gh-pages.yml +++ b/.github/workflows/jekyll.yml @@ -1,10 +1,15 @@ +# This workflow uses actions that are not certified by GitHub. +# They are provided by a third-party and are governed by +# separate terms of service, privacy policy, and support +# documentation. + # Sample workflow for building and deploying a Jekyll site to GitHub Pages -name: Deploy Jekyll with GitHub Pages dependencies preinstalled +name: Deploy Jekyll site to Pages on: # Runs on pushes targeting the default branch push: - branches: ["develop"] + branches: [$default-branch] # Allows you to run this workflow manually from the Actions tab workflow_dispatch: @@ -28,15 +33,27 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4 + - name: Setup Ruby + uses: ruby/setup-ruby@8575951200e472d5f2d95c625da0c7bec8217c42 # v1.161.0 + with: + ruby-version: '3.1' # Not needed with a .ruby-version file + bundler-cache: true # runs 'bundle install' and caches installed gems automatically + cache-version: 0 # Increment this number if you need to re-download cached gems - name: Setup Pages + id: pages uses: actions/configure-pages@v4 - name: Build with Jekyll - uses: actions/jekyll-build-pages@v1 - with: - source: ./docs - destination: ./_site + # Outputs to the './_site' directory by default + run: |- + cd docs + bundle exec jekyll build --baseurl "${{ steps.pages.outputs.base_path }}" + env: + JEKYLL_ENV: production - name: Upload artifact + # Automatically uploads an artifact from the './_site' directory by default uses: actions/upload-pages-artifact@v3 + with: + path: docs/_site # Deployment job deploy: @@ -48,4 +65,4 @@ jobs: steps: - name: Deploy to GitHub Pages id: deployment - uses: actions/deploy-pages@v4 + uses: actions/deploy-pages@v4 \ No newline at end of file From 3e01dfd7fd6bb84264dc2ec105b7585d0ab90191 Mon Sep 17 00:00:00 2001 From: Michael Kimberlin Date: Thu, 14 Mar 2024 00:08:58 -0500 Subject: [PATCH 19/23] set working directory for ruby --- .github/workflows/jekyll.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/jekyll.yml b/.github/workflows/jekyll.yml index 6cd1dae815..6cbabc0d63 100644 --- a/.github/workflows/jekyll.yml +++ b/.github/workflows/jekyll.yml @@ -36,6 +36,7 @@ jobs: - name: Setup Ruby uses: ruby/setup-ruby@8575951200e472d5f2d95c625da0c7bec8217c42 # v1.161.0 with: + working-directory: docs ruby-version: '3.1' # Not needed with a .ruby-version file bundler-cache: true # runs 'bundle install' and caches installed gems automatically cache-version: 0 # Increment this number if you need to re-download cached gems From 898e932899ec5dd50263512ee07df5597b99d415 Mon Sep 17 00:00:00 2001 From: Michael Kimberlin Date: Thu, 14 Mar 2024 00:09:40 -0500 Subject: [PATCH 20/23] trigger on develop --- .github/workflows/jekyll.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/jekyll.yml b/.github/workflows/jekyll.yml index 6cbabc0d63..dbc13afd38 100644 --- a/.github/workflows/jekyll.yml +++ b/.github/workflows/jekyll.yml @@ -9,7 +9,7 @@ name: Deploy Jekyll site to Pages on: # Runs on pushes targeting the default branch push: - branches: [$default-branch] + branches: [develop] # Allows you to run this workflow manually from the Actions tab workflow_dispatch: From 05ecc7818d5daa7928895c7312ff8edf0e32c288 Mon Sep 17 00:00:00 2001 From: Michael Kimberlin Date: Thu, 14 Mar 2024 00:15:04 -0500 Subject: [PATCH 21/23] ruby 3.3 --- .github/workflows/jekyll.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/jekyll.yml b/.github/workflows/jekyll.yml index dbc13afd38..e4fe302ff8 100644 --- a/.github/workflows/jekyll.yml +++ b/.github/workflows/jekyll.yml @@ -37,7 +37,7 @@ jobs: uses: ruby/setup-ruby@8575951200e472d5f2d95c625da0c7bec8217c42 # v1.161.0 with: working-directory: docs - ruby-version: '3.1' # Not needed with a .ruby-version file + ruby-version: '3.3' # Not needed with a .ruby-version file bundler-cache: true # runs 'bundle install' and caches installed gems automatically cache-version: 0 # Increment this number if you need to re-download cached gems - name: Setup Pages From ac6be6c1904d01b6ab6e5da2a297a4bc334a0855 Mon Sep 17 00:00:00 2001 From: Michael Kimberlin Date: Thu, 14 Mar 2024 00:18:22 -0500 Subject: [PATCH 22/23] adjust excludes --- docs/_config.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/_config.yml b/docs/_config.yml index 81a7de60a8..3234103df4 100644 --- a/docs/_config.yml +++ b/docs/_config.yml @@ -11,6 +11,8 @@ exclude: - Makefile - Gemfile - Gemfile.lock + - tmp/ + - vendor/ plugins: - jemoji From 4fc051f390de16ee8587a9378915ffb65694f2e2 Mon Sep 17 00:00:00 2001 From: Michael Kimberlin Date: Fri, 15 Mar 2024 12:21:28 -0500 Subject: [PATCH 23/23] remove check for admin on email notification --- .../notifications/email/MailJetNotificationController.java | 6 ------ 1 file changed, 6 deletions(-) diff --git a/server/src/main/java/com/objectcomputing/checkins/notifications/email/MailJetNotificationController.java b/server/src/main/java/com/objectcomputing/checkins/notifications/email/MailJetNotificationController.java index 972c67abb9..fa1afc0fd8 100644 --- a/server/src/main/java/com/objectcomputing/checkins/notifications/email/MailJetNotificationController.java +++ b/server/src/main/java/com/objectcomputing/checkins/notifications/email/MailJetNotificationController.java @@ -39,18 +39,12 @@ public MailJetNotificationController(CurrentUserServices currentUserServices, @Post() public Mono> sendEmailReceivesStatus(String subject, String content, String... recipients) { - if (!currentUserServices.isAdmin()) { - throw new PermissionException("You are not authorized to do this operation"); - } - MemberProfile currentUser = currentUserServices.getCurrentUser(); String fromName = currentUser.getFirstName() + " " + currentUser.getLastName(); return Mono.fromCallable(() -> emailSender.sendEmailReceivesStatus(fromName, currentUser.getWorkEmail(), subject, content, recipients)) .publishOn(Schedulers.fromExecutor(eventLoopGroup)) .map(success -> (HttpResponse) HttpResponse.ok()) .subscribeOn(Schedulers.fromExecutor(ioExecutorService)); - - } }