From 2fb50f005bc031c90a1c178dd25a9dc1617ec2fb Mon Sep 17 00:00:00 2001 From: jeffgreiner-eaton Date: Tue, 14 May 2024 11:34:29 -0400 Subject: [PATCH 01/90] Update yarn install to use working directory --- .github/workflows/blui-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/blui-ci.yml b/.github/workflows/blui-ci.yml index 38d01a49..20919d2e 100644 --- a/.github/workflows/blui-ci.yml +++ b/.github/workflows/blui-ci.yml @@ -114,7 +114,7 @@ jobs: with: node-version: ${{ matrix.node-version }} registry-url: 'https://registry.npmjs.org' - cache-dependency-path: login-workflow - run: yarn --immutable + working-directory: login-workflow - run: npm run publish:package -- -b ${{env.BRANCH}} working-directory: login-workflow \ No newline at end of file From 9c39a16b4b4faaf9014773b48bc21d308b0e0c8b Mon Sep 17 00:00:00 2001 From: jeffgreiner-eaton Date: Mon, 20 May 2024 10:36:23 -0400 Subject: [PATCH 02/90] run codecov no config --- .github/workflows/blui-ci.yml | 1 + login-workflow/codecov.yml | 13 ------------- 2 files changed, 1 insertion(+), 13 deletions(-) delete mode 100644 login-workflow/codecov.yml diff --git a/.github/workflows/blui-ci.yml b/.github/workflows/blui-ci.yml index 20919d2e..b54d9894 100644 --- a/.github/workflows/blui-ci.yml +++ b/.github/workflows/blui-ci.yml @@ -61,6 +61,7 @@ jobs: - name: Upload to Codecov uses: codecov/codecov-action@v3 with: + token: ${{ secrets.CODECOV_TOKEN }} directory: ./login-workflow/coverage/ files: clover.xml flags: unittests diff --git a/login-workflow/codecov.yml b/login-workflow/codecov.yml deleted file mode 100644 index aa4f1a58..00000000 --- a/login-workflow/codecov.yml +++ /dev/null @@ -1,13 +0,0 @@ -# - "::login-workflow/" # move root e.g., "path/" => "after/path/" leaving this here for now, it might need turned on later -coverage: - status: - project: - default: - target: 70% - threshold: 5% - informational: true - patch: - default: - target: 70% - threshold: 5% - informational: true \ No newline at end of file From f1cc502788f7fed8910a13e4999aec4550b0e33d Mon Sep 17 00:00:00 2001 From: jeffgreiner-eaton Date: Mon, 20 May 2024 13:40:47 -0400 Subject: [PATCH 03/90] comment with no proj or patch --- login-workflow/codecov.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 login-workflow/codecov.yml diff --git a/login-workflow/codecov.yml b/login-workflow/codecov.yml new file mode 100644 index 00000000..d268e901 --- /dev/null +++ b/login-workflow/codecov.yml @@ -0,0 +1,7 @@ +coverage: + status: + project: + enabled: false + patch: + default: + enabled: false \ No newline at end of file From 872b3a2e0f3469d162d03f4686644c918d2c1613 Mon Sep 17 00:00:00 2001 From: jeffgreiner-eaton Date: Mon, 20 May 2024 13:52:39 -0400 Subject: [PATCH 04/90] set status off --- login-workflow/codecov.yml | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/login-workflow/codecov.yml b/login-workflow/codecov.yml index d268e901..5dd21786 100644 --- a/login-workflow/codecov.yml +++ b/login-workflow/codecov.yml @@ -1,7 +1,4 @@ coverage: status: - project: - enabled: false - patch: - default: - enabled: false \ No newline at end of file + project: off + patch: off \ No newline at end of file From 813ecc830604a3d47b969af0b00a66640ba1ad75 Mon Sep 17 00:00:00 2001 From: jeffgreiner-eaton Date: Mon, 20 May 2024 14:14:41 -0400 Subject: [PATCH 05/90] move codecov file --- .github/codecov.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 .github/codecov.yml diff --git a/.github/codecov.yml b/.github/codecov.yml new file mode 100644 index 00000000..5dd21786 --- /dev/null +++ b/.github/codecov.yml @@ -0,0 +1,4 @@ +coverage: + status: + project: off + patch: off \ No newline at end of file From fac85dee09402c42a91db0999d2cd4450dd56346 Mon Sep 17 00:00:00 2001 From: jeffgreiner-eaton Date: Tue, 21 May 2024 07:36:02 -0400 Subject: [PATCH 06/90] update project & patch targets --- .github/codecov.yml | 12 ++++++++++-- login-workflow/codecov.yml | 4 ---- 2 files changed, 10 insertions(+), 6 deletions(-) delete mode 100644 login-workflow/codecov.yml diff --git a/.github/codecov.yml b/.github/codecov.yml index 5dd21786..95b5b2b0 100644 --- a/.github/codecov.yml +++ b/.github/codecov.yml @@ -1,4 +1,12 @@ coverage: status: - project: off - patch: off \ No newline at end of file + project: + default: + target: 80% + threshold: 5% + informational: true + patch: + default: + target: 80% + threshold: 5% + informational: true \ No newline at end of file diff --git a/login-workflow/codecov.yml b/login-workflow/codecov.yml deleted file mode 100644 index 5dd21786..00000000 --- a/login-workflow/codecov.yml +++ /dev/null @@ -1,4 +0,0 @@ -coverage: - status: - project: off - patch: off \ No newline at end of file From c05ad18e18627d80a72e828bdfbdd11f8ca5b4cc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 1 Jun 2024 11:20:20 +0000 Subject: [PATCH 07/90] Bump @mui/icons-material from 5.14.9 to 5.15.19 in /login-workflow Bumps [@mui/icons-material](https://github.com/mui/material-ui/tree/HEAD/packages/mui-icons-material) from 5.14.9 to 5.15.19. - [Release notes](https://github.com/mui/material-ui/releases) - [Changelog](https://github.com/mui/material-ui/blob/v5.15.19/CHANGELOG.md) - [Commits](https://github.com/mui/material-ui/commits/v5.15.19/packages/mui-icons-material) --- updated-dependencies: - dependency-name: "@mui/icons-material" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- login-workflow/yarn.lock | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/login-workflow/yarn.lock b/login-workflow/yarn.lock index a9ee4709..65d70937 100644 --- a/login-workflow/yarn.lock +++ b/login-workflow/yarn.lock @@ -1046,10 +1046,10 @@ resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== -"@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.19.0", "@babel/runtime@^7.22.15", "@babel/runtime@^7.22.5", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.15.tgz#38f46494ccf6cf020bd4eed7124b425e83e523b8" - integrity sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA== +"@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.19.0", "@babel/runtime@^7.22.15", "@babel/runtime@^7.22.5", "@babel/runtime@^7.23.9", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.6.tgz#5b76eb89ad45e2e4a0a8db54c456251469a3358e" + integrity sha512-Ja18XcETdEl5mzzACGd+DKgaGJzPTCow7EglgwTmHdwokzDFYh/MHua6lU6DV/hjF2IaOJ4oX2nqnjG7RElKOw== dependencies: regenerator-runtime "^0.14.0" @@ -1739,11 +1739,11 @@ integrity sha512-kPHu/NhZq1k+vSZR5wq3AyUfD4bnfWAeuKpps0+8PS7ZHQ2Lyv1cXJh+PlFdCIOa0PK98rk3JPwMzS8BMhdHwQ== "@mui/icons-material@^5.3.1": - version "5.14.9" - resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-5.14.9.tgz#433cf03c214ce38e1b7a6f684769491fd99c5ef5" - integrity sha512-xTRQbDsogsJo7tY5Og8R9zbuG2q+KIPVIM6JQoKxtJlz9DPOw1u0T2fGrvwD+XAOVifQf6epNMcGCDLfJAz4Nw== + version "5.15.19" + resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-5.15.19.tgz#0602da80d814af662812659eab891e435ec0d5c0" + integrity sha512-RsEiRxA5azN9b8gI7JRqekkgvxQUlitoBOtZglflb8cUDyP12/cP4gRwhb44Ea1/zwwGGjAj66ZJpGHhKfibNA== dependencies: - "@babel/runtime" "^7.22.15" + "@babel/runtime" "^7.23.9" "@mui/material@^5.4.1": version "5.14.10" From f90b916b3f168446fb02e3d5dd3c31df6e97b3d4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 1 Jun 2024 11:54:45 +0000 Subject: [PATCH 08/90] Bump @testing-library/jest-dom in /login-workflow/example Bumps [@testing-library/jest-dom](https://github.com/testing-library/jest-dom) from 5.16.5 to 6.4.5. - [Release notes](https://github.com/testing-library/jest-dom/releases) - [Changelog](https://github.com/testing-library/jest-dom/blob/main/CHANGELOG.md) - [Commits](https://github.com/testing-library/jest-dom/compare/v5.16.5...v6.4.5) --- updated-dependencies: - dependency-name: "@testing-library/jest-dom" dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- login-workflow/example/package.json | 2 +- login-workflow/example/yarn.lock | 41 +++++++++++++---------------- 2 files changed, 20 insertions(+), 23 deletions(-) diff --git a/login-workflow/example/package.json b/login-workflow/example/package.json index 307860f4..10e1b044 100644 --- a/login-workflow/example/package.json +++ b/login-workflow/example/package.json @@ -57,7 +57,7 @@ "@brightlayer-ui/eslint-config": "^3.0.0", "@brightlayer-ui/prettier-config": "^1.0.3", "@emotion/css": "^11.11.2", - "@testing-library/jest-dom": "^5.0.0", + "@testing-library/jest-dom": "^6.4.5", "@testing-library/react": "^13.3.0", "@testing-library/user-event": "^14.4.3", "@types/jest": "^29.2.4", diff --git a/login-workflow/example/yarn.lock b/login-workflow/example/yarn.lock index 71d9b430..fb93e7ea 100644 --- a/login-workflow/example/yarn.lock +++ b/login-workflow/example/yarn.lock @@ -7,10 +7,10 @@ resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== -"@adobe/css-tools@^4.0.1": - version "4.3.2" - resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.3.2.tgz#a6abc715fb6884851fca9dad37fc34739a04fd11" - integrity sha512-DA5a1C0gD/pLOvhv33YMrbf2FK3oUzwNl9oOJqE4XVjuEtt6XIakRcsd7eLiOSPkp1kTRQGICTA8cKra/vFbjw== +"@adobe/css-tools@^4.3.2": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.3.3.tgz#90749bde8b89cd41764224f5aac29cd4138f75ff" + integrity sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ== "@alloc/quick-lru@^5.2.0": version "5.2.0" @@ -2338,19 +2338,18 @@ lz-string "^1.4.4" pretty-format "^27.0.2" -"@testing-library/jest-dom@^5.0.0": - version "5.16.5" - resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.16.5.tgz#3912846af19a29b2dbf32a6ae9c31ef52580074e" - integrity sha512-N5ixQ2qKpi5OLYfwQmUb/5mSV9LneAcaUfp32pn4yCnpb8r/Yz0pXFPck21dIicKmi+ta5WRAknkZCfA8refMA== +"@testing-library/jest-dom@^6.4.5": + version "6.4.5" + resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-6.4.5.tgz#badb40296477149136dabef32b572ddd3b56adf1" + integrity sha512-AguB9yvTXmCnySBP1lWjfNNUwpbElsaQ567lt2VdGqAdHtpieLgjmcVyv1q7PMIvLbgpDdkWV5Ydv3FEejyp2A== dependencies: - "@adobe/css-tools" "^4.0.1" + "@adobe/css-tools" "^4.3.2" "@babel/runtime" "^7.9.2" - "@types/testing-library__jest-dom" "^5.9.1" aria-query "^5.0.0" chalk "^3.0.0" css.escape "^1.5.1" - dom-accessibility-api "^0.5.6" - lodash "^4.17.15" + dom-accessibility-api "^0.6.3" + lodash "^4.17.21" redent "^3.0.0" "@testing-library/react@^13.3.0": @@ -2542,7 +2541,7 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/jest@*", "@types/jest@^29.2.4": +"@types/jest@^29.2.4": version "29.5.1" resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.1.tgz#83c818aa9a87da27d6da85d3378e5a34d2f31a47" integrity sha512-tEuVcHrpaixS36w7hpsfLBLpjtMRJUE09/MHXn923LOVojDwyC14cWcfc0rDs0VEfUyYmt/+iX1kxxp+gZMcaQ== @@ -2716,13 +2715,6 @@ resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== -"@types/testing-library__jest-dom@^5.9.1": - version "5.14.6" - resolved "https://registry.yarnpkg.com/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.6.tgz#4887f6e1af11215428ab02777873bcede98a53b0" - integrity sha512-FkHXCb+ikSoUP4Y4rOslzTdX5sqYwMxfefKh1GmZ8ce1GOkEHntSp6b5cGadmNfp5e4BMEWOMx+WSKd5/MqlDA== - dependencies: - "@types/jest" "*" - "@types/trusted-types@^2.0.2": version "2.0.3" resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.3.tgz#a136f83b0758698df454e328759dbd3d44555311" @@ -4493,11 +4485,16 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" -dom-accessibility-api@^0.5.6, dom-accessibility-api@^0.5.9: +dom-accessibility-api@^0.5.9: version "0.5.16" resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz#5a7429e6066eb3664d911e33fb0e45de8eb08453" integrity sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg== +dom-accessibility-api@^0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz#993e925cc1d73f2c662e7d75dd5a5445259a8fd8" + integrity sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w== + dom-converter@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" @@ -7358,7 +7355,7 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== -lodash@4.17.21, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.7.0: +lodash@4.17.21, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.7.0: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== From c7690cc25e88734ad13d33ba963d0fe3154ce57a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 11 Jun 2024 01:53:44 +0000 Subject: [PATCH 09/90] Bump @grpc/grpc-js from 1.8.21 to 1.8.22 in /login-workflow Bumps [@grpc/grpc-js](https://github.com/grpc/grpc-node) from 1.8.21 to 1.8.22. - [Release notes](https://github.com/grpc/grpc-node/releases) - [Commits](https://github.com/grpc/grpc-node/compare/@grpc/grpc-js@1.8.21...@grpc/grpc-js@1.8.22) --- updated-dependencies: - dependency-name: "@grpc/grpc-js" dependency-type: indirect ... Signed-off-by: dependabot[bot] --- login-workflow/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/login-workflow/yarn.lock b/login-workflow/yarn.lock index 65d70937..e6536b37 100644 --- a/login-workflow/yarn.lock +++ b/login-workflow/yarn.lock @@ -1380,9 +1380,9 @@ p-defer "^3.0.0" "@grpc/grpc-js@~1.8.0": - version "1.8.21" - resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.8.21.tgz#d282b122c71227859bf6c5866f4c40f4a2696513" - integrity sha512-KeyQeZpxeEBSqFVTi3q2K7PiPXmgBfECc4updA1ejCLjYmoAlvvM3ZMp5ztTDUCUQmoY3CpDxvchjO1+rFkoHg== + version "1.8.22" + resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.8.22.tgz#847930c9af46e14df05b57fc12325db140ceff1d" + integrity sha512-oAjDdN7fzbUi+4hZjKG96MR6KTEubAeMpQEb+77qy+3r0Ua5xTFuie6JOLr4ZZgl5g+W5/uRTS2M1V8mVAFPuA== dependencies: "@grpc/proto-loader" "^0.7.0" "@types/node" ">=12.12.47" From 2e3c262033b65d54901f1a5f3f1610d739e25def Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 11 Jun 2024 12:19:34 +0000 Subject: [PATCH 10/90] Bump braces from 3.0.2 to 3.0.3 in /login-workflow Bumps [braces](https://github.com/micromatch/braces) from 3.0.2 to 3.0.3. - [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md) - [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3) --- updated-dependencies: - dependency-name: braces dependency-type: indirect ... Signed-off-by: dependabot[bot] --- login-workflow/yarn.lock | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/login-workflow/yarn.lock b/login-workflow/yarn.lock index e6536b37..22761970 100644 --- a/login-workflow/yarn.lock +++ b/login-workflow/yarn.lock @@ -3070,11 +3070,11 @@ brace-expansion@^2.0.1: balanced-match "^1.0.0" braces@^3.0.2, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== dependencies: - fill-range "^7.0.1" + fill-range "^7.1.1" browserslist@^4.21.9: version "4.21.10" @@ -4554,10 +4554,10 @@ filesize@^6.1.0: resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.4.0.tgz#914f50471dd66fdca3cefe628bd0cde4ef769bcd" integrity sha512-mjFIpOHC4jbfcTfoh4rkWpI31mF7viw9ikj/JyLoKzqlwG/YsefKfvYlYhdYdg/9mtK2z1AzgN/0LvVQ3zdlSQ== -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== dependencies: to-regex-range "^5.0.1" From 2148b193c36bf176a235b653311874da37a9c828 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 18 Jun 2024 06:24:50 +0000 Subject: [PATCH 11/90] Bump ws from 7.5.9 to 7.5.10 in /login-workflow/example Bumps [ws](https://github.com/websockets/ws) from 7.5.9 to 7.5.10. - [Release notes](https://github.com/websockets/ws/releases) - [Commits](https://github.com/websockets/ws/compare/7.5.9...7.5.10) --- updated-dependencies: - dependency-name: ws dependency-type: indirect ... Signed-off-by: dependabot[bot] --- login-workflow/example/yarn.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/login-workflow/example/yarn.lock b/login-workflow/example/yarn.lock index fb93e7ea..6f932f88 100644 --- a/login-workflow/example/yarn.lock +++ b/login-workflow/example/yarn.lock @@ -10667,14 +10667,14 @@ write-file-atomic@^4.0.2: signal-exit "^3.0.7" ws@^7.4.6: - version "7.5.9" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" - integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== + version "7.5.10" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" + integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== ws@^8.13.0: - version "8.13.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" - integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== + version "8.17.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.1.tgz#9293da530bb548febc95371d90f9c878727d919b" + integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ== xml-name-validator@^3.0.0: version "3.0.0" From 1a6650bdde0f489723f0f36643453c39e2d08138 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 18 Jun 2024 09:24:08 +0000 Subject: [PATCH 12/90] Bump braces from 3.0.2 to 3.0.3 in /login-workflow/example-vite Bumps [braces](https://github.com/micromatch/braces) from 3.0.2 to 3.0.3. - [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md) - [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3) --- updated-dependencies: - dependency-name: braces dependency-type: indirect ... Signed-off-by: dependabot[bot] --- login-workflow/example-vite/yarn.lock | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/login-workflow/example-vite/yarn.lock b/login-workflow/example-vite/yarn.lock index 70edc212..96d2bcee 100644 --- a/login-workflow/example-vite/yarn.lock +++ b/login-workflow/example-vite/yarn.lock @@ -3928,11 +3928,11 @@ brace-expansion@^2.0.1: balanced-match "^1.0.0" braces@^3.0.2, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== dependencies: - fill-range "^7.0.1" + fill-range "^7.1.1" browser-process-hrtime@^1.0.0: version "1.0.0" @@ -5661,10 +5661,10 @@ filesize@^8.0.6: resolved "https://registry.yarnpkg.com/filesize/-/filesize-8.0.7.tgz#695e70d80f4e47012c132d57a059e80c6b580bd8" integrity sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ== -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== dependencies: to-regex-range "^5.0.1" From 397944fd88f8b835e6d36b57cbf2a5f9b4cc25d0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 18 Jun 2024 09:24:09 +0000 Subject: [PATCH 13/90] Bump ws from 7.5.9 to 7.5.10 in /login-workflow/example-vite Bumps [ws](https://github.com/websockets/ws) from 7.5.9 to 7.5.10. - [Release notes](https://github.com/websockets/ws/releases) - [Commits](https://github.com/websockets/ws/compare/7.5.9...7.5.10) --- updated-dependencies: - dependency-name: ws dependency-type: indirect ... Signed-off-by: dependabot[bot] --- login-workflow/example-vite/yarn.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/login-workflow/example-vite/yarn.lock b/login-workflow/example-vite/yarn.lock index 70edc212..37a1a789 100644 --- a/login-workflow/example-vite/yarn.lock +++ b/login-workflow/example-vite/yarn.lock @@ -11360,14 +11360,14 @@ write-file-atomic@^4.0.2: signal-exit "^3.0.7" ws@^7.4.6: - version "7.5.9" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" - integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== + version "7.5.10" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" + integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== ws@^8.13.0: - version "8.16.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.16.0.tgz#d1cd774f36fbc07165066a60e40323eab6446fd4" - integrity sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ== + version "8.17.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.1.tgz#9293da530bb548febc95371d90f9c878727d919b" + integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ== xml-name-validator@^3.0.0: version "3.0.0" From 7673381bac58f2de62311736e9427f581b5298a8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Jul 2024 11:03:38 +0000 Subject: [PATCH 14/90] Bump @brightlayer-ui/icons-mui in /login-workflow/example Bumps [@brightlayer-ui/icons-mui](https://github.com/etn-ccis/blui-icons) from 3.4.0 to 3.6.0. - [Release notes](https://github.com/etn-ccis/blui-icons/releases) - [Commits](https://github.com/etn-ccis/blui-icons/commits) --- updated-dependencies: - dependency-name: "@brightlayer-ui/icons-mui" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- login-workflow/example/package.json | 2 +- login-workflow/example/yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/login-workflow/example/package.json b/login-workflow/example/package.json index 10e1b044..2fda0554 100644 --- a/login-workflow/example/package.json +++ b/login-workflow/example/package.json @@ -33,7 +33,7 @@ }, "dependencies": { "@brightlayer-ui/colors": "^3.0.1", - "@brightlayer-ui/icons-mui": "^3.3.0", + "@brightlayer-ui/icons-mui": "^3.6.0", "@brightlayer-ui/react-components": "^6.1.2", "@brightlayer-ui/react-themes": "^7.2.0", "@emotion/react": "^11.7.1", diff --git a/login-workflow/example/yarn.lock b/login-workflow/example/yarn.lock index 6f932f88..3c940c2c 100644 --- a/login-workflow/example/yarn.lock +++ b/login-workflow/example/yarn.lock @@ -1193,10 +1193,10 @@ optionalDependencies: eslint-plugin-react "^7.28.0" -"@brightlayer-ui/icons-mui@^3.3.0": - version "3.4.0" - resolved "https://registry.yarnpkg.com/@brightlayer-ui/icons-mui/-/icons-mui-3.4.0.tgz#b5df32f89d329f9a5d2d9b01c84a645e997f3c1c" - integrity sha512-MJWXLEjnjsSeXUtpZhqsWDalzZD+L4J4whw0ErYJ/pfkcC37w3JG07pTyxFJY+Lm1v8TDjZQoaKTT3NjYOE6tA== +"@brightlayer-ui/icons-mui@^3.6.0": + version "3.6.0" + resolved "https://registry.yarnpkg.com/@brightlayer-ui/icons-mui/-/icons-mui-3.6.0.tgz#a15f145fad4360ae5aef00059c192bdb1376cd84" + integrity sha512-SW5+xMCAsF6kAQXkfj5EcD7K0DB8gwoqeEpnvIa4SC1dzToqIaxxSDZVFqWlFSi7s//h20DJWOIuujjeQJcqtQ== "@brightlayer-ui/prettier-config@^1.0.3": version "1.0.3" From 5acf4314bb552e078fc2cad73931c9a4e6f27de7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Jul 2024 12:00:51 +0000 Subject: [PATCH 15/90] Bump i18next-browser-languagedetector in /login-workflow Bumps [i18next-browser-languagedetector](https://github.com/i18next/i18next-browser-languageDetector) from 6.1.8 to 8.0.0. - [Changelog](https://github.com/i18next/i18next-browser-languageDetector/blob/master/CHANGELOG.md) - [Commits](https://github.com/i18next/i18next-browser-languageDetector/compare/v6.1.8...v8.0.0) --- updated-dependencies: - dependency-name: i18next-browser-languagedetector dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- login-workflow/package.json | 2 +- login-workflow/yarn.lock | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/login-workflow/package.json b/login-workflow/package.json index ca73d30f..1c177a72 100644 --- a/login-workflow/package.json +++ b/login-workflow/package.json @@ -27,7 +27,7 @@ "prettier": "@brightlayer-ui/prettier-config", "dependencies": { "dompurify": "^2.2.9", - "i18next-browser-languagedetector": "^6.1.0" + "i18next-browser-languagedetector": "^8.0.0" }, "peerDependencies": { "@brightlayer-ui/react-components": "^6.1.2", diff --git a/login-workflow/yarn.lock b/login-workflow/yarn.lock index 22761970..a1abad73 100644 --- a/login-workflow/yarn.lock +++ b/login-workflow/yarn.lock @@ -1046,10 +1046,10 @@ resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== -"@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.19.0", "@babel/runtime@^7.22.15", "@babel/runtime@^7.22.5", "@babel/runtime@^7.23.9", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.6.tgz#5b76eb89ad45e2e4a0a8db54c456251469a3358e" - integrity sha512-Ja18XcETdEl5mzzACGd+DKgaGJzPTCow7EglgwTmHdwokzDFYh/MHua6lU6DV/hjF2IaOJ4oX2nqnjG7RElKOw== +"@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.22.15", "@babel/runtime@^7.22.5", "@babel/runtime@^7.23.2", "@babel/runtime@^7.23.9", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.7.tgz#f4f0d5530e8dbdf59b3451b9b3e594b6ba082e12" + integrity sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw== dependencies: regenerator-runtime "^0.14.0" @@ -5293,12 +5293,12 @@ humanize-ms@^1.2.1: dependencies: ms "^2.0.0" -i18next-browser-languagedetector@^6.1.0: - version "6.1.8" - resolved "https://registry.yarnpkg.com/i18next-browser-languagedetector/-/i18next-browser-languagedetector-6.1.8.tgz#8e9c61b32a4dfe9b959b38bc9d2a8b95f799b27c" - integrity sha512-Svm+MduCElO0Meqpj1kJAriTC6OhI41VhlT/A0UPjGoPZBhAHIaGE5EfsHlTpgdH09UVX7rcc72pSDDBeKSQQA== +i18next-browser-languagedetector@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/i18next-browser-languagedetector/-/i18next-browser-languagedetector-8.0.0.tgz#b6fdd9b43af67c47f2c26c9ba27710a1eaf31e2f" + integrity sha512-zhXdJXTTCoG39QsrOCiOabnWj2jecouOqbchu3EfhtSHxIB5Uugnm9JaizenOy39h7ne3+fLikIjeW88+rgszw== dependencies: - "@babel/runtime" "^7.19.0" + "@babel/runtime" "^7.23.2" i18next@^23.2.6: version "23.5.1" From 8c52ca2c97a55fda3be1e77c2bc986eb88cff394 Mon Sep 17 00:00:00 2001 From: Suraj Karambe Date: Wed, 17 Jul 2024 16:09:56 +0530 Subject: [PATCH 16/90] Added okta login screen base component --- login-workflow/package.json | 2 + .../OktaLoginScreen/OktaLoginScreenBase.tsx | 82 ++++ .../src/screens/OktaLoginScreen/index.ts | 2 + .../src/screens/OktaLoginScreen/types.ts | 94 ++++ login-workflow/src/screens/index.ts | 1 + login-workflow/yarn.lock | 432 +++++++++++++++++- 6 files changed, 609 insertions(+), 4 deletions(-) create mode 100644 login-workflow/src/screens/OktaLoginScreen/OktaLoginScreenBase.tsx create mode 100644 login-workflow/src/screens/OktaLoginScreen/index.ts create mode 100644 login-workflow/src/screens/OktaLoginScreen/types.ts diff --git a/login-workflow/package.json b/login-workflow/package.json index 1c177a72..5055c3af 100644 --- a/login-workflow/package.json +++ b/login-workflow/package.json @@ -26,6 +26,8 @@ }, "prettier": "@brightlayer-ui/prettier-config", "dependencies": { + "@okta/okta-react": "^6.9.0", + "@okta/okta-signin-widget": "^7.20.1", "dompurify": "^2.2.9", "i18next-browser-languagedetector": "^8.0.0" }, diff --git a/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreenBase.tsx b/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreenBase.tsx new file mode 100644 index 00000000..70e7c2e1 --- /dev/null +++ b/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreenBase.tsx @@ -0,0 +1,82 @@ +import React from 'react'; +import { WorkflowCard } from '../../components/WorkflowCard'; +import { WorkflowCardBody } from '../../components/WorkflowCard/WorkflowCardBody'; +import Box from '@mui/material/Box'; +import Typography from '@mui/material/Typography'; +import cyberSecurityBadge from '../../assets/images/cybersecurity_certified.png'; +import ErrorManager from '../../components/Error/ErrorManager'; +import { LinkStyles } from '../../styles'; +import { OktaLoginScreenProps } from './types'; + +/** + * Component that renders an okta login screen that prompts a user to enter a username to login. + * + * @param {OktaLoginScreenProps} props - props of OktaLoginScreen base component + * + * @category Component + */ + +export const OktaLoginScreenBase: React.FC> = (props) => { + const { + widgetConfigProps, header, projectImage, footer, errorDisplayConfig,showForgotPassword,forgotPasswordLabel,onForgotPassword, showContactSupport, contactSupportLabel,onContactSupport, showCyberSecurityBadge, ...otherProps + } = props; + + const handleForgotPassword = (): void => { + if (onForgotPassword) onForgotPassword(); + }; + + const handleContactSupport = (): void => { + if (onContactSupport) onContactSupport(); + }; + + return ( + + + + {/* Write widget */} + Widget + + {showForgotPassword && ( + + + {forgotPasswordLabel || 'Forgot your password?'} + + + )} + {showContactSupport && ( + + + {contactSupportLabel || 'Contact Support'} + + + )} + + {footer} + + {showCyberSecurityBadge && ( + + Cyber Security Badge + + )} + + + ); +}; diff --git a/login-workflow/src/screens/OktaLoginScreen/index.ts b/login-workflow/src/screens/OktaLoginScreen/index.ts new file mode 100644 index 00000000..06320529 --- /dev/null +++ b/login-workflow/src/screens/OktaLoginScreen/index.ts @@ -0,0 +1,2 @@ +export * from './types'; +export * from './OktaLoginScreenBase'; diff --git a/login-workflow/src/screens/OktaLoginScreen/types.ts b/login-workflow/src/screens/OktaLoginScreen/types.ts new file mode 100644 index 00000000..3c2553e3 --- /dev/null +++ b/login-workflow/src/screens/OktaLoginScreen/types.ts @@ -0,0 +1,94 @@ +import { ErrorManagerProps } from '../../components/Error/types'; +import { WorkflowCardBaseProps } from '../../components/WorkflowCard/WorkflowCard.types'; +import {WidgetOptions} from '@okta/okta-signin-widget'; + +export type OktaLoginScreenProps = WorkflowCardBaseProps & { + // https://github.com/okta/okta-signin-widget/blob/master/src/types/options.ts + // oktaLoginConfigProps: object, + //Or object with OktaSignIn type + widgetConfigProps: WidgetOptions, + + // // configure fields + // /** + // * The label for the username field + // */ + // usernameLabel?: string; + + // /** + // * The props to pass to the username text field. + // * See [MUI's TextFieldProps API](https://mui.com/material-ui/api/text-field/) for more details. + // */ + // usernameTextFieldProps?: TextFieldProps; + + // /** + // * The function used to validate the username + // * @param {string} username - validates username + // * @returns boolean | string + // */ + // usernameValidator?: (username: string) => boolean | string; + + // /** + // * The username used to pre-populate the field + // */ + // initialUsernameValue?: string; + + // configure Forgot Password + /** + * whether or not to show the 'forgot password' link + */ + showForgotPassword?: boolean; + + /** + * The label for the 'forgot password' link + */ + forgotPasswordLabel?: string; + + /** + * The callback function that is called when the 'forgot password' link is clicked + * @returns void + */ + onForgotPassword?: () => void; + + // configure Support + /** + * whether or not to show the 'contact support' link + */ + showContactSupport?: boolean; + + /** + * The label for the 'contact support' link + */ + contactSupportLabel?: string; + + /** + * The callback function that is called when the 'contact support' link is clicked + * @returns void + */ + onContactSupport?: () => void; + + // configure visual customizations + /** + * The configuration for customizing how errors are displayed + */ + errorDisplayConfig?: ErrorManagerProps; + + /** + * whether or not to show the cyber security badge + */ + showCyberSecurityBadge?: boolean; + + /** + * The image to display at the top of the screen + */ + projectImage?: React.ReactNode; + + /** + * The header to display at the top of the screen + */ + header?: JSX.Element; + + /** + * The footer to display at the bottom of the screen + */ + footer?: JSX.Element; +} \ No newline at end of file diff --git a/login-workflow/src/screens/index.ts b/login-workflow/src/screens/index.ts index f4457800..d8a55e1d 100644 --- a/login-workflow/src/screens/index.ts +++ b/login-workflow/src/screens/index.ts @@ -13,3 +13,4 @@ export * from './ForgotPasswordScreen'; export * from './ContactScreen'; export * from './RegistrationSuccessScreen'; export * from './ExistingAccountSuccessScreen'; +export * from './OktaLoginScreen'; \ No newline at end of file diff --git a/login-workflow/yarn.lock b/login-workflow/yarn.lock index a1abad73..3f37a528 100644 --- a/login-workflow/yarn.lock +++ b/login-workflow/yarn.lock @@ -1046,6 +1046,20 @@ resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== +"@babel/runtime@7.22.10": + version "7.22.10" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.10.tgz#ae3e9631fd947cb7e3610d3e9d8fef5f76696682" + integrity sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ== + dependencies: + regenerator-runtime "^0.14.0" + +"@babel/runtime@^7.11.2": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.8.tgz#5d958c3827b13cc6d05e038c07fb2e5e3420d82e" + integrity sha512-5F7SDGs1T72ZczbRwbGO9lQi0NLjQxzl6i4lJxLxfW9U5UluCSyEJeniWvnhl3/euNiqQVbo8zruhsDfid0esA== + dependencies: + regenerator-runtime "^0.14.0" + "@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.22.15", "@babel/runtime@^7.22.5", "@babel/runtime@^7.23.2", "@babel/runtime@^7.23.9", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.7.tgz#f4f0d5530e8dbdf59b3451b9b3e594b6ba082e12" @@ -1839,6 +1853,62 @@ dependencies: semver "^7.3.5" +"@okta/okta-auth-js@^7.7.0": + version "7.7.0" + resolved "https://registry.yarnpkg.com/@okta/okta-auth-js/-/okta-auth-js-7.7.0.tgz#daac09294316a69d996a33232eb25032d1b85d70" + integrity sha512-m+WlI9TJ3J2uHI+W9Uc7zinE4CQLS2JC6AQYPJ0KHxaVE5lwPDLFleapPNfNWzYGr/30GV7oBzJMU+8+UQEsPA== + dependencies: + "@babel/runtime" "^7.12.5" + "@peculiar/webcrypto" "^1.4.0" + Base64 "1.1.0" + atob "^2.1.2" + broadcast-channel "~5.3.0" + btoa "^1.2.1" + core-js "^3.6.5" + cross-fetch "^3.1.5" + fast-text-encoding "^1.0.6" + js-cookie "^3.0.1" + jsonpath-plus "^6.0.1" + node-cache "^5.1.2" + p-cancelable "^2.0.0" + tiny-emitter "1.1.0" + webcrypto-shim "^0.1.5" + xhr2 "0.1.3" + +"@okta/okta-react@^6.9.0": + version "6.9.0" + resolved "https://registry.yarnpkg.com/@okta/okta-react/-/okta-react-6.9.0.tgz#1efcd51386ea31e1b3fc9bb25da2eac6222cef5e" + integrity sha512-qqwo8QCaBxM4tXXDO2+wwGgF3GBOe0WFmT4kykU00KXLSbMuiUVlV4RfDqLdNU7ahckGEKh25mkBs31Ga2XGpw== + dependencies: + "@babel/runtime" "^7.11.2" + compare-versions "^4.1.2" + +"@okta/okta-signin-widget@^7.20.1": + version "7.20.1" + resolved "https://registry.yarnpkg.com/@okta/okta-signin-widget/-/okta-signin-widget-7.20.1.tgz#1aa6000aa6c0111239392cbb76ac9a3ac019e5f8" + integrity sha512-XyjuQBvDTlg4K7ko8xn6SqVh6NiR7X3XTrxd2GU84ZjiXFJxSR4eR7plYf2ANEk3T53T91wo1r5re3D/cqG4hA== + dependencies: + "@okta/okta-auth-js" "^7.7.0" + "@sindresorhus/to-milliseconds" "^1.0.0" + "@types/backbone" "^1.4.15" + "@types/eslint-scope" "^3.7.3" + "@types/jquery" "^3.5.14" + "@types/jqueryui" "^1.12.16" + "@types/q" "^1.5.5" + "@types/selectize" "^0.12.35" + "@types/underscore" "^1.11.4" + chokidar "^3.5.1" + clipboard "^1.5.16" + cross-fetch "^3.1.5" + handlebars "^4.7.7" + jquery "^3.6.0" + parse-ms "^2.0.0" + q "1.4.1" + u2f-api-polyfill "0.4.3" + underscore "1.13.1" + optionalDependencies: + fsevents "*" + "@opentelemetry/api@^1.6.0": version "1.6.0" resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.6.0.tgz#de2c6823203d6f319511898bb5de7e70f5267e19" @@ -1849,6 +1919,33 @@ resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.3.1.tgz#ba07b864a3c955f061aa30ea3ef7f4ae4449794a" integrity sha512-wU5J8rUoo32oSef/rFpOT1HIjLjAv3qIDHkw1QIhODV3OpAVHi5oVzlouozg9obUmZKtbZ0qUe/m7FP0y0yBzA== +"@peculiar/asn1-schema@^2.3.8": + version "2.3.8" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-schema/-/asn1-schema-2.3.8.tgz#04b38832a814e25731232dd5be883460a156da3b" + integrity sha512-ULB1XqHKx1WBU/tTFIA+uARuRoBVZ4pNdOA878RDrRbBfBGcSzi5HBkdScC6ZbHn8z7L8gmKCgPC1LHRrP46tA== + dependencies: + asn1js "^3.0.5" + pvtsutils "^1.3.5" + tslib "^2.6.2" + +"@peculiar/json-schema@^1.1.12": + version "1.1.12" + resolved "https://registry.yarnpkg.com/@peculiar/json-schema/-/json-schema-1.1.12.tgz#fe61e85259e3b5ba5ad566cb62ca75b3d3cd5339" + integrity sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w== + dependencies: + tslib "^2.0.0" + +"@peculiar/webcrypto@^1.4.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@peculiar/webcrypto/-/webcrypto-1.5.0.tgz#9e57174c02c1291051c553600347e12b81469e10" + integrity sha512-BRs5XUAwiyCDQMsVA9IDvDa7UBR9gAvPHgugOeGng3YN6vJ9JYonyDc0lNczErgtCWtucjR5N7VtaonboD/ezg== + dependencies: + "@peculiar/asn1-schema" "^2.3.8" + "@peculiar/json-schema" "^1.1.12" + pvtsutils "^1.3.5" + tslib "^2.6.2" + webcrypto-core "^1.8.0" + "@pkgjs/parseargs@^0.11.0": version "0.11.0" resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" @@ -1953,6 +2050,11 @@ resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== +"@sindresorhus/to-milliseconds@^1.0.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/to-milliseconds/-/to-milliseconds-1.2.0.tgz#3453e58b9cc973ccc98fe571dbb7a1d9737f06e7" + integrity sha512-nHpLEF6oRZJZ0ym8hmxz4jeSdnOqwWd5GC75GNQqNjfSG1IY55RE3AaGEC/QUDElLTuaPSBVa1rnV/C/rUkAUw== + "@sinonjs/commons@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.0.tgz#beb434fe875d965265e04722ccfc21df7f755d72" @@ -2057,6 +2159,14 @@ dependencies: "@babel/types" "^7.20.7" +"@types/backbone@^1.4.15": + version "1.4.19" + resolved "https://registry.yarnpkg.com/@types/backbone/-/backbone-1.4.19.tgz#f6e8406fed40ca3fe224f6e59115142b62be76d6" + integrity sha512-byyn236JymGByOajKA7mi1k+/jKn162TIvArOB4SHgOGbVlFj8CSfJH4jekP0qo0vJwW5khrrsiiO1Jsos6ZvA== + dependencies: + "@types/jquery" "*" + "@types/underscore" "*" + "@types/color-convert@*": version "2.0.1" resolved "https://registry.yarnpkg.com/@types/color-convert/-/color-convert-2.0.1.tgz#45216f0d8289c6ae32d139ed08c205a9c55bb5d0" @@ -2090,6 +2200,27 @@ dependencies: "@types/node" "*" +"@types/eslint-scope@^3.7.3": + version "3.7.7" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5" + integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== + dependencies: + "@types/eslint" "*" + "@types/estree" "*" + +"@types/eslint@*": + version "8.56.10" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.56.10.tgz#eb2370a73bf04a901eeba8f22595c7ee0f7eb58d" + integrity sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" + integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== + "@types/glob@*": version "8.1.0" resolved "https://registry.yarnpkg.com/@types/glob/-/glob-8.1.0.tgz#b63e70155391b0584dce44e7ea25190bbc38f2fc" @@ -2137,6 +2268,20 @@ jest-matcher-utils "^27.0.0" pretty-format "^27.0.0" +"@types/jquery@*", "@types/jquery@^3.5.14": + version "3.5.30" + resolved "https://registry.yarnpkg.com/@types/jquery/-/jquery-3.5.30.tgz#888d584cbf844d3df56834b69925085038fd80f7" + integrity sha512-nbWKkkyb919DOUxjmRVk8vwtDb0/k8FKncmUKFi+NY+QXqWltooxTrswvz4LspQwxvLdvzBN1TImr6cw3aQx2A== + dependencies: + "@types/sizzle" "*" + +"@types/jqueryui@^1.12.16": + version "1.12.23" + resolved "https://registry.yarnpkg.com/@types/jqueryui/-/jqueryui-1.12.23.tgz#06882d3fd91834f87c40320a0897b2d3fe17de35" + integrity sha512-pm1yVNVI29B9IGw41anCEzA5eR2r1pYc7flqD471ZT7B0yUXIY7YNe/zq7LGpihIGXNzWyG+Q4YQSzv2AF3fNA== + dependencies: + "@types/jquery" "*" + "@types/jsdom@^20.0.0": version "20.0.1" resolved "https://registry.yarnpkg.com/@types/jsdom/-/jsdom-20.0.1.tgz#07c14bc19bd2f918c1929541cdaacae894744808" @@ -2146,6 +2291,11 @@ "@types/tough-cookie" "*" parse5 "^7.0.0" +"@types/json-schema@*": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + "@types/json-schema@^7.0.12", "@types/json-schema@^7.0.6": version "7.0.13" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.13.tgz#02c24f4363176d2d18fc8b70b9f3c54aba178a85" @@ -2194,6 +2344,11 @@ resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.6.tgz#bbf819813d6be21011b8f5801058498bec555572" integrity sha512-RK/kBbYOQQHLYj9Z95eh7S6t7gq4Ojt/NT8HTk8bWVhA5DaF+5SMnxHKkP4gPNN3wAZkKP+VjAf0ebtYzf+fxg== +"@types/q@^1.5.5": + version "1.5.8" + resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.8.tgz#95f6c6a08f2ad868ba230ead1d2d7f7be3db3837" + integrity sha512-hroOstUScF6zhIi+5+x0dzqrHA1EJi+Irri6b1fxolMTqqHIV/Cg77EtnQcZqZCu8hR3mX2BzIxN4/GzI68Kfw== + "@types/react-dom@^18.0.0": version "18.2.7" resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.7.tgz#67222a08c0a6ae0a0da33c3532348277c70abb63" @@ -2247,11 +2402,21 @@ resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.3.tgz#cef09e3ec9af1d63d2a6cc5b383a737e24e6dcf5" integrity sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ== +"@types/selectize@^0.12.35": + version "0.12.39" + resolved "https://registry.yarnpkg.com/@types/selectize/-/selectize-0.12.39.tgz#cd35ad3a0adf0131cc4a614cef8571b76b89b507" + integrity sha512-ABnSEXM1MyO9ZZXl2yXLqzHcENuGh6kyXisnq87OQCubbJrMaargMYV/NPVmJA3lJGnDM6hzc1ce7yQM/RwI5g== + "@types/semver@^7.5.0": version "7.5.3" resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.3.tgz#9a726e116beb26c24f1ccd6850201e1246122e04" integrity sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw== +"@types/sizzle@*": + version "2.3.8" + resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.8.tgz#518609aefb797da19bf222feb199e8f653ff7627" + integrity sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg== + "@types/stack-utils@^2.0.0": version "2.0.1" resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" @@ -2272,6 +2437,11 @@ resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.4.tgz#2b38784cd16957d3782e8e2b31c03bc1d13b4d65" integrity sha512-IDaobHimLQhjwsQ/NMwRVfa/yL7L/wriQPMhw1ZJall0KX6E1oxk29XMDeilW5qTIg5aoiqf5Udy8U/51aNoQQ== +"@types/underscore@*", "@types/underscore@^1.11.4": + version "1.11.15" + resolved "https://registry.yarnpkg.com/@types/underscore/-/underscore-1.11.15.tgz#29c776daecf6f1935da9adda17509686bf979947" + integrity sha512-HP38xE+GuWGlbSRq9WrZkousaQ7dragtZCruBVMi0oX1migFZavZ3OROKHSkNp/9ouq82zrWtZpg18jFnVN96g== + "@types/yargs-parser@*": version "21.0.0" resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" @@ -2447,6 +2617,11 @@ "@typescript-eslint/types" "6.7.3" eslint-visitor-keys "^3.4.1" +Base64@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/Base64/-/Base64-1.1.0.tgz#810ef21afa8357df92ad7b5389188c446b9cb956" + integrity sha512-qeacf8dvGpf+XAT27ESHMh7z84uRzj/ua2pQdJg483m3bEXv/kVFtDnMgvf70BQGqzbZhR9t6BmASzKvqfJf3Q== + abab@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" @@ -2806,6 +2981,15 @@ asap@^2.0.0: resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== +asn1js@^3.0.1, asn1js@^3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/asn1js/-/asn1js-3.0.5.tgz#5ea36820443dbefb51cc7f88a2ebb5b462114f38" + integrity sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ== + dependencies: + pvtsutils "^1.3.2" + pvutils "^1.1.3" + tslib "^2.4.0" + ast-types@^0.13.4: version "0.13.4" resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.4.tgz#ee0d77b343263965ecc3fb62da16e7222b2b6782" @@ -2842,6 +3026,11 @@ asynckit@^0.4.0: resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + available-typed-arrays@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" @@ -3076,6 +3265,16 @@ braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.1.1" +broadcast-channel@~5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/broadcast-channel/-/broadcast-channel-5.3.0.tgz#9d9e55fb8db2a1dbbe436ae6d51382a354e76fc3" + integrity sha512-0PmDYc/iUGZ4QbnCnV7u+WleygiS1bZ4oV6t4rANXYtSgEFtGhB5jimJPLOVpPtce61FVxrH8CYylfO5g7OLKw== + dependencies: + "@babel/runtime" "7.22.10" + oblivious-set "1.1.1" + p-queue "6.6.2" + unload "2.4.1" + browserslist@^4.21.9: version "4.21.10" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.10.tgz#dbbac576628c13d3b2231332cb2ec5a46e015bb0" @@ -3110,6 +3309,11 @@ bser@2.1.1: dependencies: node-int64 "^0.4.0" +btoa@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/btoa/-/btoa-1.2.1.tgz#01a9909f8b2c93f6bf680ba26131eb30f7fa3d73" + integrity sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g== + buffer-crc32@^0.2.1, buffer-crc32@^0.2.13: version "0.2.13" resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" @@ -3280,6 +3484,21 @@ chokidar@^3.0.2: optionalDependencies: fsevents "~2.3.2" +chokidar@^3.5.1: + version "3.6.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" + integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + chownr@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" @@ -3350,6 +3569,15 @@ cli-width@^3.0.0: resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== +clipboard@^1.5.16: + version "1.7.1" + resolved "https://registry.yarnpkg.com/clipboard/-/clipboard-1.7.1.tgz#360d6d6946e99a7a1fef395e42ba92b5e9b5a16b" + integrity sha512-smkaRaIQsrnKN1F3wd1/vY9Q+DeR4L8ZCXKeHCFC2j8RZuSBbuImcLdnIO4GTxmzJxQuDGNKkyfpGoPW7Ua5bQ== + dependencies: + good-listener "^1.2.2" + select "^1.1.2" + tiny-emitter "^2.0.0" + cliui@^8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" @@ -3359,6 +3587,11 @@ cliui@^8.0.1: strip-ansi "^6.0.1" wrap-ansi "^7.0.0" +clone@2.x: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== + clone@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" @@ -3472,6 +3705,11 @@ commander@^4.0.1: resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== +compare-versions@^4.1.2: + version "4.1.4" + resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-4.1.4.tgz#3571f4d610924d4414846a4183d386c8f3d51112" + integrity sha512-FemMreK9xNyL8gQevsdRMrvO4lFCkQP7qbuktn1q8ndcNk1+0mz7lgE7b/sNvbhVgY4w6tMN1FDp6aADjqw2rw== + compress-commons@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-4.1.2.tgz#6542e59cb63e1f46a8b21b0e06f9a32e4c8b06df" @@ -3581,6 +3819,11 @@ core-js-compat@^3.31.0, core-js-compat@^3.33.1: dependencies: browserslist "^4.22.1" +core-js@^3.6.5: + version "3.37.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.37.1.tgz#d21751ddb756518ac5a00e4d66499df981a62db9" + integrity sha512-Xn6qmxrQZyB0FFY8E3bgRXei3lWDJHhvI+u0q9TKIYM49G8pAr0FgnnrFRAmsbptZL1yxRADVXn+x5AGsbBfyw== + core-util-is@~1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" @@ -3638,6 +3881,13 @@ cross-env@^5.1.3: dependencies: cross-spawn "^6.0.5" +cross-fetch@^3.1.5: + version "3.1.8" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.8.tgz#0327eba65fd68a7d119f8fb2bf9334a1a7956f82" + integrity sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg== + dependencies: + node-fetch "^2.6.12" + cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" @@ -3848,6 +4098,11 @@ delayed-stream@~1.0.0: resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== +delegate@^3.1.2: + version "3.2.0" + resolved "https://registry.yarnpkg.com/delegate/-/delegate-3.2.0.tgz#b66b71c3158522e8ab5744f720d8ca0c2af59166" + integrity sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw== + delegates@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" @@ -4356,6 +4611,11 @@ event-target-shim@^5.0.0: resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== +eventemitter3@^4.0.4: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + events-listener@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/events-listener/-/events-listener-1.1.0.tgz#dd49b4628480eba58fde31b870ee346b3990b349" @@ -4504,7 +4764,7 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== -fast-text-encoding@^1.0.0, fast-text-encoding@^1.0.3: +fast-text-encoding@^1.0.0, fast-text-encoding@^1.0.3, fast-text-encoding@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz#0aa25f7f638222e3396d72bf936afcf1d42d6867" integrity sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w== @@ -4771,7 +5031,7 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== -fsevents@^2.3.2, fsevents@~2.3.2: +fsevents@*, fsevents@^2.3.2, fsevents@~2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== @@ -5021,6 +5281,13 @@ globby@^11.1.0: merge2 "^1.4.1" slash "^3.0.0" +good-listener@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/good-listener/-/good-listener-1.2.2.tgz#d53b30cdf9313dffb7dc9a0d477096aa6d145c50" + integrity sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw== + dependencies: + delegate "^3.1.2" + google-auth-library@^7.11.0: version "7.14.1" resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-7.14.1.tgz#e3483034162f24cc71b95c8a55a210008826213c" @@ -5133,6 +5400,18 @@ gtoken@^6.1.0: google-p12-pem "^4.0.0" jws "^4.0.0" +handlebars@^4.7.7: + version "4.7.8" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.8.tgz#41c42c18b1be2365439188c77c6afae71c0cd9e9" + integrity sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ== + dependencies: + minimist "^1.2.5" + neo-async "^2.6.2" + source-map "^0.6.1" + wordwrap "^1.0.0" + optionalDependencies: + uglify-js "^3.1.4" + harmony-reflect@^1.4.6: version "1.6.2" resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.2.tgz#31ecbd32e648a34d030d86adb67d4d47547fe710" @@ -6306,6 +6585,16 @@ jquery-extend@~2.0.3: resolved "https://registry.yarnpkg.com/jquery-extend/-/jquery-extend-2.0.3.tgz#6815cdb01a866ddba30e6f4d0fc5fb6679272735" integrity sha512-ysLU6/m8VLckIjAudiE+s7YAoYwklZy5Ft9kqO7FPkqaQrd3wUMuZ134G3uniysW8VZME/pGa2LcynsM4TjP5Q== +jquery@^3.6.0: + version "3.7.1" + resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.7.1.tgz#083ef98927c9a6a74d05a6af02806566d16274de" + integrity sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg== + +js-cookie@^3.0.1: + version "3.0.5" + resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-3.0.5.tgz#0b7e2fd0c01552c58ba86e0841f94dc2557dcdbc" + integrity sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw== + "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -6459,6 +6748,11 @@ jsonfile@^6.0.1: optionalDependencies: graceful-fs "^4.1.6" +jsonpath-plus@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/jsonpath-plus/-/jsonpath-plus-6.0.1.tgz#9a3e16cedadfab07a3d8dc4e8cd5df4ed8f49c4d" + integrity sha512-EvGovdvau6FyLexFH2OeXfIITlgIbgZoAZe3usiySeaIDm5QS+A10DKNpaPBBqqRSZr2HN6HVNXxtwUAr2apEw== + jsonwebtoken@^9.0.0: version "9.0.2" resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz#65ff91f4abef1784697d40952bb1998c504caaf3" @@ -6960,7 +7254,7 @@ minimatch@^9.0.1: dependencies: brace-expansion "^2.0.1" -minimist@^1.2.0, minimist@^1.2.6: +minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== @@ -7097,6 +7391,11 @@ negotiator@0.6.3, negotiator@^0.6.3: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== +neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + netmask@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/netmask/-/netmask-2.0.2.tgz#8b01a07644065d536383835823bc52004ebac5e7" @@ -7107,6 +7406,13 @@ nice-try@^1.0.4: resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== +node-cache@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/node-cache/-/node-cache-5.1.2.tgz#f264dc2ccad0a780e76253a694e9fd0ed19c398d" + integrity sha512-t1QzWwnk4sjLWaQAS8CHgOJ+RAfmHpxFWmc36IWTiWHQfs0w5JDMBS1b1ZxQteo0vVVuWJvIUKHDkkeK7vIGCg== + dependencies: + clone "2.x" + node-emoji@^1.11.0: version "1.11.0" resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.11.0.tgz#69a0150e6946e2f115e9d7ea4df7971e2628301c" @@ -7114,7 +7420,7 @@ node-emoji@^1.11.0: dependencies: lodash "^4.17.21" -node-fetch@^2.6.1, node-fetch@^2.6.7, node-fetch@^2.6.9: +node-fetch@^2.6.1, node-fetch@^2.6.12, node-fetch@^2.6.7, node-fetch@^2.6.9: version "2.7.0" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== @@ -7308,6 +7614,11 @@ object.values@^1.1.6: define-properties "^1.2.0" es-abstract "^1.22.1" +oblivious-set@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/oblivious-set/-/oblivious-set-1.1.1.tgz#d9d38e9491d51f27a5c3ec1681d2ba40aa81e98b" + integrity sha512-Oh+8fK09mgGmAshFdH6hSVco6KZmd1tTwNFWj35OvzdmJTMZtAkbn05zar2iG3v6sDs1JLEtOiBGNb6BHwkb2w== + on-finished@2.4.1, on-finished@^2.2.0: version "2.4.1" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" @@ -7406,11 +7717,21 @@ os-tmpdir@~1.0.2: resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== +p-cancelable@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" + integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== + p-defer@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-3.0.0.tgz#d1dceb4ee9b2b604b1d94ffec83760175d4e6f83" integrity sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw== +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== + p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" @@ -7446,6 +7767,21 @@ p-map@^4.0.0: dependencies: aggregate-error "^3.0.0" +p-queue@6.6.2: + version "6.6.2" + resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-6.6.2.tgz#2068a9dcf8e67dd0ec3e7a2bcb76810faa85e426" + integrity sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ== + dependencies: + eventemitter3 "^4.0.4" + p-timeout "^3.2.0" + +p-timeout@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" + integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== + dependencies: + p-finally "^1.0.0" + p-try@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" @@ -7490,6 +7826,11 @@ parse-json@^5.0.0, parse-json@^5.2.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" +parse-ms@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-2.1.0.tgz#348565a753d4391fa524029956b172cb7753097d" + integrity sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA== + parse5@^7.0.0, parse5@^7.1.1: version "7.1.2" resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32" @@ -7782,6 +8123,23 @@ pure-rand@^6.0.0: resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.0.3.tgz#3c9e6b53c09e52ac3cedffc85ab7c1c7094b38cb" integrity sha512-KddyFewCsO0j3+np81IQ+SweXLDnDQTs5s67BOnrYmYe/yNmUhttQyGsYzy8yUnoljGAQ9sl38YB4vH8ur7Y+w== +pvtsutils@^1.3.2, pvtsutils@^1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/pvtsutils/-/pvtsutils-1.3.5.tgz#b8705b437b7b134cd7fd858f025a23456f1ce910" + integrity sha512-ARvb14YB9Nm2Xi6nBq1ZX6dAM0FsJnuk+31aUp4TrcZEdKUlSqOqsxJHUPJDNE3qiIp+iUPEIeR6Je/tgV7zsA== + dependencies: + tslib "^2.6.1" + +pvutils@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/pvutils/-/pvutils-1.1.3.tgz#f35fc1d27e7cd3dfbd39c0826d173e806a03f5a3" + integrity sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ== + +q@1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e" + integrity sha512-/CdEdaw49VZVmyIDGUQKDDT53c7qBkO6g5CefWz91Ae+l4+cRtcDYwMTXh6me4O8TMldeGHG3N2Bl84V78Ywbg== + qs@6.11.0: version "6.11.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" @@ -8257,6 +8615,11 @@ scheduler@^0.23.0: dependencies: loose-envify "^1.1.0" +select@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/select/-/select-1.1.2.tgz#0e7350acdec80b1108528786ec1d4418d11b396d" + integrity sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA== + semver-diff@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b" @@ -8802,6 +9165,16 @@ through@^2.3.6: resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== +tiny-emitter@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-1.1.0.tgz#ab405a21ffed814a76c19739648093d70654fecb" + integrity sha512-HFhr+OKGIHRO6krgzEt9MqbMO98wPDzDPr1BOpM/nZCChkK40UYn8b70nSjcan4jTzDSQecy1KRVVQRohIRWrw== + +tiny-emitter@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz#1d1a56edfc51c43e863cbb5382a72330e3555423" + integrity sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q== + tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -8901,6 +9274,11 @@ tslib@^1.8.1: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== +tslib@^2.0.0, tslib@^2.4.0, tslib@^2.6.1, tslib@^2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0" + integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== + tslib@^2.0.1, tslib@^2.1.0: version "2.6.2" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" @@ -9006,11 +9384,21 @@ typescript@^5.0.3: resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.5.tgz#42ccef2c571fdbd0f6718b1d1f5e6e5ef006f611" integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ== +u2f-api-polyfill@0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/u2f-api-polyfill/-/u2f-api-polyfill-0.4.3.tgz#b7ad165a6f962558517a867c5c4bf9399fcf7e98" + integrity sha512-0DVykdzG3tKft2GciQCGzgO8BinDEfIhTBo7FKbLBmA+sVTPYmNOFbsZuduYQmnc3+ykUadTHNqXVqnvBfLCvg== + uc.micro@^1.0.1, uc.micro@^1.0.5: version "1.0.6" resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== +uglify-js@^3.1.4: + version "3.18.0" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.18.0.tgz#73b576a7e8fda63d2831e293aeead73e0a270deb" + integrity sha512-SyVVbcNBCk0dzr9XL/R/ySrmYf0s372K6/hFklzgcp2lBFyXtw4I7BOdDjlLhE1aVqaI/SHWXWmYdlZxuyF38A== + uglify-js@^3.7.7: version "3.17.4" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c" @@ -9026,6 +9414,11 @@ unbox-primitive@^1.0.2: has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" +underscore@1.13.1: + version "1.13.1" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.1.tgz#0c1c6bd2df54b6b69f2314066d65b6cde6fcf9d1" + integrity sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g== + underscore@~1.13.2: version "1.13.6" resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.6.tgz#04786a1f589dc6c09f761fc5f45b89e935136441" @@ -9093,6 +9486,11 @@ universalify@^2.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== +unload@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/unload/-/unload-2.4.1.tgz#b0c5b7fb44e17fcbf50dcb8fb53929c59dd226a5" + integrity sha512-IViSAm8Z3sRBYA+9wc0fLQmU9Nrxb16rcDmIiR6Y9LJSZzI7QY5QsDhqPpKOjAn0O9/kfK1TfNEMMAGPTIraPw== + unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" @@ -9221,6 +9619,22 @@ wcwidth@^1.0.1: dependencies: defaults "^1.0.3" +webcrypto-core@^1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/webcrypto-core/-/webcrypto-core-1.8.0.tgz#aaea17f3dd9c77c304e3c494eb27ca07cc72ca37" + integrity sha512-kR1UQNH8MD42CYuLzvibfakG5Ew5seG85dMMoAM/1LqvckxaF6pUiidLuraIu4V+YCIFabYecUZAW0TuxAoaqw== + dependencies: + "@peculiar/asn1-schema" "^2.3.8" + "@peculiar/json-schema" "^1.1.12" + asn1js "^3.0.1" + pvtsutils "^1.3.5" + tslib "^2.6.2" + +webcrypto-shim@^0.1.5: + version "0.1.7" + resolved "https://registry.yarnpkg.com/webcrypto-shim/-/webcrypto-shim-0.1.7.tgz#da8be23061a0451cf23b424d4a9b61c10f091c12" + integrity sha512-JAvAQR5mRNRxZW2jKigWMjCMkjSdmP5cColRP1U/pTg69VgHXEi1orv5vVpJ55Zc5MIaPc1aaurzd9pjv2bveg== + webidl-conversions@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" @@ -9373,6 +9787,11 @@ word-wrap@~1.2.3: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== +wordwrap@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== + "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" @@ -9447,6 +9866,11 @@ xdg-basedir@^4.0.0: resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== +xhr2@0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/xhr2/-/xhr2-0.1.3.tgz#cbfc4759a69b4a888e78cf4f20b051038757bd11" + integrity sha512-6RmGK22QwC7yXB1CRwyLWuS2opPcKOlAu0ViAnyZjDlzrEmCKL4kLHkfvB8oMRWeztMsNoDGAjsMZY15w/4tTw== + xml-name-validator@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835" From b62801b0a5df4d0f7087db7a8d468150aafc7266 Mon Sep 17 00:00:00 2001 From: Suraj Karambe Date: Wed, 24 Jul 2024 22:57:16 +0530 Subject: [PATCH 17/90] Updated widget --- .../OktaLoginScreen/OktaLoginScreenBase.tsx | 79 ++++++------------- 1 file changed, 26 insertions(+), 53 deletions(-) diff --git a/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreenBase.tsx b/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreenBase.tsx index 70e7c2e1..f5ac88fc 100644 --- a/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreenBase.tsx +++ b/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreenBase.tsx @@ -1,12 +1,14 @@ -import React from 'react'; +import React, { useEffect, useRef } from 'react'; import { WorkflowCard } from '../../components/WorkflowCard'; -import { WorkflowCardBody } from '../../components/WorkflowCard/WorkflowCardBody'; import Box from '@mui/material/Box'; import Typography from '@mui/material/Typography'; import cyberSecurityBadge from '../../assets/images/cybersecurity_certified.png'; import ErrorManager from '../../components/Error/ErrorManager'; import { LinkStyles } from '../../styles'; import { OktaLoginScreenProps } from './types'; +import { useOktaAuth } from '@okta/okta-react'; +import OktaSignIn from '@okta/okta-signin-widget'; +import './OktaLoginScreenBase.css'; /** * Component that renders an okta login screen that prompts a user to enter a username to login. @@ -20,63 +22,34 @@ export const OktaLoginScreenBase: React.FC { - if (onForgotPassword) onForgotPassword(); - }; + useEffect((): void | (() => void) => { + if (!widgetRef.current) { + return; + } + + widgetConfigProps.customButtons = customButtons; + const widget = new OktaSignIn(widgetConfigProps); + + widget.showSignInAndRedirect({ el: widgetRef.current }).catch(() => {}); + + return () => widget.remove(); + + }, [oktaAuth, authState]); + + + const linkButtons: any = []; + + const customButtons: any = linkButtons.concat(props.widgetConfigProps.customButtons); - const handleContactSupport = (): void => { - if (onContactSupport) onContactSupport(); - }; return ( - - + - {/* Write widget */} - Widget + - {showForgotPassword && ( - - - {forgotPasswordLabel || 'Forgot your password?'} - - - )} - {showContactSupport && ( - - - {contactSupportLabel || 'Contact Support'} - - - )} - - {footer} - - {showCyberSecurityBadge && ( - - Cyber Security Badge - - )} - ); }; From 292ea52b80c066dc6cb870c681b115212c37ca14 Mon Sep 17 00:00:00 2001 From: Suraj Karambe Date: Thu, 25 Jul 2024 02:50:43 +0530 Subject: [PATCH 18/90] Added utility classes to okta base screen --- .../OktaLoginScreen/OktaLoginScreenBase.tsx | 143 ++++++++++++++---- .../src/screens/OktaLoginScreen/index.ts | 1 - .../src/screens/OktaLoginScreen/types.ts | 52 +------ .../screens/OktaLoginScreen/utilityClasses.ts | 17 +++ login-workflow/src/screens/index.ts | 2 +- 5 files changed, 137 insertions(+), 78 deletions(-) create mode 100644 login-workflow/src/screens/OktaLoginScreen/utilityClasses.ts diff --git a/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreenBase.tsx b/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreenBase.tsx index f5ac88fc..024b9a4d 100644 --- a/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreenBase.tsx +++ b/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreenBase.tsx @@ -1,55 +1,136 @@ -import React, { useEffect, useRef } from 'react'; +import React from 'react'; +import { useOktaAuth } from '@okta/okta-react'; +import { OktaLoginScreenProps } from './types'; import { WorkflowCard } from '../../components/WorkflowCard'; -import Box from '@mui/material/Box'; -import Typography from '@mui/material/Typography'; -import cyberSecurityBadge from '../../assets/images/cybersecurity_certified.png'; +import { WorkflowCardBody } from '../../components/WorkflowCard/WorkflowCardBody'; +import { Box, Button, Typography } from '@mui/material'; import ErrorManager from '../../components/Error/ErrorManager'; import { LinkStyles } from '../../styles'; -import { OktaLoginScreenProps } from './types'; -import { useOktaAuth } from '@okta/okta-react'; -import OktaSignIn from '@okta/okta-signin-widget'; -import './OktaLoginScreenBase.css'; +import cyberSecurityBadge from '../../assets/images/cybersecurity_certified.png'; +import { useErrorManager } from '../../contexts/ErrorContext/useErrorManager'; +import { unstable_composeClasses as composeClasses } from '@mui/base'; +import { getOktaLoginScreenUtilityClass, OktaLoginScreenClassKey } from './utilityClasses'; + +const useUtilityClasses = (ownerState: OktaLoginScreenProps): Record => { + const { classes } = ownerState; + + const slots = { + root: ['root'], + projectImageWrapper: ['projectImageWrapper'], + loginButton: ['loginButton'], + contactSupportWrapper: ['contactSupportWrapper'], + contactSupportLabel: ['contactSupportLabel'], + cyberSecurityBadgeWrapper: ['cyberSecurityBadgeWrapper'], + cyberSecurityBadge: ['cyberSecurityBadge'], + }; + + return composeClasses(slots, getOktaLoginScreenUtilityClass, classes); +}; /** - * Component that renders an okta login screen that prompts a user to enter a username to login. + * Component that renders an okta login screen. * * @param {OktaLoginScreenProps} props - props of OktaLoginScreen base component * * @category Component */ -export const OktaLoginScreenBase: React.FC> = (props) => { +export const OktaLoginScreenBase: React.FC = (props) => { + const { authState, oktaAuth } = useOktaAuth(); + const { triggerError } = useErrorManager(); + const defaultClasses = useUtilityClasses(props); + const { - widgetConfigProps, header, projectImage, footer, errorDisplayConfig,showForgotPassword,forgotPasswordLabel,onForgotPassword, showContactSupport, contactSupportLabel,onContactSupport, showCyberSecurityBadge, ...otherProps + header, + projectImage, + errorDisplayConfig, + loginButtonLabel, + showContactSupport, + showCyberSecurityBadge, + contactSupportLabel, + footer, + onContactSupport, + ...otherProps } = props; - const widgetRef = useRef(null); - const { oktaAuth, authState } = useOktaAuth(); - useEffect((): void | (() => void) => { - if (!widgetRef.current) { - return; + const handleOnLogin = async (): Promise => { + try { + await oktaAuth.signInWithRedirect(); + } catch (_error) { + triggerError(_error as Error); } + }; - widgetConfigProps.customButtons = customButtons; - const widget = new OktaSignIn(widgetConfigProps); - - widget.showSignInAndRedirect({ el: widgetRef.current }).catch(() => {}); - - return () => widget.remove(); - - }, [oktaAuth, authState]); + const handleContactSupport = (): void => { + if (onContactSupport) onContactSupport(); + }; + return ( + + + {header} + + {projectImage} + - const linkButtons: any = []; + + + - const customButtons: any = linkButtons.concat(props.widgetConfigProps.customButtons); + {showContactSupport && ( + + + {contactSupportLabel || 'Contact Support'} + + + )} + {footer} - return ( - - - - + {showCyberSecurityBadge && ( + + Cyber Security Badge + + )} + ); }; diff --git a/login-workflow/src/screens/OktaLoginScreen/index.ts b/login-workflow/src/screens/OktaLoginScreen/index.ts index 06320529..99bf429f 100644 --- a/login-workflow/src/screens/OktaLoginScreen/index.ts +++ b/login-workflow/src/screens/OktaLoginScreen/index.ts @@ -1,2 +1 @@ -export * from './types'; export * from './OktaLoginScreenBase'; diff --git a/login-workflow/src/screens/OktaLoginScreen/types.ts b/login-workflow/src/screens/OktaLoginScreen/types.ts index 3c2553e3..2e357304 100644 --- a/login-workflow/src/screens/OktaLoginScreen/types.ts +++ b/login-workflow/src/screens/OktaLoginScreen/types.ts @@ -1,55 +1,18 @@ -import { ErrorManagerProps } from '../../components/Error/types'; import { WorkflowCardBaseProps } from '../../components/WorkflowCard/WorkflowCard.types'; -import {WidgetOptions} from '@okta/okta-signin-widget'; +import { ErrorManagerProps } from '../../components/Error/types'; +import { OktaAuthOptions } from '@okta/okta-auth-js'; export type OktaLoginScreenProps = WorkflowCardBaseProps & { - // https://github.com/okta/okta-signin-widget/blob/master/src/types/options.ts - // oktaLoginConfigProps: object, - //Or object with OktaSignIn type - widgetConfigProps: WidgetOptions, - - // // configure fields - // /** - // * The label for the username field - // */ - // usernameLabel?: string; - - // /** - // * The props to pass to the username text field. - // * See [MUI's TextFieldProps API](https://mui.com/material-ui/api/text-field/) for more details. - // */ - // usernameTextFieldProps?: TextFieldProps; - - // /** - // * The function used to validate the username - // * @param {string} username - validates username - // * @returns boolean | string - // */ - // usernameValidator?: (username: string) => boolean | string; - - // /** - // * The username used to pre-populate the field - // */ - // initialUsernameValue?: string; - - // configure Forgot Password /** - * whether or not to show the 'forgot password' link + * Options for configuring the Okta Auth SDK. */ - showForgotPassword?: boolean; + oktaAuthOptions: OktaAuthOptions; /** - * The label for the 'forgot password' link - */ - forgotPasswordLabel?: string; - - /** - * The callback function that is called when the 'forgot password' link is clicked - * @returns void + * The label for the username field */ - onForgotPassword?: () => void; + loginButtonLabel?: string; - // configure Support /** * whether or not to show the 'contact support' link */ @@ -66,7 +29,6 @@ export type OktaLoginScreenProps = WorkflowCardBaseProps & { */ onContactSupport?: () => void; - // configure visual customizations /** * The configuration for customizing how errors are displayed */ @@ -91,4 +53,4 @@ export type OktaLoginScreenProps = WorkflowCardBaseProps & { * The footer to display at the bottom of the screen */ footer?: JSX.Element; -} \ No newline at end of file +}; diff --git a/login-workflow/src/screens/OktaLoginScreen/utilityClasses.ts b/login-workflow/src/screens/OktaLoginScreen/utilityClasses.ts new file mode 100644 index 00000000..e9f7460b --- /dev/null +++ b/login-workflow/src/screens/OktaLoginScreen/utilityClasses.ts @@ -0,0 +1,17 @@ +import generateUtilityClass from '@mui/material/generateUtilityClass'; + +export type OktaLoginScreenClasses = { + root?: string; + projectImageWrapper?: string; + loginButton?: string; + contactSupportWrapper?: string; + contactSupportLabel?: string; + cyberSecurityBadgeWrapper?: string; + cyberSecurityBadge?: string; +}; + +export type OktaLoginScreenClassKey = keyof OktaLoginScreenClasses; + +export function getOktaLoginScreenUtilityClass(slot: string): string { + return generateUtilityClass('BluiOktaLogin', slot); +} diff --git a/login-workflow/src/screens/index.ts b/login-workflow/src/screens/index.ts index d8a55e1d..f6279187 100644 --- a/login-workflow/src/screens/index.ts +++ b/login-workflow/src/screens/index.ts @@ -13,4 +13,4 @@ export * from './ForgotPasswordScreen'; export * from './ContactScreen'; export * from './RegistrationSuccessScreen'; export * from './ExistingAccountSuccessScreen'; -export * from './OktaLoginScreen'; \ No newline at end of file +export * from './OktaLoginScreen'; From eeb8c3516fc1f869226f527bff0eeb06a70d1136 Mon Sep 17 00:00:00 2001 From: Suraj Karambe Date: Thu, 25 Jul 2024 02:55:47 +0530 Subject: [PATCH 19/90] Removed okta sign in widget --- login-workflow/package.json | 1 - login-workflow/yarn.lock | 412 +----------------------------------- 2 files changed, 4 insertions(+), 409 deletions(-) diff --git a/login-workflow/package.json b/login-workflow/package.json index 5055c3af..e5638f28 100644 --- a/login-workflow/package.json +++ b/login-workflow/package.json @@ -27,7 +27,6 @@ "prettier": "@brightlayer-ui/prettier-config", "dependencies": { "@okta/okta-react": "^6.9.0", - "@okta/okta-signin-widget": "^7.20.1", "dompurify": "^2.2.9", "i18next-browser-languagedetector": "^8.0.0" }, diff --git a/login-workflow/yarn.lock b/login-workflow/yarn.lock index 3f37a528..5350dd49 100644 --- a/login-workflow/yarn.lock +++ b/login-workflow/yarn.lock @@ -1046,13 +1046,6 @@ resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== -"@babel/runtime@7.22.10": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.10.tgz#ae3e9631fd947cb7e3610d3e9d8fef5f76696682" - integrity sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ== - dependencies: - regenerator-runtime "^0.14.0" - "@babel/runtime@^7.11.2": version "7.24.8" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.8.tgz#5d958c3827b13cc6d05e038c07fb2e5e3420d82e" @@ -1853,28 +1846,6 @@ dependencies: semver "^7.3.5" -"@okta/okta-auth-js@^7.7.0": - version "7.7.0" - resolved "https://registry.yarnpkg.com/@okta/okta-auth-js/-/okta-auth-js-7.7.0.tgz#daac09294316a69d996a33232eb25032d1b85d70" - integrity sha512-m+WlI9TJ3J2uHI+W9Uc7zinE4CQLS2JC6AQYPJ0KHxaVE5lwPDLFleapPNfNWzYGr/30GV7oBzJMU+8+UQEsPA== - dependencies: - "@babel/runtime" "^7.12.5" - "@peculiar/webcrypto" "^1.4.0" - Base64 "1.1.0" - atob "^2.1.2" - broadcast-channel "~5.3.0" - btoa "^1.2.1" - core-js "^3.6.5" - cross-fetch "^3.1.5" - fast-text-encoding "^1.0.6" - js-cookie "^3.0.1" - jsonpath-plus "^6.0.1" - node-cache "^5.1.2" - p-cancelable "^2.0.0" - tiny-emitter "1.1.0" - webcrypto-shim "^0.1.5" - xhr2 "0.1.3" - "@okta/okta-react@^6.9.0": version "6.9.0" resolved "https://registry.yarnpkg.com/@okta/okta-react/-/okta-react-6.9.0.tgz#1efcd51386ea31e1b3fc9bb25da2eac6222cef5e" @@ -1883,32 +1854,6 @@ "@babel/runtime" "^7.11.2" compare-versions "^4.1.2" -"@okta/okta-signin-widget@^7.20.1": - version "7.20.1" - resolved "https://registry.yarnpkg.com/@okta/okta-signin-widget/-/okta-signin-widget-7.20.1.tgz#1aa6000aa6c0111239392cbb76ac9a3ac019e5f8" - integrity sha512-XyjuQBvDTlg4K7ko8xn6SqVh6NiR7X3XTrxd2GU84ZjiXFJxSR4eR7plYf2ANEk3T53T91wo1r5re3D/cqG4hA== - dependencies: - "@okta/okta-auth-js" "^7.7.0" - "@sindresorhus/to-milliseconds" "^1.0.0" - "@types/backbone" "^1.4.15" - "@types/eslint-scope" "^3.7.3" - "@types/jquery" "^3.5.14" - "@types/jqueryui" "^1.12.16" - "@types/q" "^1.5.5" - "@types/selectize" "^0.12.35" - "@types/underscore" "^1.11.4" - chokidar "^3.5.1" - clipboard "^1.5.16" - cross-fetch "^3.1.5" - handlebars "^4.7.7" - jquery "^3.6.0" - parse-ms "^2.0.0" - q "1.4.1" - u2f-api-polyfill "0.4.3" - underscore "1.13.1" - optionalDependencies: - fsevents "*" - "@opentelemetry/api@^1.6.0": version "1.6.0" resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.6.0.tgz#de2c6823203d6f319511898bb5de7e70f5267e19" @@ -1919,33 +1864,6 @@ resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.3.1.tgz#ba07b864a3c955f061aa30ea3ef7f4ae4449794a" integrity sha512-wU5J8rUoo32oSef/rFpOT1HIjLjAv3qIDHkw1QIhODV3OpAVHi5oVzlouozg9obUmZKtbZ0qUe/m7FP0y0yBzA== -"@peculiar/asn1-schema@^2.3.8": - version "2.3.8" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-schema/-/asn1-schema-2.3.8.tgz#04b38832a814e25731232dd5be883460a156da3b" - integrity sha512-ULB1XqHKx1WBU/tTFIA+uARuRoBVZ4pNdOA878RDrRbBfBGcSzi5HBkdScC6ZbHn8z7L8gmKCgPC1LHRrP46tA== - dependencies: - asn1js "^3.0.5" - pvtsutils "^1.3.5" - tslib "^2.6.2" - -"@peculiar/json-schema@^1.1.12": - version "1.1.12" - resolved "https://registry.yarnpkg.com/@peculiar/json-schema/-/json-schema-1.1.12.tgz#fe61e85259e3b5ba5ad566cb62ca75b3d3cd5339" - integrity sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w== - dependencies: - tslib "^2.0.0" - -"@peculiar/webcrypto@^1.4.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@peculiar/webcrypto/-/webcrypto-1.5.0.tgz#9e57174c02c1291051c553600347e12b81469e10" - integrity sha512-BRs5XUAwiyCDQMsVA9IDvDa7UBR9gAvPHgugOeGng3YN6vJ9JYonyDc0lNczErgtCWtucjR5N7VtaonboD/ezg== - dependencies: - "@peculiar/asn1-schema" "^2.3.8" - "@peculiar/json-schema" "^1.1.12" - pvtsutils "^1.3.5" - tslib "^2.6.2" - webcrypto-core "^1.8.0" - "@pkgjs/parseargs@^0.11.0": version "0.11.0" resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" @@ -2050,11 +1968,6 @@ resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== -"@sindresorhus/to-milliseconds@^1.0.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/to-milliseconds/-/to-milliseconds-1.2.0.tgz#3453e58b9cc973ccc98fe571dbb7a1d9737f06e7" - integrity sha512-nHpLEF6oRZJZ0ym8hmxz4jeSdnOqwWd5GC75GNQqNjfSG1IY55RE3AaGEC/QUDElLTuaPSBVa1rnV/C/rUkAUw== - "@sinonjs/commons@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.0.tgz#beb434fe875d965265e04722ccfc21df7f755d72" @@ -2159,14 +2072,6 @@ dependencies: "@babel/types" "^7.20.7" -"@types/backbone@^1.4.15": - version "1.4.19" - resolved "https://registry.yarnpkg.com/@types/backbone/-/backbone-1.4.19.tgz#f6e8406fed40ca3fe224f6e59115142b62be76d6" - integrity sha512-byyn236JymGByOajKA7mi1k+/jKn162TIvArOB4SHgOGbVlFj8CSfJH4jekP0qo0vJwW5khrrsiiO1Jsos6ZvA== - dependencies: - "@types/jquery" "*" - "@types/underscore" "*" - "@types/color-convert@*": version "2.0.1" resolved "https://registry.yarnpkg.com/@types/color-convert/-/color-convert-2.0.1.tgz#45216f0d8289c6ae32d139ed08c205a9c55bb5d0" @@ -2200,27 +2105,6 @@ dependencies: "@types/node" "*" -"@types/eslint-scope@^3.7.3": - version "3.7.7" - resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5" - integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== - dependencies: - "@types/eslint" "*" - "@types/estree" "*" - -"@types/eslint@*": - version "8.56.10" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.56.10.tgz#eb2370a73bf04a901eeba8f22595c7ee0f7eb58d" - integrity sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ== - dependencies: - "@types/estree" "*" - "@types/json-schema" "*" - -"@types/estree@*": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" - integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== - "@types/glob@*": version "8.1.0" resolved "https://registry.yarnpkg.com/@types/glob/-/glob-8.1.0.tgz#b63e70155391b0584dce44e7ea25190bbc38f2fc" @@ -2268,20 +2152,6 @@ jest-matcher-utils "^27.0.0" pretty-format "^27.0.0" -"@types/jquery@*", "@types/jquery@^3.5.14": - version "3.5.30" - resolved "https://registry.yarnpkg.com/@types/jquery/-/jquery-3.5.30.tgz#888d584cbf844d3df56834b69925085038fd80f7" - integrity sha512-nbWKkkyb919DOUxjmRVk8vwtDb0/k8FKncmUKFi+NY+QXqWltooxTrswvz4LspQwxvLdvzBN1TImr6cw3aQx2A== - dependencies: - "@types/sizzle" "*" - -"@types/jqueryui@^1.12.16": - version "1.12.23" - resolved "https://registry.yarnpkg.com/@types/jqueryui/-/jqueryui-1.12.23.tgz#06882d3fd91834f87c40320a0897b2d3fe17de35" - integrity sha512-pm1yVNVI29B9IGw41anCEzA5eR2r1pYc7flqD471ZT7B0yUXIY7YNe/zq7LGpihIGXNzWyG+Q4YQSzv2AF3fNA== - dependencies: - "@types/jquery" "*" - "@types/jsdom@^20.0.0": version "20.0.1" resolved "https://registry.yarnpkg.com/@types/jsdom/-/jsdom-20.0.1.tgz#07c14bc19bd2f918c1929541cdaacae894744808" @@ -2291,11 +2161,6 @@ "@types/tough-cookie" "*" parse5 "^7.0.0" -"@types/json-schema@*": - version "7.0.15" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" - integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== - "@types/json-schema@^7.0.12", "@types/json-schema@^7.0.6": version "7.0.13" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.13.tgz#02c24f4363176d2d18fc8b70b9f3c54aba178a85" @@ -2344,11 +2209,6 @@ resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.6.tgz#bbf819813d6be21011b8f5801058498bec555572" integrity sha512-RK/kBbYOQQHLYj9Z95eh7S6t7gq4Ojt/NT8HTk8bWVhA5DaF+5SMnxHKkP4gPNN3wAZkKP+VjAf0ebtYzf+fxg== -"@types/q@^1.5.5": - version "1.5.8" - resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.8.tgz#95f6c6a08f2ad868ba230ead1d2d7f7be3db3837" - integrity sha512-hroOstUScF6zhIi+5+x0dzqrHA1EJi+Irri6b1fxolMTqqHIV/Cg77EtnQcZqZCu8hR3mX2BzIxN4/GzI68Kfw== - "@types/react-dom@^18.0.0": version "18.2.7" resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.7.tgz#67222a08c0a6ae0a0da33c3532348277c70abb63" @@ -2402,21 +2262,11 @@ resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.3.tgz#cef09e3ec9af1d63d2a6cc5b383a737e24e6dcf5" integrity sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ== -"@types/selectize@^0.12.35": - version "0.12.39" - resolved "https://registry.yarnpkg.com/@types/selectize/-/selectize-0.12.39.tgz#cd35ad3a0adf0131cc4a614cef8571b76b89b507" - integrity sha512-ABnSEXM1MyO9ZZXl2yXLqzHcENuGh6kyXisnq87OQCubbJrMaargMYV/NPVmJA3lJGnDM6hzc1ce7yQM/RwI5g== - "@types/semver@^7.5.0": version "7.5.3" resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.3.tgz#9a726e116beb26c24f1ccd6850201e1246122e04" integrity sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw== -"@types/sizzle@*": - version "2.3.8" - resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.8.tgz#518609aefb797da19bf222feb199e8f653ff7627" - integrity sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg== - "@types/stack-utils@^2.0.0": version "2.0.1" resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" @@ -2437,11 +2287,6 @@ resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.4.tgz#2b38784cd16957d3782e8e2b31c03bc1d13b4d65" integrity sha512-IDaobHimLQhjwsQ/NMwRVfa/yL7L/wriQPMhw1ZJall0KX6E1oxk29XMDeilW5qTIg5aoiqf5Udy8U/51aNoQQ== -"@types/underscore@*", "@types/underscore@^1.11.4": - version "1.11.15" - resolved "https://registry.yarnpkg.com/@types/underscore/-/underscore-1.11.15.tgz#29c776daecf6f1935da9adda17509686bf979947" - integrity sha512-HP38xE+GuWGlbSRq9WrZkousaQ7dragtZCruBVMi0oX1migFZavZ3OROKHSkNp/9ouq82zrWtZpg18jFnVN96g== - "@types/yargs-parser@*": version "21.0.0" resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" @@ -2617,11 +2462,6 @@ "@typescript-eslint/types" "6.7.3" eslint-visitor-keys "^3.4.1" -Base64@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/Base64/-/Base64-1.1.0.tgz#810ef21afa8357df92ad7b5389188c446b9cb956" - integrity sha512-qeacf8dvGpf+XAT27ESHMh7z84uRzj/ua2pQdJg483m3bEXv/kVFtDnMgvf70BQGqzbZhR9t6BmASzKvqfJf3Q== - abab@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" @@ -2981,15 +2821,6 @@ asap@^2.0.0: resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== -asn1js@^3.0.1, asn1js@^3.0.5: - version "3.0.5" - resolved "https://registry.yarnpkg.com/asn1js/-/asn1js-3.0.5.tgz#5ea36820443dbefb51cc7f88a2ebb5b462114f38" - integrity sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ== - dependencies: - pvtsutils "^1.3.2" - pvutils "^1.1.3" - tslib "^2.4.0" - ast-types@^0.13.4: version "0.13.4" resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.4.tgz#ee0d77b343263965ecc3fb62da16e7222b2b6782" @@ -3026,11 +2857,6 @@ asynckit@^0.4.0: resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - available-typed-arrays@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" @@ -3265,16 +3091,6 @@ braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.1.1" -broadcast-channel@~5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/broadcast-channel/-/broadcast-channel-5.3.0.tgz#9d9e55fb8db2a1dbbe436ae6d51382a354e76fc3" - integrity sha512-0PmDYc/iUGZ4QbnCnV7u+WleygiS1bZ4oV6t4rANXYtSgEFtGhB5jimJPLOVpPtce61FVxrH8CYylfO5g7OLKw== - dependencies: - "@babel/runtime" "7.22.10" - oblivious-set "1.1.1" - p-queue "6.6.2" - unload "2.4.1" - browserslist@^4.21.9: version "4.21.10" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.10.tgz#dbbac576628c13d3b2231332cb2ec5a46e015bb0" @@ -3309,11 +3125,6 @@ bser@2.1.1: dependencies: node-int64 "^0.4.0" -btoa@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/btoa/-/btoa-1.2.1.tgz#01a9909f8b2c93f6bf680ba26131eb30f7fa3d73" - integrity sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g== - buffer-crc32@^0.2.1, buffer-crc32@^0.2.13: version "0.2.13" resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" @@ -3484,21 +3295,6 @@ chokidar@^3.0.2: optionalDependencies: fsevents "~2.3.2" -chokidar@^3.5.1: - version "3.6.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" - integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - chownr@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" @@ -3569,15 +3365,6 @@ cli-width@^3.0.0: resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== -clipboard@^1.5.16: - version "1.7.1" - resolved "https://registry.yarnpkg.com/clipboard/-/clipboard-1.7.1.tgz#360d6d6946e99a7a1fef395e42ba92b5e9b5a16b" - integrity sha512-smkaRaIQsrnKN1F3wd1/vY9Q+DeR4L8ZCXKeHCFC2j8RZuSBbuImcLdnIO4GTxmzJxQuDGNKkyfpGoPW7Ua5bQ== - dependencies: - good-listener "^1.2.2" - select "^1.1.2" - tiny-emitter "^2.0.0" - cliui@^8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" @@ -3587,11 +3374,6 @@ cliui@^8.0.1: strip-ansi "^6.0.1" wrap-ansi "^7.0.0" -clone@2.x: - version "2.1.2" - resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" - integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== - clone@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" @@ -3819,11 +3601,6 @@ core-js-compat@^3.31.0, core-js-compat@^3.33.1: dependencies: browserslist "^4.22.1" -core-js@^3.6.5: - version "3.37.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.37.1.tgz#d21751ddb756518ac5a00e4d66499df981a62db9" - integrity sha512-Xn6qmxrQZyB0FFY8E3bgRXei3lWDJHhvI+u0q9TKIYM49G8pAr0FgnnrFRAmsbptZL1yxRADVXn+x5AGsbBfyw== - core-util-is@~1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" @@ -3881,13 +3658,6 @@ cross-env@^5.1.3: dependencies: cross-spawn "^6.0.5" -cross-fetch@^3.1.5: - version "3.1.8" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.8.tgz#0327eba65fd68a7d119f8fb2bf9334a1a7956f82" - integrity sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg== - dependencies: - node-fetch "^2.6.12" - cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" @@ -4098,11 +3868,6 @@ delayed-stream@~1.0.0: resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== -delegate@^3.1.2: - version "3.2.0" - resolved "https://registry.yarnpkg.com/delegate/-/delegate-3.2.0.tgz#b66b71c3158522e8ab5744f720d8ca0c2af59166" - integrity sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw== - delegates@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" @@ -4611,11 +4376,6 @@ event-target-shim@^5.0.0: resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== -eventemitter3@^4.0.4: - version "4.0.7" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" - integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== - events-listener@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/events-listener/-/events-listener-1.1.0.tgz#dd49b4628480eba58fde31b870ee346b3990b349" @@ -4764,7 +4524,7 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== -fast-text-encoding@^1.0.0, fast-text-encoding@^1.0.3, fast-text-encoding@^1.0.6: +fast-text-encoding@^1.0.0, fast-text-encoding@^1.0.3: version "1.0.6" resolved "https://registry.yarnpkg.com/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz#0aa25f7f638222e3396d72bf936afcf1d42d6867" integrity sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w== @@ -5031,7 +4791,7 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== -fsevents@*, fsevents@^2.3.2, fsevents@~2.3.2: +fsevents@^2.3.2, fsevents@~2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== @@ -5281,13 +5041,6 @@ globby@^11.1.0: merge2 "^1.4.1" slash "^3.0.0" -good-listener@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/good-listener/-/good-listener-1.2.2.tgz#d53b30cdf9313dffb7dc9a0d477096aa6d145c50" - integrity sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw== - dependencies: - delegate "^3.1.2" - google-auth-library@^7.11.0: version "7.14.1" resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-7.14.1.tgz#e3483034162f24cc71b95c8a55a210008826213c" @@ -5400,18 +5153,6 @@ gtoken@^6.1.0: google-p12-pem "^4.0.0" jws "^4.0.0" -handlebars@^4.7.7: - version "4.7.8" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.8.tgz#41c42c18b1be2365439188c77c6afae71c0cd9e9" - integrity sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ== - dependencies: - minimist "^1.2.5" - neo-async "^2.6.2" - source-map "^0.6.1" - wordwrap "^1.0.0" - optionalDependencies: - uglify-js "^3.1.4" - harmony-reflect@^1.4.6: version "1.6.2" resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.2.tgz#31ecbd32e648a34d030d86adb67d4d47547fe710" @@ -6585,16 +6326,6 @@ jquery-extend@~2.0.3: resolved "https://registry.yarnpkg.com/jquery-extend/-/jquery-extend-2.0.3.tgz#6815cdb01a866ddba30e6f4d0fc5fb6679272735" integrity sha512-ysLU6/m8VLckIjAudiE+s7YAoYwklZy5Ft9kqO7FPkqaQrd3wUMuZ134G3uniysW8VZME/pGa2LcynsM4TjP5Q== -jquery@^3.6.0: - version "3.7.1" - resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.7.1.tgz#083ef98927c9a6a74d05a6af02806566d16274de" - integrity sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg== - -js-cookie@^3.0.1: - version "3.0.5" - resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-3.0.5.tgz#0b7e2fd0c01552c58ba86e0841f94dc2557dcdbc" - integrity sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw== - "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -6748,11 +6479,6 @@ jsonfile@^6.0.1: optionalDependencies: graceful-fs "^4.1.6" -jsonpath-plus@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/jsonpath-plus/-/jsonpath-plus-6.0.1.tgz#9a3e16cedadfab07a3d8dc4e8cd5df4ed8f49c4d" - integrity sha512-EvGovdvau6FyLexFH2OeXfIITlgIbgZoAZe3usiySeaIDm5QS+A10DKNpaPBBqqRSZr2HN6HVNXxtwUAr2apEw== - jsonwebtoken@^9.0.0: version "9.0.2" resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz#65ff91f4abef1784697d40952bb1998c504caaf3" @@ -7254,7 +6980,7 @@ minimatch@^9.0.1: dependencies: brace-expansion "^2.0.1" -minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: +minimist@^1.2.0, minimist@^1.2.6: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== @@ -7391,11 +7117,6 @@ negotiator@0.6.3, negotiator@^0.6.3: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== -neo-async@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" - integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== - netmask@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/netmask/-/netmask-2.0.2.tgz#8b01a07644065d536383835823bc52004ebac5e7" @@ -7406,13 +7127,6 @@ nice-try@^1.0.4: resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== -node-cache@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/node-cache/-/node-cache-5.1.2.tgz#f264dc2ccad0a780e76253a694e9fd0ed19c398d" - integrity sha512-t1QzWwnk4sjLWaQAS8CHgOJ+RAfmHpxFWmc36IWTiWHQfs0w5JDMBS1b1ZxQteo0vVVuWJvIUKHDkkeK7vIGCg== - dependencies: - clone "2.x" - node-emoji@^1.11.0: version "1.11.0" resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.11.0.tgz#69a0150e6946e2f115e9d7ea4df7971e2628301c" @@ -7420,7 +7134,7 @@ node-emoji@^1.11.0: dependencies: lodash "^4.17.21" -node-fetch@^2.6.1, node-fetch@^2.6.12, node-fetch@^2.6.7, node-fetch@^2.6.9: +node-fetch@^2.6.1, node-fetch@^2.6.7, node-fetch@^2.6.9: version "2.7.0" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== @@ -7614,11 +7328,6 @@ object.values@^1.1.6: define-properties "^1.2.0" es-abstract "^1.22.1" -oblivious-set@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/oblivious-set/-/oblivious-set-1.1.1.tgz#d9d38e9491d51f27a5c3ec1681d2ba40aa81e98b" - integrity sha512-Oh+8fK09mgGmAshFdH6hSVco6KZmd1tTwNFWj35OvzdmJTMZtAkbn05zar2iG3v6sDs1JLEtOiBGNb6BHwkb2w== - on-finished@2.4.1, on-finished@^2.2.0: version "2.4.1" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" @@ -7717,21 +7426,11 @@ os-tmpdir@~1.0.2: resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== -p-cancelable@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" - integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== - p-defer@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-3.0.0.tgz#d1dceb4ee9b2b604b1d94ffec83760175d4e6f83" integrity sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw== -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== - p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" @@ -7767,21 +7466,6 @@ p-map@^4.0.0: dependencies: aggregate-error "^3.0.0" -p-queue@6.6.2: - version "6.6.2" - resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-6.6.2.tgz#2068a9dcf8e67dd0ec3e7a2bcb76810faa85e426" - integrity sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ== - dependencies: - eventemitter3 "^4.0.4" - p-timeout "^3.2.0" - -p-timeout@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" - integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== - dependencies: - p-finally "^1.0.0" - p-try@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" @@ -7826,11 +7510,6 @@ parse-json@^5.0.0, parse-json@^5.2.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" -parse-ms@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-2.1.0.tgz#348565a753d4391fa524029956b172cb7753097d" - integrity sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA== - parse5@^7.0.0, parse5@^7.1.1: version "7.1.2" resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32" @@ -8123,23 +7802,6 @@ pure-rand@^6.0.0: resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.0.3.tgz#3c9e6b53c09e52ac3cedffc85ab7c1c7094b38cb" integrity sha512-KddyFewCsO0j3+np81IQ+SweXLDnDQTs5s67BOnrYmYe/yNmUhttQyGsYzy8yUnoljGAQ9sl38YB4vH8ur7Y+w== -pvtsutils@^1.3.2, pvtsutils@^1.3.5: - version "1.3.5" - resolved "https://registry.yarnpkg.com/pvtsutils/-/pvtsutils-1.3.5.tgz#b8705b437b7b134cd7fd858f025a23456f1ce910" - integrity sha512-ARvb14YB9Nm2Xi6nBq1ZX6dAM0FsJnuk+31aUp4TrcZEdKUlSqOqsxJHUPJDNE3qiIp+iUPEIeR6Je/tgV7zsA== - dependencies: - tslib "^2.6.1" - -pvutils@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/pvutils/-/pvutils-1.1.3.tgz#f35fc1d27e7cd3dfbd39c0826d173e806a03f5a3" - integrity sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ== - -q@1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e" - integrity sha512-/CdEdaw49VZVmyIDGUQKDDT53c7qBkO6g5CefWz91Ae+l4+cRtcDYwMTXh6me4O8TMldeGHG3N2Bl84V78Ywbg== - qs@6.11.0: version "6.11.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" @@ -8615,11 +8277,6 @@ scheduler@^0.23.0: dependencies: loose-envify "^1.1.0" -select@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/select/-/select-1.1.2.tgz#0e7350acdec80b1108528786ec1d4418d11b396d" - integrity sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA== - semver-diff@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b" @@ -9165,16 +8822,6 @@ through@^2.3.6: resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== -tiny-emitter@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-1.1.0.tgz#ab405a21ffed814a76c19739648093d70654fecb" - integrity sha512-HFhr+OKGIHRO6krgzEt9MqbMO98wPDzDPr1BOpM/nZCChkK40UYn8b70nSjcan4jTzDSQecy1KRVVQRohIRWrw== - -tiny-emitter@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz#1d1a56edfc51c43e863cbb5382a72330e3555423" - integrity sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q== - tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -9274,11 +8921,6 @@ tslib@^1.8.1: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.0.0, tslib@^2.4.0, tslib@^2.6.1, tslib@^2.6.2: - version "2.6.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0" - integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== - tslib@^2.0.1, tslib@^2.1.0: version "2.6.2" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" @@ -9384,21 +9026,11 @@ typescript@^5.0.3: resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.5.tgz#42ccef2c571fdbd0f6718b1d1f5e6e5ef006f611" integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ== -u2f-api-polyfill@0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/u2f-api-polyfill/-/u2f-api-polyfill-0.4.3.tgz#b7ad165a6f962558517a867c5c4bf9399fcf7e98" - integrity sha512-0DVykdzG3tKft2GciQCGzgO8BinDEfIhTBo7FKbLBmA+sVTPYmNOFbsZuduYQmnc3+ykUadTHNqXVqnvBfLCvg== - uc.micro@^1.0.1, uc.micro@^1.0.5: version "1.0.6" resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== -uglify-js@^3.1.4: - version "3.18.0" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.18.0.tgz#73b576a7e8fda63d2831e293aeead73e0a270deb" - integrity sha512-SyVVbcNBCk0dzr9XL/R/ySrmYf0s372K6/hFklzgcp2lBFyXtw4I7BOdDjlLhE1aVqaI/SHWXWmYdlZxuyF38A== - uglify-js@^3.7.7: version "3.17.4" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c" @@ -9414,11 +9046,6 @@ unbox-primitive@^1.0.2: has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" -underscore@1.13.1: - version "1.13.1" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.1.tgz#0c1c6bd2df54b6b69f2314066d65b6cde6fcf9d1" - integrity sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g== - underscore@~1.13.2: version "1.13.6" resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.6.tgz#04786a1f589dc6c09f761fc5f45b89e935136441" @@ -9486,11 +9113,6 @@ universalify@^2.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== -unload@2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/unload/-/unload-2.4.1.tgz#b0c5b7fb44e17fcbf50dcb8fb53929c59dd226a5" - integrity sha512-IViSAm8Z3sRBYA+9wc0fLQmU9Nrxb16rcDmIiR6Y9LJSZzI7QY5QsDhqPpKOjAn0O9/kfK1TfNEMMAGPTIraPw== - unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" @@ -9619,22 +9241,6 @@ wcwidth@^1.0.1: dependencies: defaults "^1.0.3" -webcrypto-core@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/webcrypto-core/-/webcrypto-core-1.8.0.tgz#aaea17f3dd9c77c304e3c494eb27ca07cc72ca37" - integrity sha512-kR1UQNH8MD42CYuLzvibfakG5Ew5seG85dMMoAM/1LqvckxaF6pUiidLuraIu4V+YCIFabYecUZAW0TuxAoaqw== - dependencies: - "@peculiar/asn1-schema" "^2.3.8" - "@peculiar/json-schema" "^1.1.12" - asn1js "^3.0.1" - pvtsutils "^1.3.5" - tslib "^2.6.2" - -webcrypto-shim@^0.1.5: - version "0.1.7" - resolved "https://registry.yarnpkg.com/webcrypto-shim/-/webcrypto-shim-0.1.7.tgz#da8be23061a0451cf23b424d4a9b61c10f091c12" - integrity sha512-JAvAQR5mRNRxZW2jKigWMjCMkjSdmP5cColRP1U/pTg69VgHXEi1orv5vVpJ55Zc5MIaPc1aaurzd9pjv2bveg== - webidl-conversions@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" @@ -9787,11 +9393,6 @@ word-wrap@~1.2.3: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== -wordwrap@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== - "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" @@ -9866,11 +9467,6 @@ xdg-basedir@^4.0.0: resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== -xhr2@0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/xhr2/-/xhr2-0.1.3.tgz#cbfc4759a69b4a888e78cf4f20b051038757bd11" - integrity sha512-6RmGK22QwC7yXB1CRwyLWuS2opPcKOlAu0ViAnyZjDlzrEmCKL4kLHkfvB8oMRWeztMsNoDGAjsMZY15w/4tTw== - xml-name-validator@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835" From 48515b5962d99d4a427b91c49e56e1eb6545f8ea Mon Sep 17 00:00:00 2001 From: Suraj Karambe Date: Thu, 25 Jul 2024 02:58:29 +0530 Subject: [PATCH 20/90] Added @okta/okta-auth-js to dependencies --- login-workflow/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/login-workflow/package.json b/login-workflow/package.json index e5638f28..a294bae0 100644 --- a/login-workflow/package.json +++ b/login-workflow/package.json @@ -26,6 +26,7 @@ }, "prettier": "@brightlayer-ui/prettier-config", "dependencies": { + "@okta/okta-auth-js": "^7.7.0", "@okta/okta-react": "^6.9.0", "dompurify": "^2.2.9", "i18next-browser-languagedetector": "^8.0.0" From 22a6aa33917f58c7fabb3fb1be5a585347047b12 Mon Sep 17 00:00:00 2001 From: shubham-eaton Date: Thu, 25 Jul 2024 11:31:48 +0530 Subject: [PATCH 21/90] yarn.lock updated --- login-workflow/yarn.lock | 211 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 209 insertions(+), 2 deletions(-) diff --git a/login-workflow/yarn.lock b/login-workflow/yarn.lock index 5350dd49..6daa83a6 100644 --- a/login-workflow/yarn.lock +++ b/login-workflow/yarn.lock @@ -1046,6 +1046,13 @@ resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== +"@babel/runtime@7.22.10": + version "7.22.10" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.10.tgz#ae3e9631fd947cb7e3610d3e9d8fef5f76696682" + integrity sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ== + dependencies: + regenerator-runtime "^0.14.0" + "@babel/runtime@^7.11.2": version "7.24.8" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.8.tgz#5d958c3827b13cc6d05e038c07fb2e5e3420d82e" @@ -1846,6 +1853,28 @@ dependencies: semver "^7.3.5" +"@okta/okta-auth-js@^7.7.0": + version "7.7.0" + resolved "https://registry.yarnpkg.com/@okta/okta-auth-js/-/okta-auth-js-7.7.0.tgz#daac09294316a69d996a33232eb25032d1b85d70" + integrity sha512-m+WlI9TJ3J2uHI+W9Uc7zinE4CQLS2JC6AQYPJ0KHxaVE5lwPDLFleapPNfNWzYGr/30GV7oBzJMU+8+UQEsPA== + dependencies: + "@babel/runtime" "^7.12.5" + "@peculiar/webcrypto" "^1.4.0" + Base64 "1.1.0" + atob "^2.1.2" + broadcast-channel "~5.3.0" + btoa "^1.2.1" + core-js "^3.6.5" + cross-fetch "^3.1.5" + fast-text-encoding "^1.0.6" + js-cookie "^3.0.1" + jsonpath-plus "^6.0.1" + node-cache "^5.1.2" + p-cancelable "^2.0.0" + tiny-emitter "1.1.0" + webcrypto-shim "^0.1.5" + xhr2 "0.1.3" + "@okta/okta-react@^6.9.0": version "6.9.0" resolved "https://registry.yarnpkg.com/@okta/okta-react/-/okta-react-6.9.0.tgz#1efcd51386ea31e1b3fc9bb25da2eac6222cef5e" @@ -1864,6 +1893,33 @@ resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.3.1.tgz#ba07b864a3c955f061aa30ea3ef7f4ae4449794a" integrity sha512-wU5J8rUoo32oSef/rFpOT1HIjLjAv3qIDHkw1QIhODV3OpAVHi5oVzlouozg9obUmZKtbZ0qUe/m7FP0y0yBzA== +"@peculiar/asn1-schema@^2.3.8": + version "2.3.8" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-schema/-/asn1-schema-2.3.8.tgz#04b38832a814e25731232dd5be883460a156da3b" + integrity sha512-ULB1XqHKx1WBU/tTFIA+uARuRoBVZ4pNdOA878RDrRbBfBGcSzi5HBkdScC6ZbHn8z7L8gmKCgPC1LHRrP46tA== + dependencies: + asn1js "^3.0.5" + pvtsutils "^1.3.5" + tslib "^2.6.2" + +"@peculiar/json-schema@^1.1.12": + version "1.1.12" + resolved "https://registry.yarnpkg.com/@peculiar/json-schema/-/json-schema-1.1.12.tgz#fe61e85259e3b5ba5ad566cb62ca75b3d3cd5339" + integrity sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w== + dependencies: + tslib "^2.0.0" + +"@peculiar/webcrypto@^1.4.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@peculiar/webcrypto/-/webcrypto-1.5.0.tgz#9e57174c02c1291051c553600347e12b81469e10" + integrity sha512-BRs5XUAwiyCDQMsVA9IDvDa7UBR9gAvPHgugOeGng3YN6vJ9JYonyDc0lNczErgtCWtucjR5N7VtaonboD/ezg== + dependencies: + "@peculiar/asn1-schema" "^2.3.8" + "@peculiar/json-schema" "^1.1.12" + pvtsutils "^1.3.5" + tslib "^2.6.2" + webcrypto-core "^1.8.0" + "@pkgjs/parseargs@^0.11.0": version "0.11.0" resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" @@ -2462,6 +2518,11 @@ "@typescript-eslint/types" "6.7.3" eslint-visitor-keys "^3.4.1" +Base64@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/Base64/-/Base64-1.1.0.tgz#810ef21afa8357df92ad7b5389188c446b9cb956" + integrity sha512-qeacf8dvGpf+XAT27ESHMh7z84uRzj/ua2pQdJg483m3bEXv/kVFtDnMgvf70BQGqzbZhR9t6BmASzKvqfJf3Q== + abab@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" @@ -2821,6 +2882,15 @@ asap@^2.0.0: resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== +asn1js@^3.0.1, asn1js@^3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/asn1js/-/asn1js-3.0.5.tgz#5ea36820443dbefb51cc7f88a2ebb5b462114f38" + integrity sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ== + dependencies: + pvtsutils "^1.3.2" + pvutils "^1.1.3" + tslib "^2.4.0" + ast-types@^0.13.4: version "0.13.4" resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.4.tgz#ee0d77b343263965ecc3fb62da16e7222b2b6782" @@ -2857,6 +2927,11 @@ asynckit@^0.4.0: resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + available-typed-arrays@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" @@ -3091,6 +3166,16 @@ braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.1.1" +broadcast-channel@~5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/broadcast-channel/-/broadcast-channel-5.3.0.tgz#9d9e55fb8db2a1dbbe436ae6d51382a354e76fc3" + integrity sha512-0PmDYc/iUGZ4QbnCnV7u+WleygiS1bZ4oV6t4rANXYtSgEFtGhB5jimJPLOVpPtce61FVxrH8CYylfO5g7OLKw== + dependencies: + "@babel/runtime" "7.22.10" + oblivious-set "1.1.1" + p-queue "6.6.2" + unload "2.4.1" + browserslist@^4.21.9: version "4.21.10" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.10.tgz#dbbac576628c13d3b2231332cb2ec5a46e015bb0" @@ -3125,6 +3210,11 @@ bser@2.1.1: dependencies: node-int64 "^0.4.0" +btoa@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/btoa/-/btoa-1.2.1.tgz#01a9909f8b2c93f6bf680ba26131eb30f7fa3d73" + integrity sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g== + buffer-crc32@^0.2.1, buffer-crc32@^0.2.13: version "0.2.13" resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" @@ -3374,6 +3464,11 @@ cliui@^8.0.1: strip-ansi "^6.0.1" wrap-ansi "^7.0.0" +clone@2.x: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== + clone@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" @@ -3601,6 +3696,11 @@ core-js-compat@^3.31.0, core-js-compat@^3.33.1: dependencies: browserslist "^4.22.1" +core-js@^3.6.5: + version "3.37.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.37.1.tgz#d21751ddb756518ac5a00e4d66499df981a62db9" + integrity sha512-Xn6qmxrQZyB0FFY8E3bgRXei3lWDJHhvI+u0q9TKIYM49G8pAr0FgnnrFRAmsbptZL1yxRADVXn+x5AGsbBfyw== + core-util-is@~1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" @@ -3658,6 +3758,13 @@ cross-env@^5.1.3: dependencies: cross-spawn "^6.0.5" +cross-fetch@^3.1.5: + version "3.1.8" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.8.tgz#0327eba65fd68a7d119f8fb2bf9334a1a7956f82" + integrity sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg== + dependencies: + node-fetch "^2.6.12" + cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" @@ -4376,6 +4483,11 @@ event-target-shim@^5.0.0: resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== +eventemitter3@^4.0.4: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + events-listener@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/events-listener/-/events-listener-1.1.0.tgz#dd49b4628480eba58fde31b870ee346b3990b349" @@ -4524,7 +4636,7 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== -fast-text-encoding@^1.0.0, fast-text-encoding@^1.0.3: +fast-text-encoding@^1.0.0, fast-text-encoding@^1.0.3, fast-text-encoding@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz#0aa25f7f638222e3396d72bf936afcf1d42d6867" integrity sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w== @@ -6326,6 +6438,11 @@ jquery-extend@~2.0.3: resolved "https://registry.yarnpkg.com/jquery-extend/-/jquery-extend-2.0.3.tgz#6815cdb01a866ddba30e6f4d0fc5fb6679272735" integrity sha512-ysLU6/m8VLckIjAudiE+s7YAoYwklZy5Ft9kqO7FPkqaQrd3wUMuZ134G3uniysW8VZME/pGa2LcynsM4TjP5Q== +js-cookie@^3.0.1: + version "3.0.5" + resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-3.0.5.tgz#0b7e2fd0c01552c58ba86e0841f94dc2557dcdbc" + integrity sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw== + "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -6479,6 +6596,11 @@ jsonfile@^6.0.1: optionalDependencies: graceful-fs "^4.1.6" +jsonpath-plus@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/jsonpath-plus/-/jsonpath-plus-6.0.1.tgz#9a3e16cedadfab07a3d8dc4e8cd5df4ed8f49c4d" + integrity sha512-EvGovdvau6FyLexFH2OeXfIITlgIbgZoAZe3usiySeaIDm5QS+A10DKNpaPBBqqRSZr2HN6HVNXxtwUAr2apEw== + jsonwebtoken@^9.0.0: version "9.0.2" resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz#65ff91f4abef1784697d40952bb1998c504caaf3" @@ -7127,6 +7249,13 @@ nice-try@^1.0.4: resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== +node-cache@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/node-cache/-/node-cache-5.1.2.tgz#f264dc2ccad0a780e76253a694e9fd0ed19c398d" + integrity sha512-t1QzWwnk4sjLWaQAS8CHgOJ+RAfmHpxFWmc36IWTiWHQfs0w5JDMBS1b1ZxQteo0vVVuWJvIUKHDkkeK7vIGCg== + dependencies: + clone "2.x" + node-emoji@^1.11.0: version "1.11.0" resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.11.0.tgz#69a0150e6946e2f115e9d7ea4df7971e2628301c" @@ -7134,7 +7263,7 @@ node-emoji@^1.11.0: dependencies: lodash "^4.17.21" -node-fetch@^2.6.1, node-fetch@^2.6.7, node-fetch@^2.6.9: +node-fetch@^2.6.1, node-fetch@^2.6.12, node-fetch@^2.6.7, node-fetch@^2.6.9: version "2.7.0" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== @@ -7328,6 +7457,11 @@ object.values@^1.1.6: define-properties "^1.2.0" es-abstract "^1.22.1" +oblivious-set@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/oblivious-set/-/oblivious-set-1.1.1.tgz#d9d38e9491d51f27a5c3ec1681d2ba40aa81e98b" + integrity sha512-Oh+8fK09mgGmAshFdH6hSVco6KZmd1tTwNFWj35OvzdmJTMZtAkbn05zar2iG3v6sDs1JLEtOiBGNb6BHwkb2w== + on-finished@2.4.1, on-finished@^2.2.0: version "2.4.1" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" @@ -7426,11 +7560,21 @@ os-tmpdir@~1.0.2: resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== +p-cancelable@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" + integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== + p-defer@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-3.0.0.tgz#d1dceb4ee9b2b604b1d94ffec83760175d4e6f83" integrity sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw== +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== + p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" @@ -7466,6 +7610,21 @@ p-map@^4.0.0: dependencies: aggregate-error "^3.0.0" +p-queue@6.6.2: + version "6.6.2" + resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-6.6.2.tgz#2068a9dcf8e67dd0ec3e7a2bcb76810faa85e426" + integrity sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ== + dependencies: + eventemitter3 "^4.0.4" + p-timeout "^3.2.0" + +p-timeout@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" + integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== + dependencies: + p-finally "^1.0.0" + p-try@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" @@ -7802,6 +7961,18 @@ pure-rand@^6.0.0: resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.0.3.tgz#3c9e6b53c09e52ac3cedffc85ab7c1c7094b38cb" integrity sha512-KddyFewCsO0j3+np81IQ+SweXLDnDQTs5s67BOnrYmYe/yNmUhttQyGsYzy8yUnoljGAQ9sl38YB4vH8ur7Y+w== +pvtsutils@^1.3.2, pvtsutils@^1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/pvtsutils/-/pvtsutils-1.3.5.tgz#b8705b437b7b134cd7fd858f025a23456f1ce910" + integrity sha512-ARvb14YB9Nm2Xi6nBq1ZX6dAM0FsJnuk+31aUp4TrcZEdKUlSqOqsxJHUPJDNE3qiIp+iUPEIeR6Je/tgV7zsA== + dependencies: + tslib "^2.6.1" + +pvutils@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/pvutils/-/pvutils-1.1.3.tgz#f35fc1d27e7cd3dfbd39c0826d173e806a03f5a3" + integrity sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ== + qs@6.11.0: version "6.11.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" @@ -8822,6 +8993,11 @@ through@^2.3.6: resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== +tiny-emitter@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-1.1.0.tgz#ab405a21ffed814a76c19739648093d70654fecb" + integrity sha512-HFhr+OKGIHRO6krgzEt9MqbMO98wPDzDPr1BOpM/nZCChkK40UYn8b70nSjcan4jTzDSQecy1KRVVQRohIRWrw== + tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -8921,6 +9097,11 @@ tslib@^1.8.1: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== +tslib@^2.0.0, tslib@^2.4.0, tslib@^2.6.1, tslib@^2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0" + integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== + tslib@^2.0.1, tslib@^2.1.0: version "2.6.2" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" @@ -9113,6 +9294,11 @@ universalify@^2.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== +unload@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/unload/-/unload-2.4.1.tgz#b0c5b7fb44e17fcbf50dcb8fb53929c59dd226a5" + integrity sha512-IViSAm8Z3sRBYA+9wc0fLQmU9Nrxb16rcDmIiR6Y9LJSZzI7QY5QsDhqPpKOjAn0O9/kfK1TfNEMMAGPTIraPw== + unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" @@ -9241,6 +9427,22 @@ wcwidth@^1.0.1: dependencies: defaults "^1.0.3" +webcrypto-core@^1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/webcrypto-core/-/webcrypto-core-1.8.0.tgz#aaea17f3dd9c77c304e3c494eb27ca07cc72ca37" + integrity sha512-kR1UQNH8MD42CYuLzvibfakG5Ew5seG85dMMoAM/1LqvckxaF6pUiidLuraIu4V+YCIFabYecUZAW0TuxAoaqw== + dependencies: + "@peculiar/asn1-schema" "^2.3.8" + "@peculiar/json-schema" "^1.1.12" + asn1js "^3.0.1" + pvtsutils "^1.3.5" + tslib "^2.6.2" + +webcrypto-shim@^0.1.5: + version "0.1.7" + resolved "https://registry.yarnpkg.com/webcrypto-shim/-/webcrypto-shim-0.1.7.tgz#da8be23061a0451cf23b424d4a9b61c10f091c12" + integrity sha512-JAvAQR5mRNRxZW2jKigWMjCMkjSdmP5cColRP1U/pTg69VgHXEi1orv5vVpJ55Zc5MIaPc1aaurzd9pjv2bveg== + webidl-conversions@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" @@ -9467,6 +9669,11 @@ xdg-basedir@^4.0.0: resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== +xhr2@0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/xhr2/-/xhr2-0.1.3.tgz#cbfc4759a69b4a888e78cf4f20b051038757bd11" + integrity sha512-6RmGK22QwC7yXB1CRwyLWuS2opPcKOlAu0ViAnyZjDlzrEmCKL4kLHkfvB8oMRWeztMsNoDGAjsMZY15w/4tTw== + xml-name-validator@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835" From bbc9b3f6482b2ca0a33709e8d4f5504a0a82146c Mon Sep 17 00:00:00 2001 From: shubham-eaton Date: Thu, 25 Jul 2024 13:04:37 +0530 Subject: [PATCH 22/90] Version updated for package and changeLog added --- login-workflow/CHANGELOG.md | 7 +++++++ login-workflow/package.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/login-workflow/CHANGELOG.md b/login-workflow/CHANGELOG.md index b00fc9eb..0f645e88 100644 --- a/login-workflow/CHANGELOG.md +++ b/login-workflow/CHANGELOG.md @@ -5,6 +5,13 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## v4.1.0 (Unreleased) + +### Added + +- `OktaLoginScreenBase` screen. + ## v4.0.3 (May 9, 2024) ### Fixed diff --git a/login-workflow/package.json b/login-workflow/package.json index a294bae0..8f19286c 100644 --- a/login-workflow/package.json +++ b/login-workflow/package.json @@ -1,6 +1,6 @@ { "name": "@brightlayer-ui/react-auth-workflow", - "version": "4.0.3", + "version": "4.1.0", "author": "Brightlayer UI (https://github.com/brightlayer-ui)", "license": "BSD-3-Clause", "description": "Re-usable workflow components for Authentication and Registration within Eaton applications.", From 048d109ca71694b3b4617447ee59aa0ff1bc34fc Mon Sep 17 00:00:00 2001 From: ektaghag-eaton Date: Thu, 25 Jul 2024 19:56:44 +0530 Subject: [PATCH 23/90] revert package version --- login-workflow/CHANGELOG.md | 7 ------- login-workflow/package.json | 2 +- 2 files changed, 1 insertion(+), 8 deletions(-) diff --git a/login-workflow/CHANGELOG.md b/login-workflow/CHANGELOG.md index 0f645e88..b00fc9eb 100644 --- a/login-workflow/CHANGELOG.md +++ b/login-workflow/CHANGELOG.md @@ -5,13 +5,6 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## v4.1.0 (Unreleased) - -### Added - -- `OktaLoginScreenBase` screen. - ## v4.0.3 (May 9, 2024) ### Fixed diff --git a/login-workflow/package.json b/login-workflow/package.json index 8f19286c..a294bae0 100644 --- a/login-workflow/package.json +++ b/login-workflow/package.json @@ -1,6 +1,6 @@ { "name": "@brightlayer-ui/react-auth-workflow", - "version": "4.1.0", + "version": "4.0.3", "author": "Brightlayer UI (https://github.com/brightlayer-ui)", "license": "BSD-3-Clause", "description": "Re-usable workflow components for Authentication and Registration within Eaton applications.", From bf14b76e7e47dc5a6513b2d74205eef0e4815f85 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 25 Jul 2024 15:06:28 +0000 Subject: [PATCH 24/90] Bump ws from 7.5.9 to 7.5.10 in /login-workflow Bumps [ws](https://github.com/websockets/ws) from 7.5.9 to 7.5.10. - [Release notes](https://github.com/websockets/ws/releases) - [Commits](https://github.com/websockets/ws/compare/7.5.9...7.5.10) --- updated-dependencies: - dependency-name: ws dependency-type: indirect ... Signed-off-by: dependabot[bot] --- login-workflow/yarn.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/login-workflow/yarn.lock b/login-workflow/yarn.lock index 6daa83a6..f177bd70 100644 --- a/login-workflow/yarn.lock +++ b/login-workflow/yarn.lock @@ -9655,14 +9655,14 @@ write-file-atomic@^4.0.1, write-file-atomic@^4.0.2: signal-exit "^3.0.7" ws@^7.2.3: - version "7.5.9" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" - integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== + version "7.5.10" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" + integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== ws@^8.11.0: - version "8.14.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.14.2.tgz#6c249a806eb2db7a20d26d51e7709eab7b2e6c7f" - integrity sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g== + version "8.18.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc" + integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== xdg-basedir@^4.0.0: version "4.0.0" From c5b617cc431902df4d95c282e79584a5be614b1d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 25 Jul 2024 15:06:34 +0000 Subject: [PATCH 25/90] Bump braces from 3.0.2 to 3.0.3 in /login-workflow/example Bumps [braces](https://github.com/micromatch/braces) from 3.0.2 to 3.0.3. - [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md) - [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3) --- updated-dependencies: - dependency-name: braces dependency-type: indirect ... Signed-off-by: dependabot[bot] --- login-workflow/example/yarn.lock | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/login-workflow/example/yarn.lock b/login-workflow/example/yarn.lock index 3c940c2c..2bbcba3f 100644 --- a/login-workflow/example/yarn.lock +++ b/login-workflow/example/yarn.lock @@ -3626,11 +3626,11 @@ brace-expansion@^2.0.1: balanced-match "^1.0.0" braces@^3.0.2, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== dependencies: - fill-range "^7.0.1" + fill-range "^7.1.1" browser-process-hrtime@^1.0.0: version "1.0.0" @@ -5242,10 +5242,10 @@ filesize@^8.0.6: resolved "https://registry.yarnpkg.com/filesize/-/filesize-8.0.7.tgz#695e70d80f4e47012c132d57a059e80c6b580bd8" integrity sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ== -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== dependencies: to-regex-range "^5.0.1" From 6bb8ae1720debcd338674669f54cde685c68ed9e Mon Sep 17 00:00:00 2001 From: Suraj Karambe Date: Fri, 26 Jul 2024 00:52:54 +0530 Subject: [PATCH 26/90] Added tests for okta login base screen --- .../OktaLoginScreenBase.test.tsx | 55 +++++++++++++++++++ .../src/screens/OktaLoginScreen/types.ts | 2 +- 2 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 login-workflow/src/screens/OktaLoginScreen/OktaLoginScreenBase.test.tsx diff --git a/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreenBase.test.tsx b/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreenBase.test.tsx new file mode 100644 index 00000000..921d3186 --- /dev/null +++ b/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreenBase.test.tsx @@ -0,0 +1,55 @@ +import React from 'react'; +import { render, screen, fireEvent, RenderResult } from '@testing-library/react'; +import '@testing-library/jest-dom'; +import { OktaLoginScreenBase } from './OktaLoginScreenBase'; +import { useOktaAuth } from '@okta/okta-react'; +import { Box } from '@mui/material'; +import { ErrorContextProvider } from '../../contexts/ErrorContext'; +import { OktaLoginScreenProps } from './types'; +import { errorContextProviderProps } from '../../contexts/ErrorContext/ErrorContextProvider.test'; + +jest.mock('@okta/okta-react', () => ({ + useOktaAuth: jest.fn(), +})); + +const mockSignInWithRedirect = jest.fn(); +const mockOnContactSupport = jest.fn(); + +describe('OktaLoginScreenBase', () => { + beforeEach(() => { + (useOktaAuth as jest.Mock).mockReturnValue({ + authState: { isAuthenticated: false }, + oktaAuth: { signInWithRedirect: mockSignInWithRedirect }, + }); + }); + + const renderer = (props?: OktaLoginScreenProps): RenderResult => + render( + + + + ); + + it('renders correctly', () => { + renderer({ header: Test Header }); + expect(screen.getByText('Test Header')).toBeInTheDocument(); + }); + + it('calls signInWithRedirect on login button click', () => { + renderer({ loginButtonLabel: 'Login' }); + const loginButton = screen.getByText('Login'); + fireEvent.click(loginButton); + expect(mockSignInWithRedirect).toHaveBeenCalled(); + }); + + it('calls onContactSupport on contact support link click', () => { + renderer({ + showContactSupport: true, + contactSupportLabel: 'Contact Support', + onContactSupport: mockOnContactSupport, + }); + const contactSupportLink = screen.getByText('Contact Support'); + fireEvent.click(contactSupportLink); + expect(mockOnContactSupport).toHaveBeenCalled(); + }); +}); diff --git a/login-workflow/src/screens/OktaLoginScreen/types.ts b/login-workflow/src/screens/OktaLoginScreen/types.ts index 2e357304..db97e18d 100644 --- a/login-workflow/src/screens/OktaLoginScreen/types.ts +++ b/login-workflow/src/screens/OktaLoginScreen/types.ts @@ -6,7 +6,7 @@ export type OktaLoginScreenProps = WorkflowCardBaseProps & { /** * Options for configuring the Okta Auth SDK. */ - oktaAuthOptions: OktaAuthOptions; + oktaAuthOptions?: OktaAuthOptions; /** * The label for the username field From f4f2ce5c1cc88ccc4fd58e426526830282d4b885 Mon Sep 17 00:00:00 2001 From: jeffgreiner-eaton Date: Thu, 25 Jul 2024 15:50:49 -0400 Subject: [PATCH 27/90] clean up mocks after each --- .../src/screens/OktaLoginScreen/OktaLoginScreenBase.test.tsx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreenBase.test.tsx b/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreenBase.test.tsx index 921d3186..1d0f7f3b 100644 --- a/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreenBase.test.tsx +++ b/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreenBase.test.tsx @@ -16,6 +16,9 @@ const mockSignInWithRedirect = jest.fn(); const mockOnContactSupport = jest.fn(); describe('OktaLoginScreenBase', () => { + afterEach(() => { + jest.clearAllMocks(); + }); beforeEach(() => { (useOktaAuth as jest.Mock).mockReturnValue({ authState: { isAuthenticated: false }, From c268125b4ea5fd3716f206913186398e2845263f Mon Sep 17 00:00:00 2001 From: shubham-eaton Date: Fri, 26 Jul 2024 15:09:03 +0530 Subject: [PATCH 28/90] Okta configuration added --- login-workflow/example/src/oktaConfig.ts | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 login-workflow/example/src/oktaConfig.ts diff --git a/login-workflow/example/src/oktaConfig.ts b/login-workflow/example/src/oktaConfig.ts new file mode 100644 index 00000000..9ea2a5a1 --- /dev/null +++ b/login-workflow/example/src/oktaConfig.ts @@ -0,0 +1,13 @@ +const CLIENT_ID = process.env.REACT_APP_OKTA_APPLICATION_ID; +const ISSUER = process.env.REACT_APP_OKTA_ISSUER_URL; +const OKTA_TESTING_DISABLEHTTPSCHECK = process.env.REACT_APP_OKTA_TESTING_DISABLEHTTPSCHECK || false; +const REDIRECT_URI = `${window.location.origin}/login/callback`; + +export default { + clientId: CLIENT_ID, + issuer: ISSUER, + redirectUri: REDIRECT_URI, + // The scopes associated with access tokens determine which claims are available when they are used to access the OIDC + scopes: ['openid', 'profile', 'email', 'groups'], + disableHttpsCheck: OKTA_TESTING_DISABLEHTTPSCHECK, +}; From 236e03e316a9b5e40f88235b75735bd4c7827481 Mon Sep 17 00:00:00 2001 From: Suraj Karambe Date: Fri, 26 Jul 2024 18:24:14 +0530 Subject: [PATCH 29/90] Added onLogin prop to okta login screen --- .../OktaLoginScreenBase.test.tsx | 11 ++--------- .../OktaLoginScreen/OktaLoginScreenBase.tsx | 18 +++--------------- .../src/screens/OktaLoginScreen/types.ts | 6 ++++++ 3 files changed, 11 insertions(+), 24 deletions(-) diff --git a/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreenBase.test.tsx b/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreenBase.test.tsx index 1d0f7f3b..e5c64caf 100644 --- a/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreenBase.test.tsx +++ b/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreenBase.test.tsx @@ -4,9 +4,7 @@ import '@testing-library/jest-dom'; import { OktaLoginScreenBase } from './OktaLoginScreenBase'; import { useOktaAuth } from '@okta/okta-react'; import { Box } from '@mui/material'; -import { ErrorContextProvider } from '../../contexts/ErrorContext'; import { OktaLoginScreenProps } from './types'; -import { errorContextProviderProps } from '../../contexts/ErrorContext/ErrorContextProvider.test'; jest.mock('@okta/okta-react', () => ({ useOktaAuth: jest.fn(), @@ -26,12 +24,7 @@ describe('OktaLoginScreenBase', () => { }); }); - const renderer = (props?: OktaLoginScreenProps): RenderResult => - render( - - - - ); + const renderer = (props?: OktaLoginScreenProps): RenderResult => render(); it('renders correctly', () => { renderer({ header: Test Header }); @@ -39,7 +32,7 @@ describe('OktaLoginScreenBase', () => { }); it('calls signInWithRedirect on login button click', () => { - renderer({ loginButtonLabel: 'Login' }); + renderer({ loginButtonLabel: 'Login', onLogin: mockSignInWithRedirect }); const loginButton = screen.getByText('Login'); fireEvent.click(loginButton); expect(mockSignInWithRedirect).toHaveBeenCalled(); diff --git a/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreenBase.tsx b/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreenBase.tsx index 024b9a4d..6693440d 100644 --- a/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreenBase.tsx +++ b/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreenBase.tsx @@ -1,5 +1,4 @@ import React from 'react'; -import { useOktaAuth } from '@okta/okta-react'; import { OktaLoginScreenProps } from './types'; import { WorkflowCard } from '../../components/WorkflowCard'; import { WorkflowCardBody } from '../../components/WorkflowCard/WorkflowCardBody'; @@ -7,7 +6,6 @@ import { Box, Button, Typography } from '@mui/material'; import ErrorManager from '../../components/Error/ErrorManager'; import { LinkStyles } from '../../styles'; import cyberSecurityBadge from '../../assets/images/cybersecurity_certified.png'; -import { useErrorManager } from '../../contexts/ErrorContext/useErrorManager'; import { unstable_composeClasses as composeClasses } from '@mui/base'; import { getOktaLoginScreenUtilityClass, OktaLoginScreenClassKey } from './utilityClasses'; @@ -36,8 +34,6 @@ const useUtilityClasses = (ownerState: OktaLoginScreenProps): Record = (props) => { - const { authState, oktaAuth } = useOktaAuth(); - const { triggerError } = useErrorManager(); const defaultClasses = useUtilityClasses(props); const { @@ -45,6 +41,7 @@ export const OktaLoginScreenBase: React.FC = (props) => { projectImage, errorDisplayConfig, loginButtonLabel, + onLogin, showContactSupport, showCyberSecurityBadge, contactSupportLabel, @@ -54,11 +51,7 @@ export const OktaLoginScreenBase: React.FC = (props) => { } = props; const handleOnLogin = async (): Promise => { - try { - await oktaAuth.signInWithRedirect(); - } catch (_error) { - triggerError(_error as Error); - } + if (onLogin) await onLogin(); }; const handleContactSupport = (): void => { @@ -66,12 +59,7 @@ export const OktaLoginScreenBase: React.FC = (props) => { }; return ( - + | void + */ + onLogin?: () => Promise | void; + /** * whether or not to show the 'contact support' link */ From 9552c20071f0eb7ec4476e750f32c1343b18eb48 Mon Sep 17 00:00:00 2001 From: Suraj Karambe Date: Mon, 29 Jul 2024 15:01:11 +0530 Subject: [PATCH 30/90] Added okta login full screen --- .../contexts/SharedDictionaries/chinese.ts | 1 + .../contexts/SharedDictionaries/english.ts | 1 + .../src/contexts/SharedDictionaries/french.ts | 1 + .../contexts/SharedDictionaries/portuguese.ts | 1 + .../contexts/SharedDictionaries/spanish.ts | 1 + .../src/contexts/SharedDictionaries/types.ts | 1 + .../OktaLoginScreen/OktaLoginScreen.tsx | 74 +++++++++++++++++++ .../src/screens/OktaLoginScreen/index.ts | 1 + 8 files changed, 81 insertions(+) create mode 100644 login-workflow/src/screens/OktaLoginScreen/OktaLoginScreen.tsx diff --git a/login-workflow/src/contexts/SharedDictionaries/chinese.ts b/login-workflow/src/contexts/SharedDictionaries/chinese.ts index 0f0fcbf0..f66852e7 100644 --- a/login-workflow/src/contexts/SharedDictionaries/chinese.ts +++ b/login-workflow/src/contexts/SharedDictionaries/chinese.ts @@ -12,6 +12,7 @@ const resources: CommonTranslationsFile = { DONE: '完成', CONTINUE: '继续', LOG_IN: '登录', + OKTA_LOG_IN: '使用 Okta 登录', LOG_OUT: '登出', CLICK_BUTTON: '点击按钮', UPDATE_REDUX: '点击按钮以更新redux中存的值', diff --git a/login-workflow/src/contexts/SharedDictionaries/english.ts b/login-workflow/src/contexts/SharedDictionaries/english.ts index 0f58e9b6..681187f3 100644 --- a/login-workflow/src/contexts/SharedDictionaries/english.ts +++ b/login-workflow/src/contexts/SharedDictionaries/english.ts @@ -12,6 +12,7 @@ const resources: CommonTranslationsFile = { CONTINUE: 'Continue', DONE: 'Done', LOG_IN: 'Log In', + OKTA_LOG_IN: 'Sign In With Okta', LOG_OUT: 'Log Out', CLICK_BUTTON: 'Click the button', UPDATE_REDUX: 'Click the button to update the redux store value!', diff --git a/login-workflow/src/contexts/SharedDictionaries/french.ts b/login-workflow/src/contexts/SharedDictionaries/french.ts index b1673fc6..0375aaad 100644 --- a/login-workflow/src/contexts/SharedDictionaries/french.ts +++ b/login-workflow/src/contexts/SharedDictionaries/french.ts @@ -12,6 +12,7 @@ const resources: CommonTranslationsFile = { CONTINUE: 'Continuer', DONE: 'Terminé', LOG_IN: "S'identifier", + OKTA_LOG_IN: 'Se connecter avec Okta', LOG_OUT: 'Se déconnecter', CLICK_BUTTON: 'Cliquez sur le bouton', UPDATE_REDUX: 'Cliquez sur le bouton pour mettre à jour la valeur du magasin redux!', diff --git a/login-workflow/src/contexts/SharedDictionaries/portuguese.ts b/login-workflow/src/contexts/SharedDictionaries/portuguese.ts index 95b96337..a80ac61d 100644 --- a/login-workflow/src/contexts/SharedDictionaries/portuguese.ts +++ b/login-workflow/src/contexts/SharedDictionaries/portuguese.ts @@ -12,6 +12,7 @@ const resources: CommonTranslationsFile = { CONTINUE: 'Continuar', DONE: 'Concluir', LOG_IN: 'Iniciar Sessão', + OKTA_LOG_IN: 'Iniciar Sessão com Okta', LOG_OUT: 'Terminar Sessão', CLICK_BUTTON: 'Clique no botão', UPDATE_REDUX: 'Clique no botão para atualizar o valor de armazenamento redux!', diff --git a/login-workflow/src/contexts/SharedDictionaries/spanish.ts b/login-workflow/src/contexts/SharedDictionaries/spanish.ts index 94cbd241..be0aef30 100644 --- a/login-workflow/src/contexts/SharedDictionaries/spanish.ts +++ b/login-workflow/src/contexts/SharedDictionaries/spanish.ts @@ -12,6 +12,7 @@ const resources: CommonTranslationsFile = { CONTINUE: 'Seguir', DONE: 'Hecho', LOG_IN: 'Iniciar sesión', + OKTA_LOG_IN: 'Iniciar sesión con Okta', LOG_OUT: 'Cerrar sesión', CLICK_BUTTON: '¡Haga clic en el botón', UPDATE_REDUX: '¡Haga clic en el botón para actualizar el valor de la tienda redux!', diff --git a/login-workflow/src/contexts/SharedDictionaries/types.ts b/login-workflow/src/contexts/SharedDictionaries/types.ts index 3df7ae57..b7d6fa02 100644 --- a/login-workflow/src/contexts/SharedDictionaries/types.ts +++ b/login-workflow/src/contexts/SharedDictionaries/types.ts @@ -9,6 +9,7 @@ export type CommonTranslations = { CONTINUE: string; DONE: string; LOG_IN: string; + OKTA_LOG_IN: string; LOG_OUT: string; CLICK_BUTTON: string; UPDATE_REDUX: string; diff --git a/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreen.tsx b/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreen.tsx new file mode 100644 index 00000000..ea101107 --- /dev/null +++ b/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreen.tsx @@ -0,0 +1,74 @@ +import React, { useEffect, useState } from 'react'; +import { useOktaAuth } from '@okta/okta-react'; +import { useTranslation } from 'react-i18next'; +import { OktaLoginScreenBase } from './OktaLoginScreenBase'; +import { OktaLoginScreenProps } from './types'; +import { useAuthContext } from '../../contexts'; +import { useErrorManager } from '../../contexts/ErrorContext/useErrorManager'; + +/** + * Component that renders an okta login screen. + * + * @param {OktaLoginScreenProps} props - props of OktaLoginScreen + * + * @category Component + */ + +export const OktaLoginScreen: React.FC = (props) => { + const { authState, oktaAuth } = useOktaAuth(); + const [isLoading, setIsLoading] = useState(!authState); + const { triggerError, errorManagerConfig } = useErrorManager(); + const { t } = useTranslation(); + const auth = useAuthContext(); + const { navigate, routeConfig } = auth; + const errorDisplayConfig = { + ...errorManagerConfig, + ...props.errorDisplayConfig, + onClose: (): void => { + if (props.errorDisplayConfig && props.errorDisplayConfig.onClose) props.errorDisplayConfig.onClose(); + if (errorManagerConfig.onClose) errorManagerConfig?.onClose(); + }, + }; + const { + loginButtonLabel = t('bluiCommon:ACTIONS.OKTA_LOG_IN'), + showContactSupport = true, + contactSupportLabel = t('bluiCommon:MESSAGES.CONTACT'), + onContactSupport = (): void => navigate(routeConfig.SUPPORT as string), + showCyberSecurityBadge = true, + projectImage, + header, + footer, + } = props; + + useEffect(() => { + setIsLoading(!authState); + }, [authState]); + + const handleOnLogin = async (): Promise => { + try { + setIsLoading(true); + await oktaAuth.signInWithRedirect(); + await props.onLogin?.(); + } catch (_error) { + triggerError(_error as Error); + } finally { + setIsLoading(false); + } + }; + + return ( + + ); +}; diff --git a/login-workflow/src/screens/OktaLoginScreen/index.ts b/login-workflow/src/screens/OktaLoginScreen/index.ts index 99bf429f..a01310ef 100644 --- a/login-workflow/src/screens/OktaLoginScreen/index.ts +++ b/login-workflow/src/screens/OktaLoginScreen/index.ts @@ -1 +1,2 @@ export * from './OktaLoginScreenBase'; +export * from './OktaLoginScreen'; From 0f312db6537514554a6965a4833ff4c98e941bfd Mon Sep 17 00:00:00 2001 From: Komal Dhere Date: Wed, 31 Jul 2024 15:53:33 +0530 Subject: [PATCH 31/90] Added BLUI class names for ChangePasswordDialog --- .../ChangePasswordDialogBase.tsx | 64 +++++++++++++++++-- .../ChangePasswordDialog/utilityClasses.ts | 20 ++++++ 2 files changed, 78 insertions(+), 6 deletions(-) create mode 100644 login-workflow/src/components/ChangePasswordDialog/utilityClasses.ts diff --git a/login-workflow/src/components/ChangePasswordDialog/ChangePasswordDialogBase.tsx b/login-workflow/src/components/ChangePasswordDialog/ChangePasswordDialogBase.tsx index 70090b5c..20979796 100644 --- a/login-workflow/src/components/ChangePasswordDialog/ChangePasswordDialogBase.tsx +++ b/login-workflow/src/components/ChangePasswordDialog/ChangePasswordDialogBase.tsx @@ -17,6 +17,8 @@ import { PasswordTextField } from '../PasswordTextField'; import { BasicDialog } from '../Dialog'; import { Spinner } from '../../components'; import { SuccessScreenBase, SuccessScreenProps } from '../../screens'; +import { unstable_composeClasses as composeClasses } from '@mui/base'; +import { ChangePasswordDialogClassKey, getChangePasswordDialogUtilityClass } from './utilityClasses'; /** * Component that renders a dialog with textField to enter current password and a change password form with a new password and confirm password inputs. @@ -26,7 +28,24 @@ import { SuccessScreenBase, SuccessScreenProps } from '../../screens'; * * @category Component */ +const useUtilityClasses = (ownerState: ChangePasswordDialogProps): Record => { + const { classes } = ownerState; + const slots = { + root: ['root'], + spinner: ['spinner'], + basicDialog: ['basicDialog'], + title: ['title'], + content: ['content'], + description: ['description'], + divider: ['divider'], + previousLabelButton: ['previousLabelButton'], + nextLabelButton: ['nextLabelButton'], + buttonAction: ['buttonAction'], + }; + + return composeClasses(slots, getChangePasswordDialogUtilityClass, classes); +}; export const ChangePasswordDialogBase: React.FC = (props) => { const { open, @@ -48,6 +67,7 @@ export const ChangePasswordDialogBase: React.FC = (pr slots, slotProps, } = props; + const defaultClasses = useUtilityClasses(props); const theme = useTheme(); const matchesMD = useMediaQuery(theme.breakpoints.down('md')); const matchesSM = useMediaQuery(theme.breakpoints.down('sm')); @@ -82,19 +102,28 @@ export const ChangePasswordDialogBase: React.FC = (pr ); return ( - - + + {showSuccessScreen ? ( getSuccessScreen(slotProps?.SuccessScreen || {}, slots?.SuccessScreen) ) : ( <> - + {dialogTitle} @@ -108,9 +137,21 @@ export const ChangePasswordDialogBase: React.FC = (pr pb: { xs: 2, md: 3 }, px: { xs: 2, md: 3 }, }} + className={defaultClasses.content} + data-testid={defaultClasses.content} > - {dialogDescription} - + + {dialogDescription} + + = (pr justifyContent: 'flex-end', p: { xs: 2, md: 3 }, }} + className={defaultClasses.buttonAction} + data-testid={defaultClasses.buttonAction} > = (pr justifyContent="space-between" sx={{ width: '100%' }} > - diff --git a/login-workflow/src/components/ChangePasswordDialog/utilityClasses.ts b/login-workflow/src/components/ChangePasswordDialog/utilityClasses.ts new file mode 100644 index 00000000..53ddf97a --- /dev/null +++ b/login-workflow/src/components/ChangePasswordDialog/utilityClasses.ts @@ -0,0 +1,20 @@ +import generateUtilityClass from '@mui/material/generateUtilityClass'; + +export type ChangePasswordDialogClasses = { + root?: string; + spinner?: string; + basicDialog?: string; + title?: string; + content?: string; + description?: string; + divider?: string; + previousLabelButton?: string; + nextLabelButton?: string; + buttonAction?: string; +}; + +export type ChangePasswordDialogClassKey = keyof ChangePasswordDialogClasses; + +export function getChangePasswordDialogUtilityClass(slot: string): string { + return generateUtilityClass('BluiChangePassword', slot); +} From 692a4962dc56ca36860d30e738535f625556dc38 Mon Sep 17 00:00:00 2001 From: Suraj Karambe Date: Thu, 1 Aug 2024 01:17:35 +0530 Subject: [PATCH 32/90] Added forgot password and create account --- .../OktaLoginScreen/OktaLoginScreen.tsx | 14 +++ .../OktaLoginScreen/OktaLoginScreenBase.tsx | 106 +++++++++++++++--- .../src/screens/OktaLoginScreen/types.ts | 37 ++++++ .../screens/OktaLoginScreen/utilityClasses.ts | 6 + 4 files changed, 149 insertions(+), 14 deletions(-) diff --git a/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreen.tsx b/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreen.tsx index ea101107..a4021dbc 100644 --- a/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreen.tsx +++ b/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreen.tsx @@ -31,6 +31,13 @@ export const OktaLoginScreen: React.FC = (props) => { }; const { loginButtonLabel = t('bluiCommon:ACTIONS.OKTA_LOG_IN'), + showForgotPassword = true, + forgotPasswordLabel = t('bluiCommon:LABELS.FORGOT_PASSWORD'), + onForgotPassword = (): void => navigate(routeConfig.FORGOT_PASSWORD as string), + showSelfRegistration = true, + selfRegisterInstructions = t('bluiCommon:LABELS.NEED_ACCOUNT'), + selfRegisterButtonLabel = t('bluiCommon:ACTIONS.CREATE_ACCOUNT'), + onSelfRegister = (): void => navigate(routeConfig.REGISTER_SELF as string), showContactSupport = true, contactSupportLabel = t('bluiCommon:MESSAGES.CONTACT'), onContactSupport = (): void => navigate(routeConfig.SUPPORT as string), @@ -61,6 +68,13 @@ export const OktaLoginScreen: React.FC = (props) => { loading={isLoading} loginButtonLabel={loginButtonLabel} onLogin={handleOnLogin} + showForgotPassword={showForgotPassword} + forgotPasswordLabel={forgotPasswordLabel} + onForgotPassword={onForgotPassword} + showSelfRegistration={showSelfRegistration} + selfRegisterButtonLabel={selfRegisterButtonLabel} + selfRegisterInstructions={selfRegisterInstructions} + onSelfRegister={onSelfRegister} showContactSupport={showContactSupport} contactSupportLabel={contactSupportLabel} onContactSupport={onContactSupport} diff --git a/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreenBase.tsx b/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreenBase.tsx index 6693440d..2ab22753 100644 --- a/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreenBase.tsx +++ b/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreenBase.tsx @@ -15,7 +15,13 @@ const useUtilityClasses = (ownerState: OktaLoginScreenProps): Record = (props) => { errorDisplayConfig, loginButtonLabel, onLogin, + showForgotPassword, + forgotPasswordLabel, + onForgotPassword, showContactSupport, showCyberSecurityBadge, + showSelfRegistration, + selfRegisterButtonLabel, + selfRegisterInstructions, + onSelfRegister, contactSupportLabel, footer, onContactSupport, @@ -54,6 +67,14 @@ export const OktaLoginScreenBase: React.FC = (props) => { if (onLogin) await onLogin(); }; + const handleForgotPassword = (): void => { + if (onForgotPassword) onForgotPassword(); + }; + + const handleSelfRegister = (): void => { + if (onSelfRegister) onSelfRegister(); + }; + const handleContactSupport = (): void => { if (onContactSupport) onContactSupport(); }; @@ -79,25 +100,82 @@ export const OktaLoginScreenBase: React.FC = (props) => { - + + + {showForgotPassword && ( + + + {forgotPasswordLabel || 'Forgot your password?'} + + + )} + + {showSelfRegistration && ( + + + {selfRegisterInstructions || 'Need an account?'} + + + {selfRegisterButtonLabel || 'Register now!'} + + + )} + {showContactSupport && ( @@ -107,11 +185,11 @@ export const OktaLoginScreenBase: React.FC = (props) => { )} - {footer} + {footer && {footer}} {showCyberSecurityBadge && ( diff --git a/login-workflow/src/screens/OktaLoginScreen/types.ts b/login-workflow/src/screens/OktaLoginScreen/types.ts index 4922ca6b..b46fe758 100644 --- a/login-workflow/src/screens/OktaLoginScreen/types.ts +++ b/login-workflow/src/screens/OktaLoginScreen/types.ts @@ -19,6 +19,43 @@ export type OktaLoginScreenProps = WorkflowCardBaseProps & { */ onLogin?: () => Promise | void; + /** + * whether or not to show the 'forgot password' link + */ + showForgotPassword?: boolean; + + /** + * The label for the 'forgot password' link + */ + forgotPasswordLabel?: string; + + /** + * The callback function that is called when the 'forgot password' link is clicked + * @returns void + */ + onForgotPassword?: () => void; + + /** + * whether or not to show the 'self registration' link + */ + showSelfRegistration?: boolean; + + /** + * The label for the 'self registration' link + */ + selfRegisterButtonLabel?: string; + + /** + * The instructions for the 'self registration' link + */ + selfRegisterInstructions?: string; + + /** + * The callback function that is called when the 'self registration' link is clicked + * @returns void + */ + onSelfRegister?: () => void; + /** * whether or not to show the 'contact support' link */ diff --git a/login-workflow/src/screens/OktaLoginScreen/utilityClasses.ts b/login-workflow/src/screens/OktaLoginScreen/utilityClasses.ts index e9f7460b..152c7114 100644 --- a/login-workflow/src/screens/OktaLoginScreen/utilityClasses.ts +++ b/login-workflow/src/screens/OktaLoginScreen/utilityClasses.ts @@ -3,7 +3,13 @@ import generateUtilityClass from '@mui/material/generateUtilityClass'; export type OktaLoginScreenClasses = { root?: string; projectImageWrapper?: string; + loginButtonWrapper?: string; loginButton?: string; + forgotPasswordWrapper?: string; + forgotPasswordLabel?: string; + selfRegisterWrapper?: string; + selfRegisterInstructionLabel?: string; + selfRegisterLabel?: string; contactSupportWrapper?: string; contactSupportLabel?: string; cyberSecurityBadgeWrapper?: string; From 50dbba04d9a30e0f15546a0d1d49c183464636c6 Mon Sep 17 00:00:00 2001 From: Suraj Karambe Date: Thu, 1 Aug 2024 15:15:02 +0530 Subject: [PATCH 33/90] Added tests for okta login screen --- .../OktaLoginScreen/OktaLoginScreen.test.tsx | 114 ++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 login-workflow/src/screens/OktaLoginScreen/OktaLoginScreen.test.tsx diff --git a/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreen.test.tsx b/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreen.test.tsx new file mode 100644 index 00000000..dcbcdca0 --- /dev/null +++ b/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreen.test.tsx @@ -0,0 +1,114 @@ +import React from 'react'; +import { render, screen, fireEvent, waitFor, act } from '@testing-library/react'; +import '@testing-library/jest-dom'; +import { OktaLoginScreen } from './OktaLoginScreen'; +import { useOktaAuth } from '@okta/okta-react'; +import { useTranslation } from 'react-i18next'; +import { useAuthContext } from '../../contexts'; +import { useErrorManager } from '../../contexts/ErrorContext/useErrorManager'; +import { OktaLoginScreenProps } from './types'; + +jest.mock('@okta/okta-react'); +jest.mock('react-i18next'); +jest.mock('../../contexts'); +jest.mock('../../contexts/ErrorContext/useErrorManager'); + +describe('OktaLoginScreen', () => { + const mockSignInWithRedirect = jest.fn(); + const mockTriggerError = jest.fn(); + const mockNavigate = jest.fn(); + const mockOnLogin = jest.fn(); + + beforeEach(() => { + (useOktaAuth as jest.Mock).mockReturnValue({ + authState: { isAuthenticated: false }, + oktaAuth: { signInWithRedirect: mockSignInWithRedirect }, + }); + (useTranslation as jest.Mock).mockReturnValue({ t: (key: string) => key }); + (useAuthContext as jest.Mock).mockReturnValue({ + navigate: mockNavigate, + routeConfig: { SUPPORT: '/support' }, + }); + (useErrorManager as jest.Mock).mockReturnValue({ + triggerError: mockTriggerError, + errorManagerConfig: {}, + }); + }); + + afterEach(() => { + jest.clearAllMocks(); + }); + + const renderer = (props?: OktaLoginScreenProps) => render(); + + it('renders without crashing', () => { + renderer(); + expect(screen.getByText('bluiCommon:ACTIONS.OKTA_LOG_IN')).toBeInTheDocument(); + }); + + it('renders login button with correct label', () => { + renderer(); + expect(screen.getByRole('button', { name: 'bluiCommon:ACTIONS.OKTA_LOG_IN' })).toBeInTheDocument(); + }); + + it('handles login correctly', async () => { + renderer({ onLogin: mockOnLogin }); + const loginButton = screen.getByRole('button', { name: 'bluiCommon:ACTIONS.OKTA_LOG_IN' }); + + act(() => { + fireEvent.click(loginButton); + }); + + await waitFor(() => expect(mockSignInWithRedirect).toHaveBeenCalled()); + await waitFor(() => expect(mockOnLogin).toHaveBeenCalled()); + }); + + it('handles login error correctly', async () => { + mockSignInWithRedirect.mockRejectedValueOnce(new Error('Login error')); + renderer(); + + const loginButton = screen.getByRole('button', { name: 'bluiCommon:ACTIONS.OKTA_LOG_IN' }); + + act(() => { + fireEvent.click(loginButton); + }); + + await waitFor(() => expect(mockTriggerError).toHaveBeenCalledWith(expect.any(Error))); + }); + + it('navigates to support route when support button is clicked', () => { + renderer(); + + const supportButton = screen.getByText('bluiCommon:MESSAGES.CONTACT'); + + act(() => { + fireEvent.click(supportButton); + }); + + expect(mockNavigate).toHaveBeenCalled(); + }); + + it('navigates to forgot password route when button is clicked', () => { + renderer(); + + const forgotPasswordButton = screen.getByText('bluiCommon:LABELS.FORGOT_PASSWORD'); + + act(() => { + fireEvent.click(forgotPasswordButton); + }); + + expect(mockNavigate).toHaveBeenCalled(); + }); + + it('navigates to create account route when button is clicked', () => { + renderer(); + + const createAccountButton = screen.getByText('bluiCommon:ACTIONS.CREATE_ACCOUNT'); + + act(() => { + fireEvent.click(createAccountButton); + }); + + expect(mockNavigate).toHaveBeenCalled(); + }); +}); From d064280ce2ff30ac1f5a03cca36c730772862d51 Mon Sep 17 00:00:00 2001 From: Suraj Karambe Date: Thu, 1 Aug 2024 15:19:43 +0530 Subject: [PATCH 34/90] Added return type to rerender function --- .../src/screens/OktaLoginScreen/OktaLoginScreen.test.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreen.test.tsx b/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreen.test.tsx index dcbcdca0..2aa0de9d 100644 --- a/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreen.test.tsx +++ b/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreen.test.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { render, screen, fireEvent, waitFor, act } from '@testing-library/react'; +import { render, screen, fireEvent, waitFor, act, RenderResult } from '@testing-library/react'; import '@testing-library/jest-dom'; import { OktaLoginScreen } from './OktaLoginScreen'; import { useOktaAuth } from '@okta/okta-react'; @@ -39,7 +39,7 @@ describe('OktaLoginScreen', () => { jest.clearAllMocks(); }); - const renderer = (props?: OktaLoginScreenProps) => render(); + const renderer = (props?: OktaLoginScreenProps): RenderResult => render(); it('renders without crashing', () => { renderer(); From 38b3385d7e41566c5185f392f7bf42d1fe71c194 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 Aug 2024 11:10:10 +0000 Subject: [PATCH 35/90] Bump firebase-tools from 13.6.0 to 13.14.2 in /login-workflow Bumps [firebase-tools](https://github.com/firebase/firebase-tools) from 13.6.0 to 13.14.2. - [Release notes](https://github.com/firebase/firebase-tools/releases) - [Changelog](https://github.com/firebase/firebase-tools/blob/master/CHANGELOG.md) - [Commits](https://github.com/firebase/firebase-tools/compare/v13.6.0...v13.14.2) --- updated-dependencies: - dependency-name: firebase-tools dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- login-workflow/yarn.lock | 1254 ++++++++++++++++++++------------------ 1 file changed, 659 insertions(+), 595 deletions(-) diff --git a/login-workflow/yarn.lock b/login-workflow/yarn.lock index f177bd70..5f8473ce 100644 --- a/login-workflow/yarn.lock +++ b/login-workflow/yarn.lock @@ -301,7 +301,7 @@ chalk "^2.4.2" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.15", "@babel/parser@^7.20.7", "@babel/parser@^7.22.15", "@babel/parser@^7.22.16": +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.22.15", "@babel/parser@^7.22.16": version "7.22.16" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.16.tgz#180aead7f247305cce6551bea2720934e2fa2c95" integrity sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA== @@ -1348,67 +1348,82 @@ resolved "https://registry.yarnpkg.com/@fontsource/open-sans/-/open-sans-4.5.14.tgz#b3e1665c0b3fdfc1f030ded2843749e3cf3a5900" integrity sha512-mBXIIETBlW8q/ocuUN0hyGow2iuf75hQEHQt8R/RJ/HcphVbLg8KB7pHYGbFGDqs75W+SWvTC7JkVeAjT65BuQ== -"@google-cloud/paginator@^4.0.0": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@google-cloud/paginator/-/paginator-4.0.1.tgz#5fb8793d4f84d18c50a6f2fad3dadab8d2c533ef" - integrity sha512-6G1ui6bWhNyHjmbYwavdN7mpVPRBtyDg/bfqBTAlwr413On2TnFNfDxc9UhTJctkgoCDgQXEKiRPLPR9USlkbQ== +"@google-cloud/cloud-sql-connector@^1.3.3": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@google-cloud/cloud-sql-connector/-/cloud-sql-connector-1.3.3.tgz#ba87617ae4db37120c642c14e97ccddcfdc7e121" + integrity sha512-Z/6haHca3bnaf1I2t/lmRgU5pCzGQTK6u9hMnD6a6sCL46QB4JRiBvRI5QMSPjnG8VYr1R7Wp1ZawvQJodEY6g== + dependencies: + "@googleapis/sqladmin" "^19.0.0" + gaxios "^6.1.1" + google-auth-library "^9.2.0" + p-throttle "^5.1.0" + +"@google-cloud/paginator@^5.0.0": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@google-cloud/paginator/-/paginator-5.0.2.tgz#86ad773266ce9f3b82955a8f75e22cd012ccc889" + integrity sha512-DJS3s0OVH4zFDB1PzjxAsHqJT6sKVbRwwML0ZBP9PbU7Yebtu/7SWMRzvO2J3nUi9pRNITCfu4LJeooM2w4pjg== dependencies: arrify "^2.0.0" extend "^3.0.2" -"@google-cloud/precise-date@^3.0.0": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@google-cloud/precise-date/-/precise-date-3.0.1.tgz#1e6659a14af662442037b8f4d20dbc82bf1a78bd" - integrity sha512-crK2rgNFfvLoSgcKJY7ZBOLW91IimVNmPfi1CL+kMTf78pTJYd29XqEVedAeBu4DwCJc0EDIp1MpctLgoPq+Uw== +"@google-cloud/precise-date@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@google-cloud/precise-date/-/precise-date-4.0.0.tgz#e179893a3ad628b17a6fabdfcc9d468753aac11a" + integrity sha512-1TUx3KdaU3cN7nfCdNf+UVqA/PSX29Cjcox3fZZBtINlRrXVTmUkQnCKv2MbBUbCopbK4olAT1IHl76uZyCiVA== -"@google-cloud/projectify@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@google-cloud/projectify/-/projectify-3.0.0.tgz#302b25f55f674854dce65c2532d98919b118a408" - integrity sha512-HRkZsNmjScY6Li8/kb70wjGlDDyLkVk3KvoEo9uIoxSjYLJasGiCch9+PqRVDOCGUFvEIqyogl+BeqILL4OJHA== +"@google-cloud/projectify@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@google-cloud/projectify/-/projectify-4.0.0.tgz#d600e0433daf51b88c1fa95ac7f02e38e80a07be" + integrity sha512-MmaX6HeSvyPbWGwFq7mXdo0uQZLGBYCwziiLIGq5JVX+/bdI3SAq6bP98trV5eTWfLuvsMcIC1YJOF2vfteLFA== -"@google-cloud/promisify@^2.0.0": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@google-cloud/promisify/-/promisify-2.0.4.tgz#9d8705ecb2baa41b6b2673f3a8e9b7b7e1abc52a" - integrity sha512-j8yRSSqswWi1QqUGKVEKOG03Q7qOoZP6/h2zN2YO+F5h2+DHU0bSrHCK9Y7lo2DI9fBd8qGAw795sf+3Jva4yA== - -"@google-cloud/pubsub@^3.0.1": - version "3.7.5" - resolved "https://registry.yarnpkg.com/@google-cloud/pubsub/-/pubsub-3.7.5.tgz#3fed656b7e7ea3a4618d5590004f08321a1389b9" - integrity sha512-4Qrry4vIToth5mqduVslltWVsyb7DR8OhnkBA3F7XiE0jgQsiuUfwp/RB2F559aXnRbwcfmjvP4jSuEaGcjrCQ== - dependencies: - "@google-cloud/paginator" "^4.0.0" - "@google-cloud/precise-date" "^3.0.0" - "@google-cloud/projectify" "^3.0.0" - "@google-cloud/promisify" "^2.0.0" - "@opentelemetry/api" "^1.6.0" - "@opentelemetry/semantic-conventions" "~1.3.0" - "@types/duplexify" "^3.6.0" - "@types/long" "^4.0.0" +"@google-cloud/promisify@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@google-cloud/promisify/-/promisify-4.0.0.tgz#a906e533ebdd0f754dca2509933334ce58b8c8b1" + integrity sha512-Orxzlfb9c67A15cq2JQEyVc7wEsmFBmHjZWZYQMUyJ1qivXyMwdyNOs9odi79hze+2zqdTtu1E19IM/FtqZ10g== + +"@google-cloud/pubsub@^4.5.0": + version "4.5.0" + resolved "https://registry.yarnpkg.com/@google-cloud/pubsub/-/pubsub-4.5.0.tgz#0c163038f4f00d40df1c21bfe1c1db87011a997e" + integrity sha512-ptRLLDrAp1rStD1n3ZrG8FdAfpccqI6M5rCaceF6PL7DU3hqJbvQ2Y91G8MKG7c7zK+jiWv655Qf5r2IvjTzwA== + dependencies: + "@google-cloud/paginator" "^5.0.0" + "@google-cloud/precise-date" "^4.0.0" + "@google-cloud/projectify" "^4.0.0" + "@google-cloud/promisify" "^4.0.0" + "@opentelemetry/api" "~1.8.0" + "@opentelemetry/semantic-conventions" "~1.21.0" arrify "^2.0.0" extend "^3.0.2" - google-auth-library "^8.0.2" - google-gax "^3.6.1" + google-auth-library "^9.3.0" + google-gax "^4.3.3" heap-js "^2.2.0" is-stream-ended "^0.1.4" lodash.snakecase "^4.1.1" p-defer "^3.0.0" -"@grpc/grpc-js@~1.8.0": - version "1.8.22" - resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.8.22.tgz#847930c9af46e14df05b57fc12325db140ceff1d" - integrity sha512-oAjDdN7fzbUi+4hZjKG96MR6KTEubAeMpQEb+77qy+3r0Ua5xTFuie6JOLr4ZZgl5g+W5/uRTS2M1V8mVAFPuA== +"@googleapis/sqladmin@^19.0.0": + version "19.0.0" + resolved "https://registry.yarnpkg.com/@googleapis/sqladmin/-/sqladmin-19.0.0.tgz#fd8064fb7270060f4b62f6a0fb2f0fd85b29311b" + integrity sha512-65zgEpQLhpTZqUic+pm4BbdDByN9NsHkphfCIwzpx3fccHPc6OuKsW0XexYCq9oTUtTC4QRjFisBDLV9fChRtg== + dependencies: + googleapis-common "^7.0.0" + +"@grpc/grpc-js@^1.10.9": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.11.1.tgz#a92f33e98f1959feffcd1b25a33b113d2c977b70" + integrity sha512-gyt/WayZrVPH2w/UTLansS7F9Nwld472JxxaETamrM8HNlsa+jSLNyKAZmhxI2Me4c3mQHFiS1wWHDY1g1Kthw== dependencies: - "@grpc/proto-loader" "^0.7.0" - "@types/node" ">=12.12.47" + "@grpc/proto-loader" "^0.7.13" + "@js-sdsl/ordered-map" "^4.4.2" -"@grpc/proto-loader@^0.7.0": - version "0.7.10" - resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.7.10.tgz#6bf26742b1b54d0a473067743da5d3189d06d720" - integrity sha512-CAqDfoaQ8ykFd9zqBDn4k6iWT9loLAlc2ETmDFS9JCD70gDcnA4L3AFEo2iV7KyAtAAHFW9ftq1Fz+Vsgq80RQ== +"@grpc/proto-loader@^0.7.13": + version "0.7.13" + resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.7.13.tgz#f6a44b2b7c9f7b609f5748c6eac2d420e37670cf" + integrity sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw== dependencies: lodash.camelcase "^4.3.0" long "^5.0.0" - protobufjs "^7.2.4" + protobufjs "^7.2.5" yargs "^17.7.2" "@humanwhocodes/config-array@^0.11.11": @@ -1722,18 +1737,16 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" +"@js-sdsl/ordered-map@^4.4.2": + version "4.4.2" + resolved "https://registry.yarnpkg.com/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz#9299f82874bab9e4c7f9c48d865becbfe8d6907c" + integrity sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw== + "@jsdevtools/ono@^7.1.3": version "7.1.3" resolved "https://registry.yarnpkg.com/@jsdevtools/ono/-/ono-7.1.3.tgz#9df03bbd7c696a5c58885c34aa06da41c8543796" integrity sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg== -"@jsdoc/salty@^0.2.1": - version "0.2.5" - resolved "https://registry.yarnpkg.com/@jsdoc/salty/-/salty-0.2.5.tgz#1b2fa5bb8c66485b536d86eee877c263d322f692" - integrity sha512-TfRP53RqunNe2HBobVBJ0VLhK1HbfvBYeTC1ahnN64PWvyYyGebmMiPkuwvD9fpw2ZbkoPb8Q7mwy0aR8Z9rvw== - dependencies: - lodash "^4.17.21" - "@mui/base@5.0.0-beta.16": version "5.0.0-beta.16" resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-beta.16.tgz#5869b8cc83ea5da0083bb11790bda007c2384564" @@ -1883,15 +1896,15 @@ "@babel/runtime" "^7.11.2" compare-versions "^4.1.2" -"@opentelemetry/api@^1.6.0": - version "1.6.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.6.0.tgz#de2c6823203d6f319511898bb5de7e70f5267e19" - integrity sha512-OWlrQAnWn9577PhVgqjUvMr1pg57Bc4jv0iL4w0PRuOSRvq67rvHW9Ie/dZVMvCzhSCB+UxhcY/PmCmFj33Q+g== +"@opentelemetry/api@~1.8.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.8.0.tgz#5aa7abb48f23f693068ed2999ae627d2f7d902ec" + integrity sha512-I/s6F7yKUDdtMsoBWXJe8Qz40Tui5vsuKCWJEWVL+5q9sSWRzzx6v2KeNsOBEwd94j0eWkpWCH4yB6rZg9Mf0w== -"@opentelemetry/semantic-conventions@~1.3.0": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.3.1.tgz#ba07b864a3c955f061aa30ea3ef7f4ae4449794a" - integrity sha512-wU5J8rUoo32oSef/rFpOT1HIjLjAv3qIDHkw1QIhODV3OpAVHi5oVzlouozg9obUmZKtbZ0qUe/m7FP0y0yBzA== +"@opentelemetry/semantic-conventions@~1.21.0": + version "1.21.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.21.0.tgz#83f7479c524ab523ac2df702ade30b9724476c72" + integrity sha512-lkC8kZYntxVKr7b8xmjCVUgE0a8xgDakPyDo9uSWavXPyYqLgYYGdEd2j8NxihRyb6UwpX3G/hFUF4/9q2V+/g== "@peculiar/asn1-schema@^2.3.8": version "2.3.8" @@ -2128,6 +2141,11 @@ dependencies: "@babel/types" "^7.20.7" +"@types/caseless@*": + version "0.12.5" + resolved "https://registry.yarnpkg.com/@types/caseless/-/caseless-0.12.5.tgz#db9468cb1b1b5a925b8f34822f1669df0c5472f5" + integrity sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg== + "@types/color-convert@*": version "2.0.1" resolved "https://registry.yarnpkg.com/@types/color-convert/-/color-convert-2.0.1.tgz#45216f0d8289c6ae32d139ed08c205a9c55bb5d0" @@ -2154,21 +2172,6 @@ dependencies: "@types/trusted-types" "*" -"@types/duplexify@^3.6.0": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@types/duplexify/-/duplexify-3.6.1.tgz#5685721cf7dc4a21b6f0e8a8efbec6b4d2fbafad" - integrity sha512-n0zoEj/fMdMOvqbHxmqnza/kXyoGgJmEpsXjpP+gEqE1Ye4yNqc7xWipKnUoMpWhMuzJQSfK2gMrwlElly7OGQ== - dependencies: - "@types/node" "*" - -"@types/glob@*": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-8.1.0.tgz#b63e70155391b0584dce44e7ea25190bbc38f2fc" - integrity sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w== - dependencies: - "@types/minimatch" "^5.1.2" - "@types/node" "*" - "@types/graceful-fs@^4.1.3": version "4.1.7" resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.7.tgz#30443a2e64fd51113bc3e2ba0914d47109695e2a" @@ -2222,35 +2225,12 @@ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.13.tgz#02c24f4363176d2d18fc8b70b9f3c54aba178a85" integrity sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ== -"@types/linkify-it@*": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/linkify-it/-/linkify-it-3.0.3.tgz#15a0712296c5041733c79efe233ba17ae5a7587b" - integrity sha512-pTjcqY9E4nOI55Wgpz7eiI8+LzdYnw3qxXCfHyBDdPbYvbyLgWLJGh8EdPvqawwMK1Uo1794AUkkR38Fr0g+2g== - "@types/long@^4.0.0": version "4.0.2" resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.2.tgz#b74129719fc8d11c01868010082d483b7545591a" integrity sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA== -"@types/markdown-it@^12.2.3": - version "12.2.3" - resolved "https://registry.yarnpkg.com/@types/markdown-it/-/markdown-it-12.2.3.tgz#0d6f6e5e413f8daaa26522904597be3d6cd93b51" - integrity sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ== - dependencies: - "@types/linkify-it" "*" - "@types/mdurl" "*" - -"@types/mdurl@*": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@types/mdurl/-/mdurl-1.0.2.tgz#e2ce9d83a613bacf284c7be7d491945e39e1f8e9" - integrity sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA== - -"@types/minimatch@^5.1.2": - version "5.1.2" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" - integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== - -"@types/node@*", "@types/node@>=12.12.47", "@types/node@>=13.7.0": +"@types/node@*", "@types/node@>=13.7.0": version "20.6.3" resolved "https://registry.yarnpkg.com/@types/node/-/node-20.6.3.tgz#5b763b321cd3b80f6b8dde7a37e1a77ff9358dd9" integrity sha512-HksnYH4Ljr4VQgEy2lTStbCKv/P590tmPe5HqOnv9Gprffgv5WXAY+Y5Gqniu0GGqeTCUdBnzC3QSrzPkBkAMA== @@ -2305,13 +2285,15 @@ "@types/scheduler" "*" csstype "^3.0.2" -"@types/rimraf@^3.0.2": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/rimraf/-/rimraf-3.0.2.tgz#a63d175b331748e5220ad48c901d7bbf1f44eef8" - integrity sha512-F3OznnSLAUxFrCEu/L5PY8+ny8DtcFRjx7fZZ9bycvXRi3KPTRS9HOitGZwvPg0juRhXFWIeKX58cnX5YqLohQ== +"@types/request@^2.48.8": + version "2.48.12" + resolved "https://registry.yarnpkg.com/@types/request/-/request-2.48.12.tgz#0f590f615a10f87da18e9790ac94c29ec4c5ef30" + integrity sha512-G3sY+NpsA9jnwm0ixhAFQSJ3Q9JkpLZpJbI3GMv0mIAT0y3mRabYeINzal5WOChIiaTEGQYlHOKgkaM9EisWHw== dependencies: - "@types/glob" "*" + "@types/caseless" "*" "@types/node" "*" + "@types/tough-cookie" "*" + form-data "^2.5.0" "@types/scheduler@*": version "0.16.3" @@ -2710,50 +2692,31 @@ anymatch@^3.0.3, anymatch@~3.1.2: resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== -archiver-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-2.1.0.tgz#e8a460e94b693c3e3da182a098ca6285ba9249e2" - integrity sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw== - dependencies: - glob "^7.1.4" - graceful-fs "^4.2.0" - lazystream "^1.0.0" - lodash.defaults "^4.2.0" - lodash.difference "^4.5.0" - lodash.flatten "^4.4.0" - lodash.isplainobject "^4.0.6" - lodash.union "^4.6.0" - normalize-path "^3.0.0" - readable-stream "^2.0.0" - -archiver-utils@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-3.0.4.tgz#a0d201f1cf8fce7af3b5a05aea0a337329e96ec7" - integrity sha512-KVgf4XQVrTjhyWmx6cte4RxonPLR9onExufI1jhvw/MQ4BB6IsZD5gT8Lq+u/+pRkWna/6JoHpiQioaqFP5Rzw== +archiver-utils@^5.0.0, archiver-utils@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-5.0.2.tgz#63bc719d951803efc72cf961a56ef810760dd14d" + integrity sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA== dependencies: - glob "^7.2.3" + glob "^10.0.0" graceful-fs "^4.2.0" + is-stream "^2.0.1" lazystream "^1.0.0" - lodash.defaults "^4.2.0" - lodash.difference "^4.5.0" - lodash.flatten "^4.4.0" - lodash.isplainobject "^4.0.6" - lodash.union "^4.6.0" + lodash "^4.17.15" normalize-path "^3.0.0" - readable-stream "^3.6.0" + readable-stream "^4.0.0" -archiver@^5.0.0: - version "5.3.2" - resolved "https://registry.yarnpkg.com/archiver/-/archiver-5.3.2.tgz#99991d5957e53bd0303a392979276ac4ddccf3b0" - integrity sha512-+25nxyyznAXF7Nef3y0EbBeqmGZgeN/BxHX29Rs39djAfaFalmQ89SE6CWyDCHzGL0yt/ycBtNOmGTW0FyGWNw== +archiver@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/archiver/-/archiver-7.0.1.tgz#c9d91c350362040b8927379c7aa69c0655122f61" + integrity sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ== dependencies: - archiver-utils "^2.1.0" + archiver-utils "^5.0.2" async "^3.2.4" - buffer-crc32 "^0.2.1" - readable-stream "^3.6.0" + buffer-crc32 "^1.0.0" + readable-stream "^4.0.0" readdir-glob "^1.1.2" - tar-stream "^2.2.0" - zip-stream "^4.1.0" + tar-stream "^3.0.0" + zip-stream "^6.0.1" are-we-there-yet@^3.0.0: version "3.0.1" @@ -2898,10 +2861,10 @@ ast-types@^0.13.4: dependencies: tslib "^2.0.1" -async-lock@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/async-lock/-/async-lock-1.3.2.tgz#56668613f91c1c55432b4db73e65c9ced664e789" - integrity sha512-phnXdS3RP7PPcmP6NWWzWMU0sLTeyvtZCxBPpZdkYE3seGLKSQZs9FrmVO/qwypq98FUtWWUEYxziLkdGk5nnA== +async-lock@1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/async-lock/-/async-lock-1.4.1.tgz#56b8718915a9b68b10fce2f2a9a3dddf765ef53f" + integrity sha512-Az2ZTpuytrtqENulXwO3GGv1Bztugx6TT37NIo7imr/Qo0gsYiGtSdBa2B6fsXhTpVZDNfu1Qn3pk531e3q+nQ== async@^2.6.1, async@^2.6.4: version "2.6.4" @@ -2937,6 +2900,11 @@ available-typed-arrays@^1.0.5: resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== +b4a@^1.6.4: + version "1.6.6" + resolved "https://registry.yarnpkg.com/b4a/-/b4a-1.6.6.tgz#a4cc349a3851987c3c4ac2d7785c18744f6da9ba" + integrity sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg== + babel-jest@^28.1.3: version "28.1.3" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-28.1.3.tgz#c1187258197c099072156a0a121c11ee1e3917d5" @@ -3066,6 +3034,11 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== +bare-events@^2.2.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/bare-events/-/bare-events-2.4.2.tgz#3140cca7a0e11d49b3edc5041ab560659fd8e1f8" + integrity sha512-qMKFd2qG/36aA4GwvKq8MxnPgCQAmBWmSyLWsJcbn8v03wvIPQ/hG1Ms8bPzndZxMDoHpxez5VOS+gC9Yi24/Q== + base64-js@^1.3.0, base64-js@^1.3.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" @@ -3098,7 +3071,7 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== -bl@^4.0.3, bl@^4.1.0: +bl@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== @@ -3107,11 +3080,6 @@ bl@^4.0.3, bl@^4.1.0: inherits "^2.0.4" readable-stream "^3.4.0" -bluebird@^3.7.2: - version "3.7.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" - integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== - body-parser@1.20.2, body-parser@^1.18.3, body-parser@^1.19.0: version "1.20.2" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" @@ -3215,10 +3183,10 @@ btoa@^1.2.1: resolved "https://registry.yarnpkg.com/btoa/-/btoa-1.2.1.tgz#01a9909f8b2c93f6bf680ba26131eb30f7fa3d73" integrity sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g== -buffer-crc32@^0.2.1, buffer-crc32@^0.2.13: - version "0.2.13" - resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" - integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== +buffer-crc32@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-1.0.0.tgz#a10993b9055081d55304bd9feb4a072de179f405" + integrity sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w== buffer-equal-constant-time@1.0.1: version "1.0.1" @@ -3238,6 +3206,14 @@ buffer@^5.5.0: base64-js "^1.3.1" ieee754 "^1.1.13" +buffer@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" @@ -3274,6 +3250,17 @@ call-bind@^1.0.0, call-bind@^1.0.2: function-bind "^1.1.1" get-intrinsic "^1.0.2" +call-bind@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" + integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + set-function-length "^1.2.1" + call-me-maybe@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.2.tgz#03f964f19522ba643b1b0693acb9152fe2074baa" @@ -3312,13 +3299,6 @@ cardinal@^2.1.1: ansicolors "~0.3.2" redeyed "~2.1.0" -catharsis@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/catharsis/-/catharsis-0.9.0.tgz#40382a168be0e6da308c277d3a2b3eb40c7d2121" - integrity sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A== - dependencies: - lodash "^4.17.15" - chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" @@ -3370,10 +3350,10 @@ chardet@^0.7.0: resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== -chokidar@^3.0.2: - version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" - integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== +chokidar@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" + integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== dependencies: anymatch "~3.1.2" braces "~3.0.2" @@ -3565,7 +3545,7 @@ colorspace@1.1.x: color "^3.1.3" text-hex "1.0.x" -combined-stream@^1.0.8: +combined-stream@^1.0.6, combined-stream@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== @@ -3577,6 +3557,11 @@ commander@^10.0.0: resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== +commander@^2.19.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + commander@^4.0.1: version "4.1.1" resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" @@ -3587,15 +3572,16 @@ compare-versions@^4.1.2: resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-4.1.4.tgz#3571f4d610924d4414846a4183d386c8f3d51112" integrity sha512-FemMreK9xNyL8gQevsdRMrvO4lFCkQP7qbuktn1q8ndcNk1+0mz7lgE7b/sNvbhVgY4w6tMN1FDp6aADjqw2rw== -compress-commons@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-4.1.2.tgz#6542e59cb63e1f46a8b21b0e06f9a32e4c8b06df" - integrity sha512-D3uMHtGc/fcO1Gt1/L7i1e33VOvD4A9hfQLP+6ewd+BvG/gQ84Yh4oftEhAdjSMgBgwGL+jsppT7JYNpo6MHHg== +compress-commons@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-6.0.2.tgz#26d31251a66b9d6ba23a84064ecd3a6a71d2609e" + integrity sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg== dependencies: - buffer-crc32 "^0.2.13" - crc32-stream "^4.0.2" + crc-32 "^1.2.0" + crc32-stream "^6.0.0" + is-stream "^2.0.1" normalize-path "^3.0.0" - readable-stream "^3.6.0" + readable-stream "^4.0.0" compressible@~2.0.16: version "2.0.18" @@ -3730,13 +3716,13 @@ crc-32@^1.2.0: resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff" integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ== -crc32-stream@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-4.0.3.tgz#85dd677eb78fa7cad1ba17cc506a597d41fc6f33" - integrity sha512-NT7w2JVU7DFroFdYkeq8cywxrgjPHWkdX1wjpRQXPX5Asews3tA+Ght6lddQO5Mkumffp3X7GEqku3epj2toIw== +crc32-stream@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-6.0.0.tgz#8529a3868f8b27abb915f6c3617c0fadedbf9430" + integrity sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g== dependencies: crc-32 "^1.2.0" - readable-stream "^3.4.0" + readable-stream "^4.0.0" create-jest@^29.7.0: version "29.7.0" @@ -3926,7 +3912,7 @@ deep-freeze@0.0.1: resolved "https://registry.yarnpkg.com/deep-freeze/-/deep-freeze-0.0.1.tgz#3a0b0005de18672819dfd38cd31f91179c893e84" integrity sha512-Z+z8HiAvsGwmjqlphnHW5oz6yWlOwu6EQfFTjmeTWlDeda3FS2yv3jhq35TX/ewmsnqB+RX2IdsIOyjJCQN5tg== -deep-is@^0.1.3, deep-is@~0.1.3: +deep-is@^0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== @@ -3952,6 +3938,15 @@ define-data-property@^1.0.1: gopd "^1.0.1" has-property-descriptors "^1.0.0" +define-data-property@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + gopd "^1.0.1" + define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0, define-properties@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" @@ -4025,6 +4020,11 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" +discontinuous-range@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/discontinuous-range/-/discontinuous-range-1.0.0.tgz#e38331f0844bba49b9a9cb71c771585aab1bc65a" + integrity sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ== + doctrine@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" @@ -4157,11 +4157,6 @@ entities@^4.4.0: resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== -entities@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" - integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== - env-paths@^2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" @@ -4224,6 +4219,18 @@ es-abstract@^1.22.1: unbox-primitive "^1.0.2" which-typed-array "^1.1.11" +es-define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" + integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== + dependencies: + get-intrinsic "^1.2.4" + +es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + es-get-iterator@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.3.tgz#3ef87523c5d464d41084b2c3c9c214f1199763d6" @@ -4314,18 +4321,6 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -escodegen@^1.13.0: - version "1.14.3" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" - integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== - dependencies: - esprima "^4.0.1" - estraverse "^4.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - escodegen@^2.0.0, escodegen@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17" @@ -4430,7 +4425,7 @@ eslint@^8.50.0: strip-ansi "^6.0.1" text-table "^0.2.0" -espree@^9.0.0, espree@^9.6.0, espree@^9.6.1: +espree@^9.6.0, espree@^9.6.1: version "9.6.1" resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== @@ -4458,11 +4453,6 @@ esrecurse@^4.3.0: dependencies: estraverse "^5.2.0" -estraverse@^4.2.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" @@ -4493,6 +4483,11 @@ events-listener@^1.1.0: resolved "https://registry.yarnpkg.com/events-listener/-/events-listener-1.1.0.tgz#dd49b4628480eba58fde31b870ee346b3990b349" integrity sha512-Kd3EgYfODHueq6GzVfs/VUolh2EgJsS8hkO3KpnDrxVjU3eq63eXM2ujXkhPP+OkeUOhL8CxdfZbQXzryb5C4g== +events@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + execa@^5.0.0: version "5.1.1" resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" @@ -4515,10 +4510,10 @@ exegesis-express@^4.0.0: dependencies: exegesis "^4.1.0" -exegesis@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/exegesis/-/exegesis-4.1.1.tgz#555dfbec663e71d0d71297a9fe13edfdd64f8849" - integrity sha512-PvSqaMOw2absLBgsthtJyVOeCHN4lxQ1dM7ibXb6TfZZJaoXtGELoEAGJRFvdN16+u9kg8oy1okZXRk8VpimWA== +exegesis@^4.1.0, exegesis@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/exegesis/-/exegesis-4.2.0.tgz#2d248542b3c58a3c51f33fe9f05be1da1d908b4a" + integrity sha512-MOzRyqhvl+hTA4+W4p0saWRIPlu0grIx4ykjMEYgGLiqr/z9NCIlwSq2jF0gyxNjPZD3xyHgmkW6BSaLVUdctg== dependencies: "@apidevtools/json-schema-ref-parser" "^9.0.3" ajv "^8.3.0" @@ -4527,7 +4522,7 @@ exegesis@^4.1.0: content-type "^1.0.4" deep-freeze "0.0.1" events-listener "^1.1.0" - glob "^7.1.3" + glob "^10.3.10" json-ptr "^3.0.1" json-schema-traverse "^1.0.0" lodash "^4.17.11" @@ -4615,6 +4610,11 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== +fast-fifo@^1.2.0, fast-fifo@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/fast-fifo/-/fast-fifo-1.3.2.tgz#286e31de96eb96d38a97899815740ba2a4f3640c" + integrity sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ== + fast-glob@^3.2.9: version "3.3.1" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4" @@ -4631,12 +4631,12 @@ fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0, fast-json-sta resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: +fast-levenshtein@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== -fast-text-encoding@^1.0.0, fast-text-encoding@^1.0.3, fast-text-encoding@^1.0.6: +fast-text-encoding@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz#0aa25f7f638222e3396d72bf936afcf1d42d6867" integrity sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w== @@ -4741,17 +4741,18 @@ find-up@^5.0.0: path-exists "^4.0.0" firebase-tools@^13.6.0: - version "13.6.0" - resolved "https://registry.yarnpkg.com/firebase-tools/-/firebase-tools-13.6.0.tgz#c71278868f192f5a0a7e0ad3a9227e2810e66bff" - integrity sha512-BXXkFkw8FupINBJHd+aPFRKpvIf8R5P1GyOnWjwsk06kgXXdfFuuYctxkL8e82N4sUomdNP5Q/ru/u2esnoSQA== + version "13.14.2" + resolved "https://registry.yarnpkg.com/firebase-tools/-/firebase-tools-13.14.2.tgz#bd7dbd72c239da1fccda8ad3916af456d777541f" + integrity sha512-JK8oJdVnBQDFh2UfA1qA3ULDKD6vwIFvVDXvkQXpxLG1wqnBU55Y+KgKpRwWNcE7lYEYohsXFIney3wMgOkszw== dependencies: - "@google-cloud/pubsub" "^3.0.1" + "@google-cloud/cloud-sql-connector" "^1.3.3" + "@google-cloud/pubsub" "^4.5.0" abort-controller "^3.0.0" ajv "^6.12.6" - archiver "^5.0.0" - async-lock "1.3.2" + archiver "^7.0.0" + async-lock "1.4.1" body-parser "^1.19.0" - chokidar "^3.0.2" + chokidar "^3.6.0" cjson "^0.3.1" cli-table "0.3.11" colorette "^2.0.19" @@ -4762,18 +4763,18 @@ firebase-tools@^13.6.0: cross-spawn "^7.0.3" csv-parse "^5.0.4" deep-equal-in-any-order "^2.0.6" - exegesis "^4.1.0" + exegesis "^4.2.0" exegesis-express "^4.0.0" express "^4.16.4" filesize "^6.1.0" form-data "^4.0.0" fs-extra "^10.1.0" fuzzy "^0.1.3" - glob "^7.1.2" - google-auth-library "^7.11.0" + gaxios "^6.7.0" + glob "^10.4.1" + google-auth-library "^9.11.0" inquirer "^8.2.6" inquirer-autocomplete-prompt "^2.0.1" - js-yaml "^3.13.1" jsonwebtoken "^9.0.0" leven "^3.1.0" libsodium-wrappers "^0.7.10" @@ -4787,19 +4788,21 @@ firebase-tools@^13.6.0: open "^6.3.0" ora "^5.4.1" p-limit "^3.0.1" + pg "^8.11.3" portfinder "^1.0.32" progress "^2.0.3" proxy-agent "^6.3.0" retry "^0.13.1" - rimraf "^3.0.0" + rimraf "^5.0.0" semver "^7.5.2" + sql-formatter "^15.3.0" stream-chain "^2.2.4" stream-json "^1.7.3" strip-ansi "^6.0.1" superstatic "^9.0.3" tar "^6.1.11" tcp-port-used "^1.0.2" - tmp "^0.2.1" + tmp "^0.2.3" triple-beam "^1.3.0" universal-analytics "^0.5.3" update-notifier-cjs "^5.1.6" @@ -4807,6 +4810,7 @@ firebase-tools@^13.6.0: winston "^3.0.0" winston-transport "^4.4.0" ws "^7.2.3" + yaml "^2.4.1" flat-cache@^3.0.4: version "3.1.0" @@ -4842,6 +4846,15 @@ foreground-child@^3.1.0: cross-spawn "^7.0.0" signal-exit "^4.0.1" +form-data@^2.5.0: + version "2.5.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.1.tgz#f2cbec57b5e59e23716e128fe44d4e5dd23895f4" + integrity sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + form-data@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" @@ -4861,11 +4874,6 @@ fresh@0.5.2: resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== -fs-constants@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" - integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== - fs-extra@^10.1.0: version "10.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" @@ -4913,6 +4921,11 @@ function-bind@^1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + function.prototype.name@^1.1.5, function.prototype.name@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" @@ -4947,41 +4960,23 @@ gauge@^4.0.3: strip-ansi "^6.0.1" wide-align "^1.1.5" -gaxios@^4.0.0: - version "4.3.3" - resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-4.3.3.tgz#d44bdefe52d34b6435cc41214fdb160b64abfc22" - integrity sha512-gSaYYIO1Y3wUtdfHmjDUZ8LWaxJQpiavzbF5Kq53akSzvmVg0RfyOcFDbO1KJ/KCGRFz2qG+lS81F0nkr7cRJA== +gaxios@^6.0.0, gaxios@^6.0.3, gaxios@^6.1.1, gaxios@^6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-6.7.0.tgz#37b7c5961cb67d8d4b0ae8110dcd83cc6791eb6d" + integrity sha512-DSrkyMTfAnAm4ks9Go20QGOcXEyW/NmZhvTYBU2rb4afBB393WIMQPWPEDMl/k8xqiNN9HYq2zao3oWXsdl2Tg== dependencies: - abort-controller "^3.0.0" extend "^3.0.2" - https-proxy-agent "^5.0.0" - is-stream "^2.0.0" - node-fetch "^2.6.7" - -gaxios@^5.0.0, gaxios@^5.0.1: - version "5.1.3" - resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-5.1.3.tgz#f7fa92da0fe197c846441e5ead2573d4979e9013" - integrity sha512-95hVgBRgEIRQQQHIbnxBXeHbW4TqFk4ZDJW7wmVtvYar72FdhRIo1UGOLS2eRAKCPEdPBWu+M7+A33D9CdX9rA== - dependencies: - extend "^3.0.2" - https-proxy-agent "^5.0.0" + https-proxy-agent "^7.0.1" is-stream "^2.0.0" node-fetch "^2.6.9" + uuid "^10.0.0" -gcp-metadata@^4.2.0: - version "4.3.1" - resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-4.3.1.tgz#fb205fe6a90fef2fd9c85e6ba06e5559ee1eefa9" - integrity sha512-x850LS5N7V1F3UcV7PoupzGsyD6iVwTVvsh3tbXfkctZnBnjW5yu5z1/3k3SehF7TyoTIe78rJs02GMMy+LF+A== - dependencies: - gaxios "^4.0.0" - json-bigint "^1.0.0" - -gcp-metadata@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-5.3.0.tgz#6f45eb473d0cb47d15001476b48b663744d25408" - integrity sha512-FNTkdNEnBdlqF2oatizolQqNANMrcqJt6AAYt99B3y1aLLC8Hc5IOBb+ZnnzllodEEf6xMBp6wRcBbc16fa65w== +gcp-metadata@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-6.1.0.tgz#9b0dd2b2445258e7597f2024332d20611cbd6b8c" + integrity sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg== dependencies: - gaxios "^5.0.0" + gaxios "^6.0.0" json-bigint "^1.0.0" gensync@^1.0.0-beta.2: @@ -5004,11 +4999,27 @@ get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@ has-proto "^1.0.1" has-symbols "^1.0.3" +get-intrinsic@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" + integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + get-package-type@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== +get-stdin@=8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-8.0.0.tgz#cbad6a73feb75f6eeb22ba9e01f89aa28aa97a53" + integrity sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg== + get-stream@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" @@ -5070,16 +5081,17 @@ glob-slasher@^1.0.1: lodash.isobject "^2.4.1" toxic "^1.0.0" -glob@^10.2.2: - version "10.3.5" - resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.5.tgz#4c0e46b5bccd78ac42b06a7eaaeb9ee34062968e" - integrity sha512-bYUpUD7XDEHI4Q2O5a7PXGvyw4deKR70kHiDxzQbe925wbZknhOzUt2xBgTkYL6RBcVeXYuD9iNYeqoWbBZQnA== +glob@^10.0.0, glob@^10.2.2, glob@^10.3.10, glob@^10.3.7, glob@^10.4.1: + version "10.4.5" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" + integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== dependencies: foreground-child "^3.1.0" - jackspeak "^2.0.3" - minimatch "^9.0.1" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - path-scurry "^1.10.1" + jackspeak "^3.1.2" + minimatch "^9.0.4" + minipass "^7.1.2" + package-json-from-dist "^1.0.0" + path-scurry "^1.11.1" glob@^5.0.3: version "5.0.15" @@ -5092,7 +5104,7 @@ glob@^5.0.3: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.2.3: +glob@^7.1.3, glob@^7.1.4: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -5104,17 +5116,6 @@ glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.2.3: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^8.0.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" - integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^5.0.1" - once "^1.3.0" - global-dirs@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.1.tgz#0c488971f066baceda21447aecb1a8b911d22485" @@ -5153,70 +5154,47 @@ globby@^11.1.0: merge2 "^1.4.1" slash "^3.0.0" -google-auth-library@^7.11.0: - version "7.14.1" - resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-7.14.1.tgz#e3483034162f24cc71b95c8a55a210008826213c" - integrity sha512-5Rk7iLNDFhFeBYc3s8l1CqzbEBcdhwR193RlD4vSNFajIcINKI8W8P0JLmBpwymHqqWbX34pJDQu39cSy/6RsA== +google-auth-library@^9.11.0, google-auth-library@^9.2.0, google-auth-library@^9.3.0, google-auth-library@^9.7.0: + version "9.13.0" + resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-9.13.0.tgz#0735ecdc33d350699dbf3ff48601a856911bbcff" + integrity sha512-p9Y03Uzp/Igcs36zAaB0XTSwZ8Y0/tpYiz5KIde5By+H9DCVUSYtDWZu6aFXsWTqENMb8BD/pDT3hR8NVrPkfA== dependencies: - arrify "^2.0.0" base64-js "^1.3.0" ecdsa-sig-formatter "^1.0.11" - fast-text-encoding "^1.0.0" - gaxios "^4.0.0" - gcp-metadata "^4.2.0" - gtoken "^5.0.4" + gaxios "^6.1.1" + gcp-metadata "^6.1.0" + gtoken "^7.0.0" jws "^4.0.0" - lru-cache "^6.0.0" -google-auth-library@^8.0.2: - version "8.9.0" - resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-8.9.0.tgz#15a271eb2ec35d43b81deb72211bd61b1ef14dd0" - integrity sha512-f7aQCJODJFmYWN6PeNKzgvy9LI2tYmXnzpNDHEjG5sDNPgGb2FXQyTBnXeSH+PAtpKESFD+LmHw3Ox3mN7e1Fg== +google-gax@^4.3.3: + version "4.3.8" + resolved "https://registry.yarnpkg.com/google-gax/-/google-gax-4.3.8.tgz#cc0111d764a803cedd616217b0fac48873dc3209" + integrity sha512-SKAQKtvdjtNW3PMOhmKEqpQP+2C5ZqNKfwWxy70efpSwxvRYuAcgMJs6aRHTBPJjz3SO6ZbiXwM6WIuGYFZ7LQ== dependencies: - arrify "^2.0.0" - base64-js "^1.3.0" - ecdsa-sig-formatter "^1.0.11" - fast-text-encoding "^1.0.0" - gaxios "^5.0.0" - gcp-metadata "^5.3.0" - gtoken "^6.1.0" - jws "^4.0.0" - lru-cache "^6.0.0" - -google-gax@^3.6.1: - version "3.6.1" - resolved "https://registry.yarnpkg.com/google-gax/-/google-gax-3.6.1.tgz#02c78fc496f5adf86f2ca9145545f4b6575f6118" - integrity sha512-g/lcUjGcB6DSw2HxgEmCDOrI/CByOwqRvsuUvNalHUK2iPPPlmAIpbMbl62u0YufGMr8zgE3JL7th6dCb1Ry+w== - dependencies: - "@grpc/grpc-js" "~1.8.0" - "@grpc/proto-loader" "^0.7.0" + "@grpc/grpc-js" "^1.10.9" + "@grpc/proto-loader" "^0.7.13" "@types/long" "^4.0.0" - "@types/rimraf" "^3.0.2" abort-controller "^3.0.0" duplexify "^4.0.0" - fast-text-encoding "^1.0.3" - google-auth-library "^8.0.2" - is-stream-ended "^0.1.4" + google-auth-library "^9.3.0" node-fetch "^2.6.1" object-hash "^3.0.0" - proto3-json-serializer "^1.0.0" - protobufjs "7.2.4" - protobufjs-cli "1.1.1" - retry-request "^5.0.0" - -google-p12-pem@^3.1.3: - version "3.1.4" - resolved "https://registry.yarnpkg.com/google-p12-pem/-/google-p12-pem-3.1.4.tgz#123f7b40da204de4ed1fbf2fd5be12c047fc8b3b" - integrity sha512-HHuHmkLgwjdmVRngf5+gSmpkyaRI6QmOg77J8tkNBHhNEI62sGHyw4/+UkgyZEI7h84NbWprXDJ+sa3xOYFvTg== - dependencies: - node-forge "^1.3.1" + proto3-json-serializer "^2.0.2" + protobufjs "^7.3.2" + retry-request "^7.0.0" + uuid "^9.0.1" -google-p12-pem@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/google-p12-pem/-/google-p12-pem-4.0.1.tgz#82841798253c65b7dc2a4e5fe9df141db670172a" - integrity sha512-WPkN4yGtz05WZ5EhtlxNDWPhC4JIic6G8ePitwUWy4l+XPVYec+a0j0Ts47PDtW59y3RwAhUd9/h9ZZ63px6RQ== +googleapis-common@^7.0.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/googleapis-common/-/googleapis-common-7.2.0.tgz#5c19102c9af1e5d27560be5e69ee2ccf68755d42" + integrity sha512-/fhDZEJZvOV3X5jmD+fKxMqma5q2Q9nZNSF3kn1F18tpxmA86BcTxAGBQdM0N89Z3bEaIs+HVznSmFJEAmMTjA== dependencies: - node-forge "^1.3.1" + extend "^3.0.2" + gaxios "^6.0.3" + google-auth-library "^9.7.0" + qs "^6.7.0" + url-template "^2.0.8" + uuid "^9.0.0" gopd@^1.0.1: version "1.0.1" @@ -5237,7 +5215,7 @@ graceful-fs@4.2.10: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== -graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.6, graceful-fs@^4.2.9: +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.6, graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -5247,22 +5225,12 @@ graphemer@^1.4.0: resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== -gtoken@^5.0.4: - version "5.3.2" - resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-5.3.2.tgz#deb7dc876abe002178e0515e383382ea9446d58f" - integrity sha512-gkvEKREW7dXWF8NV8pVrKfW7WqReAmjjkMBh6lNCCGOM4ucS0r0YyXXl0r/9Yj8wcW/32ISkfc8h5mPTDbtifQ== - dependencies: - gaxios "^4.0.0" - google-p12-pem "^3.1.3" - jws "^4.0.0" - -gtoken@^6.1.0: - version "6.1.2" - resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-6.1.2.tgz#aeb7bdb019ff4c3ba3ac100bbe7b6e74dce0e8bc" - integrity sha512-4ccGpzz7YAr7lxrT2neugmXQ3hP9ho2gcaityLVkiUecAiwiy60Ii8gRbZeOsXV19fYaRjgBSshs8kXw+NKCPQ== +gtoken@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-7.1.0.tgz#d61b4ebd10132222817f7222b1e6064bd463fc26" + integrity sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw== dependencies: - gaxios "^5.0.1" - google-p12-pem "^4.0.0" + gaxios "^6.0.0" jws "^4.0.0" harmony-reflect@^1.4.6: @@ -5299,6 +5267,13 @@ has-property-descriptors@^1.0.0: dependencies: get-intrinsic "^1.1.1" +has-property-descriptors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== + dependencies: + es-define-property "^1.0.0" + has-proto@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" @@ -5333,6 +5308,13 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" +hasown@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + heap-js@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/heap-js/-/heap-js-2.3.0.tgz#8eed2cede31ec312aa696eef1d4df0565841f183" @@ -5405,6 +5387,14 @@ https-proxy-agent@^5.0.0, https-proxy-agent@^5.0.1: agent-base "6" debug "4" +https-proxy-agent@^7.0.1: + version "7.0.5" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz#9e8b5013873299e11fab6fd548405da2d6c602b2" + integrity sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw== + dependencies: + agent-base "^7.0.2" + debug "4" + https-proxy-agent@^7.0.2, https-proxy-agent@^7.0.3: version "7.0.4" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz#8e97b841a029ad8ddc8731f26595bad868cb4168" @@ -5460,7 +5450,7 @@ identity-obj-proxy@^3.0.0: dependencies: harmony-reflect "^1.4.6" -ieee754@^1.1.13: +ieee754@^1.1.13, ieee754@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== @@ -5796,7 +5786,7 @@ is-stream-ended@^0.1.4: resolved "https://registry.yarnpkg.com/is-stream-ended/-/is-stream-ended-0.1.4.tgz#f50224e95e06bce0e356d440a4827cd35b267eda" integrity sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw== -is-stream@^2.0.0: +is-stream@^2.0.0, is-stream@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== @@ -5968,10 +5958,10 @@ iterator.prototype@^1.1.2: reflect.getprototypeof "^1.0.4" set-function-name "^2.0.1" -jackspeak@^2.0.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.3.tgz#95e4cbcc03b3eb357bf6bcce14a903fb3d1151e1" - integrity sha512-R2bUw+kVZFS/h1AZqBKrSgDmdmjApzgY0AlCPumopFiAlbUxE2gf+SCuBzQ0cP5hHmUmFYF5yw55T97Th5Kstg== +jackspeak@^3.1.2: + version "3.4.3" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a" + integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== dependencies: "@isaacs/cliui" "^8.0.2" optionalDependencies: @@ -6463,39 +6453,11 @@ js-yaml@^4.1.0: dependencies: argparse "^2.0.1" -js2xmlparser@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/js2xmlparser/-/js2xmlparser-4.0.2.tgz#2a1fdf01e90585ef2ae872a01bc169c6a8d5e60a" - integrity sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA== - dependencies: - xmlcreate "^2.0.4" - jsbn@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-1.1.0.tgz#b01307cb29b618a1ed26ec79e911f803c4da0040" integrity sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A== -jsdoc@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/jsdoc/-/jsdoc-4.0.2.tgz#a1273beba964cf433ddf7a70c23fd02c3c60296e" - integrity sha512-e8cIg2z62InH7azBBi3EsSEqrKx+nUtAS5bBcYTSpZFA+vhNPyhv8PTFZ0WsjOPDj04/dOLlm08EDcQJDqaGQg== - dependencies: - "@babel/parser" "^7.20.15" - "@jsdoc/salty" "^0.2.1" - "@types/markdown-it" "^12.2.3" - bluebird "^3.7.2" - catharsis "^0.9.0" - escape-string-regexp "^2.0.0" - js2xmlparser "^4.0.2" - klaw "^3.0.0" - markdown-it "^12.3.2" - markdown-it-anchor "^8.4.1" - marked "^4.0.10" - mkdirp "^1.0.4" - requizzle "^0.2.3" - strip-json-comments "^3.1.0" - underscore "~1.13.2" - jsdom@^20.0.0: version "20.0.3" resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-20.0.3.tgz#886a41ba1d4726f67a8858028c99489fed6ad4db" @@ -6668,13 +6630,6 @@ keyv@^4.5.3: dependencies: json-buffer "3.0.1" -klaw@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/klaw/-/klaw-3.0.0.tgz#b11bec9cf2492f06756d6e809ab73a2910259146" - integrity sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g== - dependencies: - graceful-fs "^4.1.9" - kleur@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" @@ -6705,14 +6660,6 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" -levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - libsodium-wrappers@^0.7.10: version "0.7.13" resolved "https://registry.yarnpkg.com/libsodium-wrappers/-/libsodium-wrappers-0.7.13.tgz#83299e06ee1466057ba0e64e532777d2929b90d3" @@ -6740,13 +6687,6 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -linkify-it@^3.0.1: - version "3.0.3" - resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-3.0.3.tgz#a98baf44ce45a550efb4d49c769d07524cc2fa2e" - integrity sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ== - dependencies: - uc.micro "^1.0.1" - locate-path@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" @@ -6776,21 +6716,6 @@ lodash.debounce@^4.0.8: resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== -lodash.defaults@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" - integrity sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ== - -lodash.difference@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.difference/-/lodash.difference-4.5.0.tgz#9ccb4e505d486b91651345772885a2df27fd017c" - integrity sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA== - -lodash.flatten@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" - integrity sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g== - lodash.includes@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" @@ -6853,11 +6778,6 @@ lodash.snakecase@^4.1.1: resolved "https://registry.yarnpkg.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz#39d714a35357147837aefd64b5dcbb16becd8f8d" integrity sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw== -lodash.union@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88" - integrity sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw== - lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" @@ -6895,6 +6815,11 @@ loose-envify@^1.1.0, loose-envify@^1.4.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" +lru-cache@^10.2.0: + version "10.4.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" + integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== + lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" @@ -6914,11 +6839,6 @@ lru-cache@^7.14.1, lru-cache@^7.7.1: resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== -"lru-cache@^9.1.1 || ^10.0.0": - version "10.0.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.0.1.tgz#0a3be479df549cca0e5d693ac402ff19537a6b7a" - integrity sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g== - lz-string@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.5.0.tgz#c1ab50f77887b712621201ba9fd4e3a6ed099941" @@ -6971,22 +6891,6 @@ makeerror@1.0.12: dependencies: tmpl "1.0.5" -markdown-it-anchor@^8.4.1: - version "8.6.7" - resolved "https://registry.yarnpkg.com/markdown-it-anchor/-/markdown-it-anchor-8.6.7.tgz#ee6926daf3ad1ed5e4e3968b1740eef1c6399634" - integrity sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA== - -markdown-it@^12.3.2: - version "12.3.2" - resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-12.3.2.tgz#bf92ac92283fe983fe4de8ff8abfb5ad72cd0c90" - integrity sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg== - dependencies: - argparse "^2.0.1" - entities "~2.1.0" - linkify-it "^3.0.1" - mdurl "^1.0.1" - uc.micro "^1.0.5" - marked-terminal@^5.1.1: version "5.2.0" resolved "https://registry.yarnpkg.com/marked-terminal/-/marked-terminal-5.2.0.tgz#c5370ec2bae24fb2b34e147b731c94fa933559d3" @@ -6999,16 +6903,11 @@ marked-terminal@^5.1.1: node-emoji "^1.11.0" supports-hyperlinks "^2.3.0" -marked@^4.0.10, marked@^4.0.14: +marked@^4.0.14: version "4.3.0" resolved "https://registry.yarnpkg.com/marked/-/marked-4.3.0.tgz#796362821b019f734054582038b116481b456cf3" integrity sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A== -mdurl@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" - integrity sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g== - media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" @@ -7081,7 +6980,7 @@ min-indent@^1.0.0: dependencies: brace-expansion "^1.1.7" -minimatch@^5.0.1, minimatch@^5.1.0: +minimatch@^5.1.0: version "5.1.6" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== @@ -7095,10 +6994,10 @@ minimatch@^6.1.6: dependencies: brace-expansion "^2.0.1" -minimatch@^9.0.1: - version "9.0.3" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" - integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== +minimatch@^9.0.4: + version "9.0.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== dependencies: brace-expansion "^2.0.1" @@ -7163,6 +7062,11 @@ minipass@^5.0.0: resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.3.tgz#05ea638da44e475037ed94d1c7efcc76a25e1974" integrity sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg== +minipass@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" + integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== + minizlib@^2.1.1, minizlib@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" @@ -7183,11 +7087,16 @@ mkdirp@^0.5.1, mkdirp@^0.5.6: dependencies: minimist "^1.2.6" -mkdirp@^1.0.3, mkdirp@^1.0.4: +mkdirp@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== +moo@^0.5.0: + version "0.5.2" + resolved "https://registry.yarnpkg.com/moo/-/moo-0.5.2.tgz#f9fe82473bc7c184b0d32e2215d3f6e67278733c" + integrity sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q== + morgan@^1.10.0, morgan@^1.8.2: version "1.10.0" resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.10.0.tgz#091778abc1fc47cd3509824653dae1faab6b17d7" @@ -7234,6 +7143,16 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== +nearley@^2.20.1: + version "2.20.1" + resolved "https://registry.yarnpkg.com/nearley/-/nearley-2.20.1.tgz#246cd33eff0d012faf197ff6774d7ac78acdd474" + integrity sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ== + dependencies: + commander "^2.19.0" + moo "^0.5.0" + railroad-diagrams "^1.0.0" + randexp "0.4.6" + negotiator@0.6.3, negotiator@^0.6.3: version "0.6.3" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" @@ -7270,11 +7189,6 @@ node-fetch@^2.6.1, node-fetch@^2.6.12, node-fetch@^2.6.7, node-fetch@^2.6.9: dependencies: whatwg-url "^5.0.0" -node-forge@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" - integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== - node-gyp@^9.4.0: version "9.4.0" resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-9.4.0.tgz#2a7a91c7cba4eccfd95e949369f27c9ba704f369" @@ -7399,6 +7313,11 @@ object-inspect@^1.12.3, object-inspect@^1.9.0: resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== +object-inspect@^1.13.1: + version "1.13.2" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.2.tgz#dea0088467fb991e67af4058147a24824a3043ff" + integrity sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g== + object-is@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" @@ -7516,18 +7435,6 @@ openapi3-ts@^3.1.1: dependencies: yaml "^2.2.1" -optionator@^0.8.1: - version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" - optionator@^0.9.3: version "0.9.3" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" @@ -7618,6 +7525,11 @@ p-queue@6.6.2: eventemitter3 "^4.0.4" p-timeout "^3.2.0" +p-throttle@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/p-throttle/-/p-throttle-5.1.0.tgz#7daf27412a86f34154ff1c462ba33e91a8d7afe6" + integrity sha512-+N+s2g01w1Zch4D0K3OpnPDqLOKmLcQ4BvIFq3JC0K29R28vUOjWpO+OJZBNt8X9i3pFCksZJZ0YXkUGjaFE6g== + p-timeout@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" @@ -7652,6 +7564,11 @@ pac-resolver@^7.0.0: degenerator "^5.0.0" netmask "^2.0.2" +package-json-from-dist@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz#e501cd3094b278495eb4258d4c9f6d5ac3019f00" + integrity sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw== + parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -7706,12 +7623,12 @@ path-parse@^1.0.7: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== -path-scurry@^1.10.1: - version "1.10.1" - resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.1.tgz#9ba6bf5aa8500fe9fd67df4f0d9483b2b0bfc698" - integrity sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ== +path-scurry@^1.11.1: + version "1.11.1" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" + integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== dependencies: - lru-cache "^9.1.1 || ^10.0.0" + lru-cache "^10.2.0" minipass "^5.0.0 || ^6.0.2 || ^7.0.0" path-to-regexp@0.1.7: @@ -7731,6 +7648,62 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== +pg-cloudflare@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/pg-cloudflare/-/pg-cloudflare-1.1.1.tgz#e6d5833015b170e23ae819e8c5d7eaedb472ca98" + integrity sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q== + +pg-connection-string@^2.6.4: + version "2.6.4" + resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-2.6.4.tgz#f543862adfa49fa4e14bc8a8892d2a84d754246d" + integrity sha512-v+Z7W/0EO707aNMaAEfiGnGL9sxxumwLl2fJvCQtMn9Fxsg+lPpPkdcyBSv/KFgpGdYkMfn+EI1Or2EHjpgLCA== + +pg-int8@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/pg-int8/-/pg-int8-1.0.1.tgz#943bd463bf5b71b4170115f80f8efc9a0c0eb78c" + integrity sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw== + +pg-pool@^3.6.2: + version "3.6.2" + resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-3.6.2.tgz#3a592370b8ae3f02a7c8130d245bc02fa2c5f3f2" + integrity sha512-Htjbg8BlwXqSBQ9V8Vjtc+vzf/6fVUuak/3/XXKA9oxZprwW3IMDQTGHP+KDmVL7rtd+R1QjbnCFPuTHm3G4hg== + +pg-protocol@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/pg-protocol/-/pg-protocol-1.6.1.tgz#21333e6d83b01faaebfe7a33a7ad6bfd9ed38cb3" + integrity sha512-jPIlvgoD63hrEuihvIg+tJhoGjUsLPn6poJY9N5CnlPd91c2T18T/9zBtLxZSb1EhYxBRoZJtzScCaWlYLtktg== + +pg-types@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/pg-types/-/pg-types-2.2.0.tgz#2d0250d636454f7cfa3b6ae0382fdfa8063254a3" + integrity sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA== + dependencies: + pg-int8 "1.0.1" + postgres-array "~2.0.0" + postgres-bytea "~1.0.0" + postgres-date "~1.0.4" + postgres-interval "^1.1.0" + +pg@^8.11.3: + version "8.12.0" + resolved "https://registry.yarnpkg.com/pg/-/pg-8.12.0.tgz#9341724db571022490b657908f65aee8db91df79" + integrity sha512-A+LHUSnwnxrnL/tZ+OLfqR1SxLN3c/pgDztZ47Rpbsd4jUytsTtwQo/TLPRzPJMp/1pbhYVhH9cuSZLAajNfjQ== + dependencies: + pg-connection-string "^2.6.4" + pg-pool "^3.6.2" + pg-protocol "^1.6.1" + pg-types "^2.1.0" + pgpass "1.x" + optionalDependencies: + pg-cloudflare "^1.1.1" + +pgpass@1.x: + version "1.0.5" + resolved "https://registry.yarnpkg.com/pgpass/-/pgpass-1.0.5.tgz#9b873e4a564bb10fa7a7dbd55312728d422a223d" + integrity sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug== + dependencies: + split2 "^4.1.0" + picocolors@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" @@ -7762,16 +7735,33 @@ portfinder@^1.0.32: debug "^3.2.7" mkdirp "^0.5.6" +postgres-array@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postgres-array/-/postgres-array-2.0.0.tgz#48f8fce054fbc69671999329b8834b772652d82e" + integrity sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA== + +postgres-bytea@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/postgres-bytea/-/postgres-bytea-1.0.0.tgz#027b533c0aa890e26d172d47cf9ccecc521acd35" + integrity sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w== + +postgres-date@~1.0.4: + version "1.0.7" + resolved "https://registry.yarnpkg.com/postgres-date/-/postgres-date-1.0.7.tgz#51bc086006005e5061c591cee727f2531bf641a8" + integrity sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q== + +postgres-interval@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/postgres-interval/-/postgres-interval-1.2.0.tgz#b460c82cb1587507788819a06aa0fffdb3544695" + integrity sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ== + dependencies: + xtend "^4.0.0" + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== - prettier@^2.3.1: version "2.8.8" resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" @@ -7800,6 +7790,11 @@ process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== + progress@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" @@ -7840,51 +7835,17 @@ proto-list@~1.2.1: resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA== -proto3-json-serializer@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/proto3-json-serializer/-/proto3-json-serializer-1.1.1.tgz#1b5703152b6ce811c5cdcc6468032caf53521331" - integrity sha512-AwAuY4g9nxx0u52DnSMkqqgyLHaW/XaPLtaAo3y/ZCfeaQB/g4YDH4kb8Wc/mWzWvu0YjOznVnfn373MVZZrgw== - dependencies: - protobufjs "^7.0.0" - -protobufjs-cli@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/protobufjs-cli/-/protobufjs-cli-1.1.1.tgz#f531201b1c8c7772066aa822bf9a08318b24a704" - integrity sha512-VPWMgIcRNyQwWUv8OLPyGQ/0lQY/QTQAVN5fh+XzfDwsVw1FZ2L3DM/bcBf8WPiRz2tNpaov9lPZfNcmNo6LXA== - dependencies: - chalk "^4.0.0" - escodegen "^1.13.0" - espree "^9.0.0" - estraverse "^5.1.0" - glob "^8.0.0" - jsdoc "^4.0.0" - minimist "^1.2.0" - semver "^7.1.2" - tmp "^0.2.1" - uglify-js "^3.7.7" - -protobufjs@7.2.4: - version "7.2.4" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.2.4.tgz#3fc1ec0cdc89dd91aef9ba6037ba07408485c3ae" - integrity sha512-AT+RJgD2sH8phPmCf7OUZR8xGdcJRga4+1cOaXJ64hvcSkVhNcRHOwIxUatPH15+nj59WAGTDv3LSGZPEQbJaQ== +proto3-json-serializer@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/proto3-json-serializer/-/proto3-json-serializer-2.0.2.tgz#5b705203b4d58f3880596c95fad64902617529dd" + integrity sha512-SAzp/O4Yh02jGdRc+uIrGoe87dkN/XtwxfZ4ZyafJHymd79ozp5VG5nyZ7ygqPM5+cpLDjjGnYFUkngonyDPOQ== dependencies: - "@protobufjs/aspromise" "^1.1.2" - "@protobufjs/base64" "^1.1.2" - "@protobufjs/codegen" "^2.0.4" - "@protobufjs/eventemitter" "^1.1.0" - "@protobufjs/fetch" "^1.1.0" - "@protobufjs/float" "^1.0.2" - "@protobufjs/inquire" "^1.1.0" - "@protobufjs/path" "^1.1.2" - "@protobufjs/pool" "^1.1.0" - "@protobufjs/utf8" "^1.1.0" - "@types/node" ">=13.7.0" - long "^5.0.0" + protobufjs "^7.2.5" -protobufjs@^7.0.0, protobufjs@^7.2.4: - version "7.2.5" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.2.5.tgz#45d5c57387a6d29a17aab6846dcc283f9b8e7f2d" - integrity sha512-gGXRSXvxQ7UiPgfw8gevrfRWcTlSbOFg+p/N+JVJEK5VhueL2miT6qTymqAmjr1Q5WbOCyJbyrk6JfWKwlFn6A== +protobufjs@^7.2.5, protobufjs@^7.3.2: + version "7.3.2" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.3.2.tgz#60f3b7624968868f6f739430cfbc8c9370e26df4" + integrity sha512-RXyHaACeqXeqAKGLDl68rQKbmObRsTIn4TYVUUug1KfS47YWCo5MacGITEryugIgZqORCvJWEk4l449POg5Txg== dependencies: "@protobufjs/aspromise" "^1.1.2" "@protobufjs/base64" "^1.1.2" @@ -7987,6 +7948,13 @@ qs@^6.6.0: dependencies: side-channel "^1.0.4" +qs@^6.7.0: + version "6.12.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.12.3.tgz#e43ce03c8521b9c7fd7f1f13e514e5ca37727754" + integrity sha512-AWJm14H1vVaO/iNZ4/hO+HyaTehuy9nRqVdkTqlJt0HWvBiBIEXFmb4C0DGeYo3Xes9rrEW+TxHsaigCbN5ICQ== + dependencies: + side-channel "^1.0.6" + querystringify@^2.1.1: version "2.2.0" resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" @@ -7997,6 +7965,24 @@ queue-microtask@^1.2.2: resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== +queue-tick@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/queue-tick/-/queue-tick-1.0.1.tgz#f6f07ac82c1fd60f82e098b417a80e52f1f4c142" + integrity sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag== + +railroad-diagrams@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz#eb7e6267548ddedfb899c1b90e57374559cddb7e" + integrity sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A== + +randexp@0.4.6: + version "0.4.6" + resolved "https://registry.yarnpkg.com/randexp/-/randexp-0.4.6.tgz#e986ad5e5e31dae13ddd6f7b3019aa7c87f60ca3" + integrity sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ== + dependencies: + discontinuous-range "1.0.0" + ret "~0.1.10" + range-parser@~1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" @@ -8119,7 +8105,7 @@ read-package-json@1: optionalDependencies: graceful-fs "2 || 3" -readable-stream@^2.0.0, readable-stream@^2.0.5: +readable-stream@^2.0.5: version "2.3.8" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== @@ -8141,6 +8127,17 @@ readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: string_decoder "^1.1.1" util-deprecate "^1.0.1" +readable-stream@^4.0.0: + version "4.5.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-4.5.2.tgz#9e7fc4c45099baeed934bff6eb97ba6cf2729e09" + integrity sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g== + dependencies: + abort-controller "^3.0.0" + buffer "^6.0.3" + events "^3.3.0" + process "^0.11.10" + string_decoder "^1.3.0" + readdir-glob@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/readdir-glob/-/readdir-glob-1.1.3.tgz#c3d831f51f5e7bfa62fa2ffbe4b508c640f09584" @@ -8278,13 +8275,6 @@ requires-port@^1.0.0: resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== -requizzle@^0.2.3: - version "0.2.4" - resolved "https://registry.yarnpkg.com/requizzle/-/requizzle-0.2.4.tgz#319eb658b28c370f0c20f968fa8ceab98c13d27c" - integrity sha512-JRrFk1D4OQ4SqovXOgdav+K8EAhSB/LJZqCz8tbX0KObcdeM15Ss59ozWMBWmmINMagCwmqn4ZNryUGpBsl6Jw== - dependencies: - lodash "^4.17.21" - resolve-cwd@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" @@ -8333,13 +8323,19 @@ restore-cursor@^3.1.0: onetime "^5.1.0" signal-exit "^3.0.2" -retry-request@^5.0.0: - version "5.0.2" - resolved "https://registry.yarnpkg.com/retry-request/-/retry-request-5.0.2.tgz#143d85f90c755af407fcc46b7166a4ba520e44da" - integrity sha512-wfI3pk7EE80lCIXprqh7ym48IHYdwmAAzESdbU8Q9l7pnRCk9LEhpbOTNKjz6FARLm/Bl5m+4F0ABxOkYUujSQ== +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +retry-request@^7.0.0: + version "7.0.2" + resolved "https://registry.yarnpkg.com/retry-request/-/retry-request-7.0.2.tgz#60bf48cfb424ec01b03fca6665dee91d06dd95f3" + integrity sha512-dUOvLMJ0/JJYEn8NrpOaGNE7X3vpI5XlZS/u0ANjqtcZVKnIxP7IgCFwrKTxENw29emmwug53awKtaMm4i9g5w== dependencies: - debug "^4.1.1" + "@types/request" "^2.48.8" extend "^3.0.2" + teeny-request "^9.0.0" retry@^0.12.0: version "0.12.0" @@ -8356,13 +8352,20 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rimraf@^3.0.0, rimraf@^3.0.2: +rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: glob "^7.1.3" +rimraf@^5.0.0: + version "5.0.10" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-5.0.10.tgz#23b9843d3dc92db71f96e1a2ce92e39fd2a8221c" + integrity sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ== + dependencies: + glob "^10.3.7" + router@^1.3.1: version "1.3.8" resolved "https://registry.yarnpkg.com/router/-/router-1.3.8.tgz#1509614ae1fbc67139a728481c54b057ecfb04bf" @@ -8470,7 +8473,7 @@ semver@^6.0.0, semver@^6.3.0, semver@^6.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.0.0, semver@^7.1.2, semver@^7.3.5, semver@^7.3.7, semver@^7.5.2, semver@^7.5.3, semver@^7.5.4: +semver@^7.0.0, semver@^7.3.5, semver@^7.3.7, semver@^7.5.2, semver@^7.5.3, semver@^7.5.4: version "7.6.0" resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d" integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== @@ -8511,6 +8514,18 @@ set-blocking@^2.0.0: resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== +set-function-length@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" + integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" + set-function-name@^2.0.0, set-function-name@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" @@ -8558,6 +8573,16 @@ side-channel@^1.0.4: get-intrinsic "^1.0.2" object-inspect "^1.9.0" +side-channel@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" + integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + object-inspect "^1.13.1" + signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: version "3.0.7" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" @@ -8654,6 +8679,11 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== +split2@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4" + integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== + sprintf-js@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a" @@ -8664,6 +8694,15 @@ sprintf-js@~1.0.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== +sql-formatter@^15.3.0: + version "15.3.2" + resolved "https://registry.yarnpkg.com/sql-formatter/-/sql-formatter-15.3.2.tgz#696fb84c3ce6d368b0d16248a605aa0e7a41751e" + integrity sha512-pNxSMf5DtwhpZ8gUcOGCGZIWtCcyAUx9oLgAtlO4ag7DvlfnETL0BGqXaISc84pNrXvTWmt8Wal1FWKxdTsL3Q== + dependencies: + argparse "^2.0.1" + get-stdin "=8.0.0" + nearley "^2.20.1" + ssri@^10.0.0: version "10.0.5" resolved "https://registry.yarnpkg.com/ssri/-/ssri-10.0.5.tgz#e49efcd6e36385196cb515d3a2ad6c3f0265ef8c" @@ -8705,6 +8744,13 @@ stream-chain@^2.2.4, stream-chain@^2.2.5: resolved "https://registry.yarnpkg.com/stream-chain/-/stream-chain-2.2.5.tgz#b30967e8f14ee033c5b9a19bbe8a2cba90ba0d09" integrity sha512-1TJmBx6aSWqZ4tx7aTpBDXK0/e2hhcNSTV8+CbFJtDjbb+I1mZ8lHit0Grw9GRT+6JbIrrDd8esncgBi8aBXGA== +stream-events@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/stream-events/-/stream-events-1.0.5.tgz#bbc898ec4df33a4902d892333d47da9bf1c406d5" + integrity sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg== + dependencies: + stubs "^3.0.0" + stream-json@^1.7.3: version "1.8.0" resolved "https://registry.yarnpkg.com/stream-json/-/stream-json-1.8.0.tgz#53f486b2e3b4496c506131f8d7260ba42def151c" @@ -8717,6 +8763,17 @@ stream-shift@^1.0.0: resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== +streamx@^2.15.0: + version "2.18.0" + resolved "https://registry.yarnpkg.com/streamx/-/streamx-2.18.0.tgz#5bc1a51eb412a667ebfdcd4e6cf6a6fc65721ac7" + integrity sha512-LLUC1TWdjVdn1weXGcSxyTR3T4+acB6tVGXT95y0nGbca4t4o/ng1wKAGTljm9VicuCVLvRlqFYXYy5GwgM7sQ== + dependencies: + fast-fifo "^1.3.2" + queue-tick "^1.0.1" + text-decoder "^1.1.0" + optionalDependencies: + bare-events "^2.2.0" + string-length@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" @@ -8794,7 +8851,7 @@ string.prototype.trimstart@^1.0.7: define-properties "^1.2.0" es-abstract "^1.22.1" -string_decoder@^1.1.1: +string_decoder@^1.1.1, string_decoder@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== @@ -8853,7 +8910,7 @@ strip-indent@^3.0.0: dependencies: min-indent "^1.0.0" -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: +strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== @@ -8863,6 +8920,11 @@ strip-json-comments@~2.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== +stubs@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/stubs/-/stubs-3.0.0.tgz#e8d2ba1fa9c90570303c030b6900f7d5f89abe5b" + integrity sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw== + stylis@4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.2.0.tgz#79daee0208964c8fe695a42fcffcac633a211a51" @@ -8938,16 +9000,14 @@ symbol-tree@^3.2.4: resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== -tar-stream@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" - integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== +tar-stream@^3.0.0: + version "3.1.7" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-3.1.7.tgz#24b3fb5eabada19fe7338ed6d26e5f7c482e792b" + integrity sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ== dependencies: - bl "^4.0.3" - end-of-stream "^1.4.1" - fs-constants "^1.0.0" - inherits "^2.0.3" - readable-stream "^3.1.1" + b4a "^1.6.4" + fast-fifo "^1.2.0" + streamx "^2.15.0" tar@^6.1.11, tar@^6.1.2: version "6.2.1" @@ -8969,6 +9029,17 @@ tcp-port-used@^1.0.2: debug "4.3.1" is2 "^2.0.6" +teeny-request@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/teeny-request/-/teeny-request-9.0.0.tgz#18140de2eb6595771b1b02203312dfad79a4716d" + integrity sha512-resvxdc6Mgb7YEThw6G6bExlXKkv6+YbuzGg9xuXxSgxJF7Ozs+o8Y9+2R3sArdWdW8nOokoQb1yrpFB0pQK2g== + dependencies: + http-proxy-agent "^5.0.0" + https-proxy-agent "^5.0.0" + node-fetch "^2.6.9" + stream-events "^1.0.5" + uuid "^9.0.0" + test-exclude@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" @@ -8978,6 +9049,13 @@ test-exclude@^6.0.0: glob "^7.1.4" minimatch "^3.0.4" +text-decoder@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/text-decoder/-/text-decoder-1.1.1.tgz#5df9c224cebac4a7977720b9f083f9efa1aefde8" + integrity sha512-8zll7REEv4GDD3x4/0pW+ppIxSNs7H1J10IKFZsuOMscumCdM2a+toDGLPA3T+1+fLBql4zbt5z83GEQGGV5VA== + dependencies: + b4a "^1.6.4" + text-hex@1.0.x: version "1.0.0" resolved "https://registry.yarnpkg.com/text-hex/-/text-hex-1.0.0.tgz#69dc9c1b17446ee79a92bf5b884bb4b9127506f5" @@ -9005,12 +9083,10 @@ tmp@^0.0.33: dependencies: os-tmpdir "~1.0.2" -tmp@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" - integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== - dependencies: - rimraf "^3.0.0" +tmp@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.3.tgz#eb783cc22bc1e8bebd0671476d46ea4eb32a79ae" + integrity sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w== tmpl@1.0.5: version "1.0.5" @@ -9121,13 +9197,6 @@ type-check@^0.4.0, type-check@~0.4.0: dependencies: prelude-ls "^1.2.1" -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg== - dependencies: - prelude-ls "~1.1.2" - type-detect@4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" @@ -9207,16 +9276,6 @@ typescript@^5.0.3: resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.5.tgz#42ccef2c571fdbd0f6718b1d1f5e6e5ef006f611" integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ== -uc.micro@^1.0.1, uc.micro@^1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" - integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== - -uglify-js@^3.7.7: - version "3.17.4" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c" - integrity sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g== - unbox-primitive@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" @@ -9227,11 +9286,6 @@ unbox-primitive@^1.0.2: has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" -underscore@~1.13.2: - version "1.13.6" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.6.tgz#04786a1f589dc6c09f761fc5f45b89e935136441" - integrity sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A== - unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" @@ -9362,6 +9416,11 @@ url-parse@^1.5.3: querystringify "^2.1.1" requires-port "^1.0.0" +url-template@^2.0.8: + version "2.0.8" + resolved "https://registry.yarnpkg.com/url-template/-/url-template-2.0.8.tgz#fc565a3cccbff7730c775f5641f9555791439f21" + integrity sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw== + util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" @@ -9377,11 +9436,21 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== +uuid@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-10.0.0.tgz#5a95aa454e6e002725c79055fd42aaba30ca6294" + integrity sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ== + uuid@^8.0.0, uuid@^8.3.2: version "8.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== +uuid@^9.0.0, uuid@^9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" + integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== + v8-to-istanbul@^9.0.1: version "9.1.0" resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz#1b83ed4e397f58c85c266a570fc2558b5feb9265" @@ -9590,11 +9659,6 @@ winston@^3.0.0: triple-beam "^1.3.0" winston-transport "^4.5.0" -word-wrap@~1.2.3: - version "1.2.5" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" - integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== - "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" @@ -9684,10 +9748,10 @@ xmlchars@^2.2.0: resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== -xmlcreate@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/xmlcreate/-/xmlcreate-2.0.4.tgz#0c5ab0f99cdd02a81065fa9cd8f8ae87624889be" - integrity sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg== +xtend@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== y18n@^5.0.5: version "5.0.8" @@ -9709,10 +9773,10 @@ yaml@^1.10.0: resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== -yaml@^2.2.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.2.tgz#f522db4313c671a0ca963a75670f1c12ea909144" - integrity sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg== +yaml@^2.2.1, yaml@^2.4.1: + version "2.5.0" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.5.0.tgz#c6165a721cf8000e91c36490a41d7be25176cf5d" + integrity sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw== yargs-parser@^21.0.1, yargs-parser@^21.1.1: version "21.1.1" @@ -9737,11 +9801,11 @@ yocto-queue@^0.1.0: resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== -zip-stream@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-4.1.1.tgz#1337fe974dbaffd2fa9a1ba09662a66932bd7135" - integrity sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ== +zip-stream@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-6.0.1.tgz#e141b930ed60ccaf5d7fa9c8260e0d1748a2bbfb" + integrity sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA== dependencies: - archiver-utils "^3.0.4" - compress-commons "^4.1.2" - readable-stream "^3.6.0" + archiver-utils "^5.0.0" + compress-commons "^6.0.2" + readable-stream "^4.0.0" From 77c1e27bb169daec576bf9861d36644b72243d50 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 Aug 2024 11:46:22 +0000 Subject: [PATCH 36/90] Bump react and @types/react in /login-workflow/example Bumps [react](https://github.com/facebook/react/tree/HEAD/packages/react) and [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react). These dependencies needed to be updated together. Updates `react` from 18.2.0 to 18.3.1 - [Release notes](https://github.com/facebook/react/releases) - [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/react/commits/v18.3.1/packages/react) Updates `@types/react` from 18.2.7 to 18.3.3 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react) --- updated-dependencies: - dependency-name: react dependency-type: direct:production update-type: version-update:semver-minor - dependency-name: "@types/react" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- login-workflow/example/package.json | 4 ++-- login-workflow/example/yarn.lock | 22 ++++++++-------------- 2 files changed, 10 insertions(+), 16 deletions(-) diff --git a/login-workflow/example/package.json b/login-workflow/example/package.json index 2fda0554..d3610877 100644 --- a/login-workflow/example/package.json +++ b/login-workflow/example/package.json @@ -41,11 +41,11 @@ "@mui/icons-material": "^5.15.7", "@mui/material": "^5.10.15", "@types/node": "^17.0.23", - "@types/react": "^18.0.31", + "@types/react": "^18.3.3", "@types/react-dom": "^18.0.0", "date-fns": "^3.6.0", "i18next": "^23.7.13", - "react": "^18.2.0", + "react": "^18.3.1", "react-app-polyfill": "^3.0.0", "react-dom": "^18.0.0", "react-i18next": "^13.0.3", diff --git a/login-workflow/example/yarn.lock b/login-workflow/example/yarn.lock index 2bbcba3f..fb0bdaa4 100644 --- a/login-workflow/example/yarn.lock +++ b/login-workflow/example/yarn.lock @@ -2649,13 +2649,12 @@ dependencies: "@types/react" "*" -"@types/react@*", "@types/react@^18.0.31": - version "18.2.7" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.7.tgz#dfb4518042a3117a045b8c222316f83414a783b3" - integrity sha512-ojrXpSH2XFCmHm7Jy3q44nXDyN54+EYKP2lBhJ2bqfyPj6cIUW/FZW/Csdia34NQgq7KYcAlHi5184m4X88+yw== +"@types/react@*", "@types/react@^18.3.3": + version "18.3.3" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.3.tgz#9679020895318b0915d7a3ab004d92d33375c45f" + integrity sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw== dependencies: "@types/prop-types" "*" - "@types/scheduler" "*" csstype "^3.0.2" "@types/resolve@1.17.1": @@ -2670,11 +2669,6 @@ resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== -"@types/scheduler@*": - version "0.16.3" - resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.3.tgz#cef09e3ec9af1d63d2a6cc5b383a737e24e6dcf5" - integrity sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ== - "@types/semver@^7.3.12", "@types/semver@^7.3.13": version "7.5.0" resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.0.tgz#591c1ce3a702c45ee15f47a42ade72c2fd78978a" @@ -8888,10 +8882,10 @@ react-transition-group@^4.4.5: loose-envify "^1.4.0" prop-types "^15.6.2" -react@^18.2.0: - version "18.2.0" - resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" - integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== +react@^18.3.1: + version "18.3.1" + resolved "https://registry.yarnpkg.com/react/-/react-18.3.1.tgz#49ab892009c53933625bd16b2533fc754cab2891" + integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ== dependencies: loose-envify "^1.1.0" From 60e4768771625827921baca9a681be577e055a29 Mon Sep 17 00:00:00 2001 From: jeffgreiner-eaton Date: Thu, 1 Aug 2024 08:15:28 -0400 Subject: [PATCH 37/90] test deploy on pr --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 945f452a..49565c01 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# React Workflows +## React Workflows This repository contains reusable, multi-screen workflows that can dramatically accelerate your product development using Brightlayer UI. These workflows implement the screens and behaviors associated with common workflows and can be dropped right into your application. All you need to do is hook them up to your back-end/api. We currently have workflows available for: From fb7f8732146ba5d5e1646d7bd1446214b73f6335 Mon Sep 17 00:00:00 2001 From: jeffgreiner-eaton Date: Thu, 1 Aug 2024 08:22:35 -0400 Subject: [PATCH 38/90] revert change from test deploy on PR --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 49565c01..945f452a 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -## React Workflows +# React Workflows This repository contains reusable, multi-screen workflows that can dramatically accelerate your product development using Brightlayer UI. These workflows implement the screens and behaviors associated with common workflows and can be dropped right into your application. All you need to do is hook them up to your back-end/api. We currently have workflows available for: From d623260f19f698c01c601dd03bffd837170e157b Mon Sep 17 00:00:00 2001 From: Suraj Karambe Date: Fri, 2 Aug 2024 15:22:10 +0530 Subject: [PATCH 39/90] Added Okta to example --- login-workflow/example/package.json | 2 + .../example/src/navigation/AppRouter.tsx | 171 ++++++------ .../example/src/screens/OktaLogin.tsx | 18 ++ login-workflow/example/yarn.lock | 247 +++++++++++++++++- 4 files changed, 357 insertions(+), 81 deletions(-) create mode 100644 login-workflow/example/src/screens/OktaLogin.tsx diff --git a/login-workflow/example/package.json b/login-workflow/example/package.json index d3610877..122c0d72 100644 --- a/login-workflow/example/package.json +++ b/login-workflow/example/package.json @@ -40,6 +40,8 @@ "@emotion/styled": "^11.10.8", "@mui/icons-material": "^5.15.7", "@mui/material": "^5.10.15", + "@okta/okta-auth-js": "^7.7.0", + "@okta/okta-react": "^6.9.0", "@types/node": "^17.0.23", "@types/react": "^18.3.3", "@types/react-dom": "^18.0.0", diff --git a/login-workflow/example/src/navigation/AppRouter.tsx b/login-workflow/example/src/navigation/AppRouter.tsx index 9011eec9..1e7315ac 100644 --- a/login-workflow/example/src/navigation/AppRouter.tsx +++ b/login-workflow/example/src/navigation/AppRouter.tsx @@ -13,12 +13,17 @@ import { useApp } from '../contexts/AppContextProvider'; import { useNavigate } from 'react-router'; import { ProjectAuthUIActions } from '../actions/AuthUIActions'; import { Navigate, Outlet, Route, Routes, To } from 'react-router-dom'; -import { Login } from '../screens/Login'; import { ProjectRegistrationUIActions } from '../actions/RegistrationUIActions'; import { routes } from './Routing'; import { ExampleHome } from '../screens/ExampleHome'; import i18nAppInstance from '../translations/i18n'; import { ChangePassword } from '../components/ChangePassword'; +import { Security } from '@okta/okta-react'; +import OktaAuth, { OktaAuthOptions, toRelativeUrl } from '@okta/okta-auth-js'; +import oktaConfig from '../oktaConfig'; +import { OktaLogin } from '../screens/OktaLogin'; + +const oktaAuth = new OktaAuth(oktaConfig as OktaAuthOptions); export const AppRouter: React.FC = () => { const navigation = useNavigate(); @@ -28,100 +33,106 @@ export const AppRouter: React.FC = () => { navigation(destination as To); }, []); + const restoreOriginalUri = (_oktaAuth: any, originalUri: any): void => { + navigate(toRelativeUrl(originalUri || '/', window.location.origin)); + }; + return ( - - {/* AUTH ROUTES */} - - - - } - > - - - - } - /> - - - - } - /> - - - - } - /> - - - - } - /> - {/* USER APPLICATION ROUTES */} + + + {/* AUTH ROUTES */} + - {app.showChangePasswordDialog && } - + } > + + + } + /> + + + + } + /> + + + + } + /> + + + + } + /> + {/* USER APPLICATION ROUTES */} + + + {app.showChangePasswordDialog && } + + } + > + + + + } + /> + } /> + + - + } /> - } /> + {/* REGISTRATION ROUTES */} - - + + + } - /> - - {/* REGISTRATION ROUTES */} - - - - } - > - } /> - } /> - - + > + } /> + } /> + + + ); }; diff --git a/login-workflow/example/src/screens/OktaLogin.tsx b/login-workflow/example/src/screens/OktaLogin.tsx new file mode 100644 index 00000000..5e2f0a01 --- /dev/null +++ b/login-workflow/example/src/screens/OktaLogin.tsx @@ -0,0 +1,18 @@ +import React from 'react'; +import { OktaLoginScreen } from '@brightlayer-ui/react-auth-workflow'; +import EatonLogo from '../assets/images/eaton_stacked_logo.png'; +import { DebugComponent } from '../components/DebugComponent'; + +export const OktaLogin = (): JSX.Element => ( + } + header={} + errorDisplayConfig={{ + mode: 'message-box', + messageBoxConfig: { + dismissible: true, + position: 'top', + }, + }} + /> +); diff --git a/login-workflow/example/yarn.lock b/login-workflow/example/yarn.lock index fb0bdaa4..641aa161 100644 --- a/login-workflow/example/yarn.lock +++ b/login-workflow/example/yarn.lock @@ -1112,6 +1112,13 @@ resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== +"@babel/runtime@7.22.10": + version "7.22.10" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.10.tgz#ae3e9631fd947cb7e3610d3e9d8fef5f76696682" + integrity sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ== + dependencies: + regenerator-runtime "^0.14.0" + "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.7", "@babel/runtime@^7.21.0", "@babel/runtime@^7.22.5", "@babel/runtime@^7.23.2", "@babel/runtime@^7.23.9", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": version "7.23.9" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.9.tgz#47791a15e4603bb5f905bc0753801cf21d6345f7" @@ -2101,6 +2108,63 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" +"@okta/okta-auth-js@^7.7.0": + version "7.7.0" + resolved "https://registry.yarnpkg.com/@okta/okta-auth-js/-/okta-auth-js-7.7.0.tgz#daac09294316a69d996a33232eb25032d1b85d70" + integrity sha512-m+WlI9TJ3J2uHI+W9Uc7zinE4CQLS2JC6AQYPJ0KHxaVE5lwPDLFleapPNfNWzYGr/30GV7oBzJMU+8+UQEsPA== + dependencies: + "@babel/runtime" "^7.12.5" + "@peculiar/webcrypto" "^1.4.0" + Base64 "1.1.0" + atob "^2.1.2" + broadcast-channel "~5.3.0" + btoa "^1.2.1" + core-js "^3.6.5" + cross-fetch "^3.1.5" + fast-text-encoding "^1.0.6" + js-cookie "^3.0.1" + jsonpath-plus "^6.0.1" + node-cache "^5.1.2" + p-cancelable "^2.0.0" + tiny-emitter "1.1.0" + webcrypto-shim "^0.1.5" + xhr2 "0.1.3" + +"@okta/okta-react@^6.9.0": + version "6.9.0" + resolved "https://registry.yarnpkg.com/@okta/okta-react/-/okta-react-6.9.0.tgz#1efcd51386ea31e1b3fc9bb25da2eac6222cef5e" + integrity sha512-qqwo8QCaBxM4tXXDO2+wwGgF3GBOe0WFmT4kykU00KXLSbMuiUVlV4RfDqLdNU7ahckGEKh25mkBs31Ga2XGpw== + dependencies: + "@babel/runtime" "^7.11.2" + compare-versions "^4.1.2" + +"@peculiar/asn1-schema@^2.3.8": + version "2.3.13" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-schema/-/asn1-schema-2.3.13.tgz#ec8509cdcbc0da3abe73fd7e690556b57a61b8f4" + integrity sha512-3Xq3a01WkHRZL8X04Zsfg//mGaA21xlL4tlVn4v2xGT0JStiztATRkMwa5b+f/HXmY2smsiLXYK46Gwgzvfg3g== + dependencies: + asn1js "^3.0.5" + pvtsutils "^1.3.5" + tslib "^2.6.2" + +"@peculiar/json-schema@^1.1.12": + version "1.1.12" + resolved "https://registry.yarnpkg.com/@peculiar/json-schema/-/json-schema-1.1.12.tgz#fe61e85259e3b5ba5ad566cb62ca75b3d3cd5339" + integrity sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w== + dependencies: + tslib "^2.0.0" + +"@peculiar/webcrypto@^1.4.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@peculiar/webcrypto/-/webcrypto-1.5.0.tgz#9e57174c02c1291051c553600347e12b81469e10" + integrity sha512-BRs5XUAwiyCDQMsVA9IDvDa7UBR9gAvPHgugOeGng3YN6vJ9JYonyDc0lNczErgtCWtucjR5N7VtaonboD/ezg== + dependencies: + "@peculiar/asn1-schema" "^2.3.8" + "@peculiar/json-schema" "^1.1.12" + pvtsutils "^1.3.5" + tslib "^2.6.2" + webcrypto-core "^1.8.0" + "@pmmmwh/react-refresh-webpack-plugin@^0.5.3": version "0.5.10" resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.10.tgz#2eba163b8e7dbabb4ce3609ab5e32ab63dda3ef8" @@ -3025,6 +3089,11 @@ resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== +Base64@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/Base64/-/Base64-1.1.0.tgz#810ef21afa8357df92ad7b5389188c446b9cb956" + integrity sha512-qeacf8dvGpf+XAT27ESHMh7z84uRzj/ua2pQdJg483m3bEXv/kVFtDnMgvf70BQGqzbZhR9t6BmASzKvqfJf3Q== + abab@^2.0.3, abab@^2.0.5: version "2.0.6" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" @@ -3299,6 +3368,15 @@ asap@~2.0.6: resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== +asn1js@^3.0.1, asn1js@^3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/asn1js/-/asn1js-3.0.5.tgz#5ea36820443dbefb51cc7f88a2ebb5b462114f38" + integrity sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ== + dependencies: + pvtsutils "^1.3.2" + pvutils "^1.1.3" + tslib "^2.4.0" + ast-types-flow@^0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" @@ -3319,6 +3397,11 @@ at-least-node@^1.0.0: resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + autoprefixer@^10.4.13: version "10.4.14" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.14.tgz#e28d49902f8e759dd25b153264e862df2705f79d" @@ -3626,6 +3709,16 @@ braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.1.1" +broadcast-channel@~5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/broadcast-channel/-/broadcast-channel-5.3.0.tgz#9d9e55fb8db2a1dbbe436ae6d51382a354e76fc3" + integrity sha512-0PmDYc/iUGZ4QbnCnV7u+WleygiS1bZ4oV6t4rANXYtSgEFtGhB5jimJPLOVpPtce61FVxrH8CYylfO5g7OLKw== + dependencies: + "@babel/runtime" "7.22.10" + oblivious-set "1.1.1" + p-queue "6.6.2" + unload "2.4.1" + browser-process-hrtime@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" @@ -3648,6 +3741,11 @@ bser@2.1.1: dependencies: node-int64 "^0.4.0" +btoa@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/btoa/-/btoa-1.2.1.tgz#01a9909f8b2c93f6bf680ba26131eb30f7fa3d73" + integrity sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g== + buffer-from@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" @@ -3824,6 +3922,11 @@ cliui@^8.0.1: strip-ansi "^6.0.1" wrap-ansi "^7.0.0" +clone@2.x: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== + clsx@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12" @@ -3950,6 +4053,11 @@ commondir@^1.0.1: resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== +compare-versions@^4.1.2: + version "4.1.4" + resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-4.1.4.tgz#3571f4d610924d4414846a4183d386c8f3d51112" + integrity sha512-FemMreK9xNyL8gQevsdRMrvO4lFCkQP7qbuktn1q8ndcNk1+0mz7lgE7b/sNvbhVgY4w6tMN1FDp6aADjqw2rw== + component-emitter@^1.2.1: version "1.3.0" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" @@ -4039,6 +4147,11 @@ core-js@^3.19.2: resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.30.2.tgz#6528abfda65e5ad728143ea23f7a14f0dcf503fc" integrity sha512-uBJiDmwqsbJCWHAwjrx3cvjbMXP7xD72Dmsn5LOJpiRmE3WbBbN5rCqQ2Qh6Ek6/eOrjlWngEynBWo4VxerQhg== +core-js@^3.6.5: + version "3.37.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.37.1.tgz#d21751ddb756518ac5a00e4d66499df981a62db9" + integrity sha512-Xn6qmxrQZyB0FFY8E3bgRXei3lWDJHhvI+u0q9TKIYM49G8pAr0FgnnrFRAmsbptZL1yxRADVXn+x5AGsbBfyw== + core-util-is@~1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" @@ -4066,6 +4179,13 @@ cosmiconfig@^7.0.0: path-type "^4.0.0" yaml "^1.10.0" +cross-fetch@^3.1.5: + version "3.1.8" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.8.tgz#0327eba65fd68a7d119f8fb2bf9334a1a7956f82" + integrity sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg== + dependencies: + node-fetch "^2.6.12" + cross-spawn@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" @@ -5067,7 +5187,7 @@ etag@~1.8.1: resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== -eventemitter3@^4.0.0: +eventemitter3@^4.0.0, eventemitter3@^4.0.4: version "4.0.7" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== @@ -5188,6 +5308,11 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== +fast-text-encoding@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz#0aa25f7f638222e3396d72bf936afcf1d42d6867" + integrity sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w== + fastq@^1.6.0: version "1.15.0" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" @@ -7083,6 +7208,11 @@ jiti@^1.18.2: resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.18.2.tgz#80c3ef3d486ebf2450d9335122b32d121f2a83cd" integrity sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg== +js-cookie@^3.0.1: + version "3.0.5" + resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-3.0.5.tgz#0b7e2fd0c01552c58ba86e0841f94dc2557dcdbc" + integrity sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw== + "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -7192,6 +7322,11 @@ jsonfile@^6.0.1: optionalDependencies: graceful-fs "^4.1.6" +jsonpath-plus@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/jsonpath-plus/-/jsonpath-plus-6.0.1.tgz#9a3e16cedadfab07a3d8dc4e8cd5df4ed8f49c4d" + integrity sha512-EvGovdvau6FyLexFH2OeXfIITlgIbgZoAZe3usiySeaIDm5QS+A10DKNpaPBBqqRSZr2HN6HVNXxtwUAr2apEw== + jsonpointer@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.1.tgz#2110e0af0900fd37467b5907ecd13a7884a1b559" @@ -7603,6 +7738,20 @@ no-case@^3.0.4: lower-case "^2.0.2" tslib "^2.0.3" +node-cache@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/node-cache/-/node-cache-5.1.2.tgz#f264dc2ccad0a780e76253a694e9fd0ed19c398d" + integrity sha512-t1QzWwnk4sjLWaQAS8CHgOJ+RAfmHpxFWmc36IWTiWHQfs0w5JDMBS1b1ZxQteo0vVVuWJvIUKHDkkeK7vIGCg== + dependencies: + clone "2.x" + +node-fetch@^2.6.12: + version "2.7.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== + dependencies: + whatwg-url "^5.0.0" + node-forge@^1: version "1.3.1" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" @@ -7743,6 +7892,11 @@ object.values@^1.1.0, object.values@^1.1.6: define-properties "^1.1.4" es-abstract "^1.20.4" +oblivious-set@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/oblivious-set/-/oblivious-set-1.1.1.tgz#d9d38e9491d51f27a5c3ec1681d2ba40aa81e98b" + integrity sha512-Oh+8fK09mgGmAshFdH6hSVco6KZmd1tTwNFWj35OvzdmJTMZtAkbn05zar2iG3v6sDs1JLEtOiBGNb6BHwkb2w== + obuf@^1.0.0, obuf@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" @@ -7807,6 +7961,16 @@ optionator@^0.9.3: prelude-ls "^1.2.1" type-check "^0.4.0" +p-cancelable@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" + integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== + p-limit@^2.0.0, p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" @@ -7856,6 +8020,14 @@ p-locate@^6.0.0: dependencies: p-limit "^4.0.0" +p-queue@6.6.2: + version "6.6.2" + resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-6.6.2.tgz#2068a9dcf8e67dd0ec3e7a2bcb76810faa85e426" + integrity sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ== + dependencies: + eventemitter3 "^4.0.4" + p-timeout "^3.2.0" + p-retry@^4.5.0: version "4.6.2" resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16" @@ -7864,6 +8036,13 @@ p-retry@^4.5.0: "@types/retry" "0.12.0" retry "^0.13.1" +p-timeout@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" + integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== + dependencies: + p-finally "^1.0.0" + p-try@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" @@ -8668,6 +8847,18 @@ pure-rand@^6.0.0: resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.0.2.tgz#a9c2ddcae9b68d736a8163036f088a2781c8b306" integrity sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ== +pvtsutils@^1.3.2, pvtsutils@^1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/pvtsutils/-/pvtsutils-1.3.5.tgz#b8705b437b7b134cd7fd858f025a23456f1ce910" + integrity sha512-ARvb14YB9Nm2Xi6nBq1ZX6dAM0FsJnuk+31aUp4TrcZEdKUlSqOqsxJHUPJDNE3qiIp+iUPEIeR6Je/tgV7zsA== + dependencies: + tslib "^2.6.1" + +pvutils@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/pvutils/-/pvutils-1.1.3.tgz#f35fc1d27e7cd3dfbd39c0826d173e806a03f5a3" + integrity sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ== + q@^1.1.2: version "1.5.1" resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" @@ -9909,6 +10100,11 @@ thunky@^1.0.2: resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== +tiny-emitter@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-1.1.0.tgz#ab405a21ffed814a76c19739648093d70654fecb" + integrity sha512-HFhr+OKGIHRO6krgzEt9MqbMO98wPDzDPr1BOpM/nZCChkK40UYn8b70nSjcan4jTzDSQecy1KRVVQRohIRWrw== + tmpl@1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" @@ -9955,6 +10151,11 @@ tr46@^2.1.0: dependencies: punycode "^2.1.1" +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + tryer@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" @@ -9980,6 +10181,11 @@ tslib@^1.8.1: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== +tslib@^2.0.0, tslib@^2.4.0, tslib@^2.6.1, tslib@^2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0" + integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== + tslib@^2.0.3, tslib@^2.5.0: version "2.5.2" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.2.tgz#1b6f07185c881557b0ffa84b111a0106989e8338" @@ -10105,6 +10311,11 @@ universalify@^2.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== +unload@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/unload/-/unload-2.4.1.tgz#b0c5b7fb44e17fcbf50dcb8fb53929c59dd226a5" + integrity sha512-IViSAm8Z3sRBYA+9wc0fLQmU9Nrxb16rcDmIiR6Y9LJSZzI7QY5QsDhqPpKOjAn0O9/kfK1TfNEMMAGPTIraPw== + unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" @@ -10237,6 +10448,27 @@ wbuf@^1.1.0, wbuf@^1.7.3: dependencies: minimalistic-assert "^1.0.0" +webcrypto-core@^1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/webcrypto-core/-/webcrypto-core-1.8.0.tgz#aaea17f3dd9c77c304e3c494eb27ca07cc72ca37" + integrity sha512-kR1UQNH8MD42CYuLzvibfakG5Ew5seG85dMMoAM/1LqvckxaF6pUiidLuraIu4V+YCIFabYecUZAW0TuxAoaqw== + dependencies: + "@peculiar/asn1-schema" "^2.3.8" + "@peculiar/json-schema" "^1.1.12" + asn1js "^3.0.1" + pvtsutils "^1.3.5" + tslib "^2.6.2" + +webcrypto-shim@^0.1.5: + version "0.1.7" + resolved "https://registry.yarnpkg.com/webcrypto-shim/-/webcrypto-shim-0.1.7.tgz#da8be23061a0451cf23b424d4a9b61c10f091c12" + integrity sha512-JAvAQR5mRNRxZW2jKigWMjCMkjSdmP5cColRP1U/pTg69VgHXEi1orv5vVpJ55Zc5MIaPc1aaurzd9pjv2bveg== + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + webidl-conversions@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" @@ -10389,6 +10621,14 @@ whatwg-mimetype@^2.3.0: resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + whatwg-url@^7.0.0: version "7.1.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" @@ -10670,6 +10910,11 @@ ws@^8.13.0: resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.1.tgz#9293da530bb548febc95371d90f9c878727d919b" integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ== +xhr2@0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/xhr2/-/xhr2-0.1.3.tgz#cbfc4759a69b4a888e78cf4f20b051038757bd11" + integrity sha512-6RmGK22QwC7yXB1CRwyLWuS2opPcKOlAu0ViAnyZjDlzrEmCKL4kLHkfvB8oMRWeztMsNoDGAjsMZY15w/4tTw== + xml-name-validator@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" From 521f43f0e0c22c6f9df82462827ca6dbd8d9e51e Mon Sep 17 00:00:00 2001 From: manojleaton Date: Mon, 5 Aug 2024 15:31:09 +0530 Subject: [PATCH 40/90] passing sx prop --- .../WorkflowCard/WorkflowCard.types.ts | 4 + .../AccountDetailsScreen.tsx | 2 + .../AccountDetailsScreenBase.tsx | 3 +- .../src/screens/AccountDetailsScreen/types.ts | 105 +++++++++--------- .../ContactSupportScreenBase.tsx | 8 +- .../CreateAccountScreen.tsx | 2 + .../CreateAccountScreenBase.tsx | 3 +- .../CreatePasswordScreen.tsx | 2 + .../CreatePasswordScreenBase.tsx | 4 +- .../src/screens/EulaScreen/EulaScreenBase.tsx | 3 +- .../ForgotPasswordScreen.tsx | 2 + .../ForgotPasswordScreenBase.tsx | 3 +- .../src/screens/LoginScreen/LoginScreen.tsx | 2 + .../OktaLoginScreen/OktaLoginScreen.tsx | 2 + .../ResetPasswordScreen.tsx | 2 + .../ResetPasswordScreenBase.tsx | 4 +- .../SuccessScreen/SuccessScreenBase.tsx | 4 +- .../VerifyCodeScreen/VerifyCodeScreen.tsx | 2 + .../VerifyCodeScreen/VerifyCodeScreenBase.tsx | 3 +- 19 files changed, 95 insertions(+), 65 deletions(-) diff --git a/login-workflow/src/components/WorkflowCard/WorkflowCard.types.ts b/login-workflow/src/components/WorkflowCard/WorkflowCard.types.ts index 7c4dc57e..224884b6 100644 --- a/login-workflow/src/components/WorkflowCard/WorkflowCard.types.ts +++ b/login-workflow/src/components/WorkflowCard/WorkflowCard.types.ts @@ -123,4 +123,8 @@ export type WorkflowCardProps = { * Props for WorkflowCardActions component */ WorkflowCardActionsProps?: WorkflowCardActionsProps; + /** + * The system prop that allows defining system overrides as well as additional CSS styles. + */ + sx?: BoxProps['sx']; // or SxProps }; diff --git a/login-workflow/src/screens/AccountDetailsScreen/AccountDetailsScreen.tsx b/login-workflow/src/screens/AccountDetailsScreen/AccountDetailsScreen.tsx index 7b756813..e4ca0438 100644 --- a/login-workflow/src/screens/AccountDetailsScreen/AccountDetailsScreen.tsx +++ b/login-workflow/src/screens/AccountDetailsScreen/AccountDetailsScreen.tsx @@ -76,6 +76,7 @@ export const AccountDetailsScreen: React.FC = (props) lastNameTextFieldProps, initialFirstName = screenData.AccountDetails.firstName, initialLastName = screenData.AccountDetails.lastName, + ...otherProps } = props; const workflowCardHeaderProps = { @@ -134,6 +135,7 @@ export const AccountDetailsScreen: React.FC = (props) lastNameValidator={lastNameValidator} WorkflowCardActionsProps={workflowCardActionsProps} errorDisplayConfig={errorDisplayConfig} + {...otherProps} /> ); }; diff --git a/login-workflow/src/screens/AccountDetailsScreen/AccountDetailsScreenBase.tsx b/login-workflow/src/screens/AccountDetailsScreen/AccountDetailsScreenBase.tsx index ddc25b40..95abc2f7 100644 --- a/login-workflow/src/screens/AccountDetailsScreen/AccountDetailsScreenBase.tsx +++ b/login-workflow/src/screens/AccountDetailsScreen/AccountDetailsScreenBase.tsx @@ -30,6 +30,7 @@ export const AccountDetailsScreenBase: React.FC = (pr lastNameValidator = (): void => {}, lastNameTextFieldProps, errorDisplayConfig, + ...otherProps } = props; const cardBaseProps = props.WorkflowCardBaseProps || {}; @@ -87,7 +88,7 @@ export const AccountDetailsScreenBase: React.FC = (pr }, []); return ( - + diff --git a/login-workflow/src/screens/AccountDetailsScreen/types.ts b/login-workflow/src/screens/AccountDetailsScreen/types.ts index 9bc9fb39..04361caa 100644 --- a/login-workflow/src/screens/AccountDetailsScreen/types.ts +++ b/login-workflow/src/screens/AccountDetailsScreen/types.ts @@ -2,56 +2,55 @@ import { BoxProps, TextFieldProps } from '@mui/material'; import { WorkflowCardProps } from '../../components/WorkflowCard/WorkflowCard.types'; import { ErrorManagerProps } from '../../components/Error/types'; -export type AccountDetailsScreenProps = WorkflowCardProps & - BoxProps & { - /** - * The label for the first name text field - */ - firstNameLabel?: string; - - /** - * The initial value for the first name text field - */ - initialFirstName?: string; - - /** - * The function that validates the first name text field - * @param {string} firstName - validates first name input length - * @returns boolean | string - */ - firstNameValidator?: (firstName: string) => boolean | string; - - /** - * The props to pass to the first name field. - * See [MUI's TextFieldProps API](https://mui.com/material-ui/api/text-field/) for more details. - */ - firstNameTextFieldProps?: TextFieldProps; - - /** - * The label for the last name text field - */ - lastNameLabel?: string; - - /** - * The initial value for the last name text field - */ - initialLastName?: string; - - /** - * The function that validates the last name text field - * @param {string} lastName - validates last name input length - * @returns boolean | string - */ - lastNameValidator?: (lastName: string) => boolean | string; - - /** - * The props to pass to the last name field. - * See [MUI's TextFieldProps API](https://mui.com/material-ui/api/text-field/) for more details. - */ - lastNameTextFieldProps?: TextFieldProps; - - /** - * The configuration for customizing how errors are displayed - */ - errorDisplayConfig?: ErrorManagerProps; - }; +export type AccountDetailsScreenProps = WorkflowCardProps & { + /** + * The label for the first name text field + */ + firstNameLabel?: string; + + /** + * The initial value for the first name text field + */ + initialFirstName?: string; + + /** + * The function that validates the first name text field + * @param {string} firstName - validates first name input length + * @returns boolean | string + */ + firstNameValidator?: (firstName: string) => boolean | string; + + /** + * The props to pass to the first name field. + * See [MUI's TextFieldProps API](https://mui.com/material-ui/api/text-field/) for more details. + */ + firstNameTextFieldProps?: TextFieldProps; + + /** + * The label for the last name text field + */ + lastNameLabel?: string; + + /** + * The initial value for the last name text field + */ + initialLastName?: string; + + /** + * The function that validates the last name text field + * @param {string} lastName - validates last name input length + * @returns boolean | string + */ + lastNameValidator?: (lastName: string) => boolean | string; + + /** + * The props to pass to the last name field. + * See [MUI's TextFieldProps API](https://mui.com/material-ui/api/text-field/) for more details. + */ + lastNameTextFieldProps?: TextFieldProps; + + /** + * The configuration for customizing how errors are displayed + */ + errorDisplayConfig?: ErrorManagerProps; +}; diff --git a/login-workflow/src/screens/ContactScreen/ContactSupportScreenBase.tsx b/login-workflow/src/screens/ContactScreen/ContactSupportScreenBase.tsx index 882d20ba..2a00d39c 100644 --- a/login-workflow/src/screens/ContactScreen/ContactSupportScreenBase.tsx +++ b/login-workflow/src/screens/ContactScreen/ContactSupportScreenBase.tsx @@ -51,6 +51,7 @@ export const ContactSupportScreenBase: React.FC = (pr contactPhone, dismissButtonLabel, onDismiss, + ...otherProps } = props; const defaultClasses = useUtilityClasses(props); @@ -61,7 +62,12 @@ export const ContactSupportScreenBase: React.FC = (pr const actionsProps = props.WorkflowCardActionsProps || {}; return ( - + {Object.keys(instructionsProps).length !== 0 && } {icon && ( diff --git a/login-workflow/src/screens/CreateAccountScreen/CreateAccountScreen.tsx b/login-workflow/src/screens/CreateAccountScreen/CreateAccountScreen.tsx index 18a62c1e..12a09e3f 100644 --- a/login-workflow/src/screens/CreateAccountScreen/CreateAccountScreen.tsx +++ b/login-workflow/src/screens/CreateAccountScreen/CreateAccountScreen.tsx @@ -70,6 +70,7 @@ export const CreateAccountScreen: React.FC = (props) = return true; }, emailTextFieldProps, + ...otherProps } = props; const workflowCardBaseProps = { @@ -123,6 +124,7 @@ export const CreateAccountScreen: React.FC = (props) = emailValidator={emailValidator} WorkflowCardActionsProps={workflowCardActionsProps} errorDisplayConfig={errorDisplayConfig} + {...otherProps} /> ); }; diff --git a/login-workflow/src/screens/CreateAccountScreen/CreateAccountScreenBase.tsx b/login-workflow/src/screens/CreateAccountScreen/CreateAccountScreenBase.tsx index 294c0176..5b8f6ab9 100644 --- a/login-workflow/src/screens/CreateAccountScreen/CreateAccountScreenBase.tsx +++ b/login-workflow/src/screens/CreateAccountScreen/CreateAccountScreenBase.tsx @@ -28,6 +28,7 @@ export const CreateAccountScreenBase: React.FC< emailTextFieldProps, inputRef, errorDisplayConfig, + ...otherProps } = props; const cardBaseProps = props.WorkflowCardBaseProps || {}; @@ -59,7 +60,7 @@ export const CreateAccountScreenBase: React.FC< }, []); return ( - + diff --git a/login-workflow/src/screens/CreatePasswordScreen/CreatePasswordScreen.tsx b/login-workflow/src/screens/CreatePasswordScreen/CreatePasswordScreen.tsx index fcefcc58..e02cb2e5 100644 --- a/login-workflow/src/screens/CreatePasswordScreen/CreatePasswordScreen.tsx +++ b/login-workflow/src/screens/CreatePasswordScreen/CreatePasswordScreen.tsx @@ -34,6 +34,7 @@ export const CreatePasswordScreen: React.FC = (props) WorkflowCardInstructionProps, WorkflowCardActionsProps, PasswordProps, + ...otherProps } = props; const passwordRef = useRef(null); @@ -162,6 +163,7 @@ export const CreatePasswordScreen: React.FC = (props) WorkflowCardInstructionProps={workflowCardInstructionProps} PasswordProps={passwordProps} errorDisplayConfig={errorDisplayConfig} + {...otherProps} /> ); }; diff --git a/login-workflow/src/screens/CreatePasswordScreen/CreatePasswordScreenBase.tsx b/login-workflow/src/screens/CreatePasswordScreen/CreatePasswordScreenBase.tsx index 58de4bb8..0fcc2958 100644 --- a/login-workflow/src/screens/CreatePasswordScreen/CreatePasswordScreenBase.tsx +++ b/login-workflow/src/screens/CreatePasswordScreen/CreatePasswordScreenBase.tsx @@ -24,10 +24,10 @@ export const CreatePasswordScreenBase: React.FC ({}) }; - const { errorDisplayConfig } = props; + const { errorDisplayConfig, ...otherProps } = props; return ( - + diff --git a/login-workflow/src/screens/EulaScreen/EulaScreenBase.tsx b/login-workflow/src/screens/EulaScreen/EulaScreenBase.tsx index 51b89f94..836f917f 100644 --- a/login-workflow/src/screens/EulaScreen/EulaScreenBase.tsx +++ b/login-workflow/src/screens/EulaScreen/EulaScreenBase.tsx @@ -34,6 +34,7 @@ export const EulaScreenBase: React.FC = (props) => { checkboxProps, errorDisplayConfig, refreshConfig, + ...otherProps } = props; const { t } = useTranslation(); @@ -58,7 +59,7 @@ export const EulaScreenBase: React.FC = (props) => { }; return ( - + {Object.keys(instructionsProps).length !== 0 && } diff --git a/login-workflow/src/screens/ForgotPasswordScreen/ForgotPasswordScreen.tsx b/login-workflow/src/screens/ForgotPasswordScreen/ForgotPasswordScreen.tsx index 142b3e6e..95c1d795 100644 --- a/login-workflow/src/screens/ForgotPasswordScreen/ForgotPasswordScreen.tsx +++ b/login-workflow/src/screens/ForgotPasswordScreen/ForgotPasswordScreen.tsx @@ -72,6 +72,7 @@ export const ForgotPasswordScreen: React.FC = (props) slots = {}, slotProps = {}, emailTextFieldProps, + ...otherProps } = props; const workflowCardBaseProps = { @@ -174,6 +175,7 @@ export const ForgotPasswordScreen: React.FC = (props) }, }} errorDisplayConfig={errorDisplayConfig} + {...otherProps} /> ); }; diff --git a/login-workflow/src/screens/ForgotPasswordScreen/ForgotPasswordScreenBase.tsx b/login-workflow/src/screens/ForgotPasswordScreen/ForgotPasswordScreenBase.tsx index 6d193e06..9f66d06b 100644 --- a/login-workflow/src/screens/ForgotPasswordScreen/ForgotPasswordScreenBase.tsx +++ b/login-workflow/src/screens/ForgotPasswordScreen/ForgotPasswordScreenBase.tsx @@ -32,6 +32,7 @@ export const ForgotPasswordScreenBase: React.FC + diff --git a/login-workflow/src/screens/LoginScreen/LoginScreen.tsx b/login-workflow/src/screens/LoginScreen/LoginScreen.tsx index 16dd1e63..e469a507 100644 --- a/login-workflow/src/screens/LoginScreen/LoginScreen.tsx +++ b/login-workflow/src/screens/LoginScreen/LoginScreen.tsx @@ -74,6 +74,7 @@ export const LoginScreen: React.FC> = projectImage, header, footer, + ...otherProps } = props; return ( @@ -119,6 +120,7 @@ export const LoginScreen: React.FC> = projectImage={projectImage} header={header} footer={footer} + {...otherProps} /> ); }; diff --git a/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreen.tsx b/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreen.tsx index a4021dbc..80a9bb0f 100644 --- a/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreen.tsx +++ b/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreen.tsx @@ -45,6 +45,7 @@ export const OktaLoginScreen: React.FC = (props) => { projectImage, header, footer, + ...otherProps } = props; useEffect(() => { @@ -83,6 +84,7 @@ export const OktaLoginScreen: React.FC = (props) => { projectImage={projectImage} header={header} footer={footer} + {...otherProps} /> ); }; diff --git a/login-workflow/src/screens/ResetPasswordScreen/ResetPasswordScreen.tsx b/login-workflow/src/screens/ResetPasswordScreen/ResetPasswordScreen.tsx index 1bf2df8d..fcad06c6 100644 --- a/login-workflow/src/screens/ResetPasswordScreen/ResetPasswordScreen.tsx +++ b/login-workflow/src/screens/ResetPasswordScreen/ResetPasswordScreen.tsx @@ -40,6 +40,7 @@ export const ResetPasswordScreen: React.FC = (props) = PasswordProps, slots = {}, slotProps = {}, + ...otherProps } = props; const [passwordInput, setPasswordInput] = useState(PasswordProps?.initialNewPasswordValue ?? ''); @@ -199,6 +200,7 @@ export const ResetPasswordScreen: React.FC = (props) = } : errorDisplayConfig.onClose, }} + {...otherProps} /> ); }; diff --git a/login-workflow/src/screens/ResetPasswordScreen/ResetPasswordScreenBase.tsx b/login-workflow/src/screens/ResetPasswordScreen/ResetPasswordScreenBase.tsx index 2c78201a..f47dcf07 100644 --- a/login-workflow/src/screens/ResetPasswordScreen/ResetPasswordScreenBase.tsx +++ b/login-workflow/src/screens/ResetPasswordScreen/ResetPasswordScreenBase.tsx @@ -27,7 +27,7 @@ export const ResetPasswordScreenBase: React.FC ({}) }; - const { showSuccessScreen, slots, slotProps = {}, errorDisplayConfig } = props; + const { showSuccessScreen, slots, slotProps = {}, errorDisplayConfig, ...otherProps } = props; const getSuccessScreen = ( _props?: SuccessScreenProps, @@ -39,7 +39,7 @@ export const ResetPasswordScreenBase: React.FC + diff --git a/login-workflow/src/screens/SuccessScreen/SuccessScreenBase.tsx b/login-workflow/src/screens/SuccessScreen/SuccessScreenBase.tsx index b06b7a2d..22df11b4 100644 --- a/login-workflow/src/screens/SuccessScreen/SuccessScreenBase.tsx +++ b/login-workflow/src/screens/SuccessScreen/SuccessScreenBase.tsx @@ -19,7 +19,7 @@ import Box from '@mui/material/Box'; */ export const SuccessScreenBase: React.FC = (props) => { - const { EmptyStateProps, dismissButtonLabel = '', canDismiss, onDismiss } = props; + const { EmptyStateProps, dismissButtonLabel = '', canDismiss, onDismiss, ...otherProps } = props; const cardBaseProps = props.WorkflowCardBaseProps || {}; const headerProps = props.WorkflowCardHeaderProps || {}; @@ -27,7 +27,7 @@ export const SuccessScreenBase: React.FC = (props) => { const actionsProps = props.WorkflowCardActionsProps || {}; return ( - + {Object.keys(instructionsProps).length !== 0 && } diff --git a/login-workflow/src/screens/VerifyCodeScreen/VerifyCodeScreen.tsx b/login-workflow/src/screens/VerifyCodeScreen/VerifyCodeScreen.tsx index e7bd6451..36f8133a 100644 --- a/login-workflow/src/screens/VerifyCodeScreen/VerifyCodeScreen.tsx +++ b/login-workflow/src/screens/VerifyCodeScreen/VerifyCodeScreen.tsx @@ -55,6 +55,7 @@ export const VerifyCodeScreen: React.FC = (props) => { verifyCodeInputLabel = t('bluiRegistration:SELF_REGISTRATION.VERIFY_EMAIL.VERIFICATION'), initialValue = screenData.VerifyCode.code, verifyCodeTextFieldProps, + ...otherProps } = props; const handleOnNext = useCallback( @@ -153,6 +154,7 @@ export const VerifyCodeScreen: React.FC = (props) => { codeValidator={codeValidator} errorDisplayConfig={errorDisplayConfig} verifyCodeTextFieldProps={verifyCodeTextFieldProps} + {...otherProps} /> ); }; diff --git a/login-workflow/src/screens/VerifyCodeScreen/VerifyCodeScreenBase.tsx b/login-workflow/src/screens/VerifyCodeScreen/VerifyCodeScreenBase.tsx index 5f0740ea..d04a1301 100644 --- a/login-workflow/src/screens/VerifyCodeScreen/VerifyCodeScreenBase.tsx +++ b/login-workflow/src/screens/VerifyCodeScreen/VerifyCodeScreenBase.tsx @@ -29,6 +29,7 @@ export const VerifyCodeScreenBase: React.FC + From 5c3c197cfeb393f775aa5d448583fce060e0e33b Mon Sep 17 00:00:00 2001 From: manojleaton Date: Mon, 5 Aug 2024 15:40:20 +0530 Subject: [PATCH 41/90] lint error fix --- login-workflow/src/screens/AccountDetailsScreen/types.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/login-workflow/src/screens/AccountDetailsScreen/types.ts b/login-workflow/src/screens/AccountDetailsScreen/types.ts index 04361caa..7eccec3c 100644 --- a/login-workflow/src/screens/AccountDetailsScreen/types.ts +++ b/login-workflow/src/screens/AccountDetailsScreen/types.ts @@ -1,4 +1,4 @@ -import { BoxProps, TextFieldProps } from '@mui/material'; +import { TextFieldProps } from '@mui/material'; import { WorkflowCardProps } from '../../components/WorkflowCard/WorkflowCard.types'; import { ErrorManagerProps } from '../../components/Error/types'; From 6424f9e5725da07bf73762e66555e0b37fa8830c Mon Sep 17 00:00:00 2001 From: manojleaton Date: Mon, 5 Aug 2024 21:26:41 +0530 Subject: [PATCH 42/90] test case fix --- .../ResetPasswordScreen.test.tsx | 29 +++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/login-workflow/src/screens/ResetPasswordScreen/ResetPasswordScreen.test.tsx b/login-workflow/src/screens/ResetPasswordScreen/ResetPasswordScreen.test.tsx index 8e9f0c43..a7d07e3e 100644 --- a/login-workflow/src/screens/ResetPasswordScreen/ResetPasswordScreen.test.tsx +++ b/login-workflow/src/screens/ResetPasswordScreen/ResetPasswordScreen.test.tsx @@ -43,8 +43,7 @@ describe('Reset Password Screen', () => { }); it('should show success screen, when okay button is clicked', async () => { - const { getByLabelText } = renderer({ - showSuccessScreen: true, + const { getByLabelText, getByTestId } = renderer({ PasswordProps: { newPasswordLabel: 'New Password', confirmPasswordLabel: 'Confirm New Password', @@ -63,6 +62,32 @@ describe('Reset Password Screen', () => { fireEvent.change(confirmPasswordInput, { target: { value: 'Abc@1234' } }); fireEvent.click(screen.getByText('Next')); await waitFor(() => expect(screen.getByText('Your password was successfully reset.'))); + const doneButton = getByTestId('BluiWorkflowCardActions-nextButton'); + fireEvent.click(doneButton); + }); + + it('should call handleNext callback function', () => { + const { getByLabelText } = renderer({ + showSuccessScreen: false, + PasswordProps: { + newPasswordLabel: 'New Password', + confirmPasswordLabel: 'Confirm New Password', + onPasswordChange: jest.fn(), + passwordRequirements: [], + }, + WorkflowCardActionsProps: { + canGoNext: true, + nextLabel: 'Next', + onNext: mockOnNext(), + }, + }); + + const newPasswordInput = getByLabelText('New Password'); + const confirmPasswordInput = getByLabelText('Confirm New Password'); + fireEvent.change(newPasswordInput, { target: { value: 'Abc@1234' } }); + fireEvent.change(confirmPasswordInput, { target: { value: 'Abc@1234' } }); + fireEvent.click(screen.getByText('Next')); + expect(mockOnNext).toHaveBeenCalled(); }); it('should show loader, when loading prop is passed to WorkflowCardBaseProps', async () => { From fabda4b7fcfcf602c32ff2037d868c6275c5e578 Mon Sep 17 00:00:00 2001 From: manojleaton Date: Tue, 6 Aug 2024 12:42:06 +0530 Subject: [PATCH 43/90] reverted the package version --- login-workflow/example/package.json | 4 ++-- login-workflow/example/yarn.lock | 18 ++++++++++++++++-- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/login-workflow/example/package.json b/login-workflow/example/package.json index d3610877..8d31b83d 100644 --- a/login-workflow/example/package.json +++ b/login-workflow/example/package.json @@ -41,11 +41,11 @@ "@mui/icons-material": "^5.15.7", "@mui/material": "^5.10.15", "@types/node": "^17.0.23", - "@types/react": "^18.3.3", + "@types/react": "18.2.39", "@types/react-dom": "^18.0.0", "date-fns": "^3.6.0", "i18next": "^23.7.13", - "react": "^18.3.1", + "react": "^18.2.0", "react-app-polyfill": "^3.0.0", "react-dom": "^18.0.0", "react-i18next": "^13.0.3", diff --git a/login-workflow/example/yarn.lock b/login-workflow/example/yarn.lock index fb0bdaa4..26757414 100644 --- a/login-workflow/example/yarn.lock +++ b/login-workflow/example/yarn.lock @@ -2649,7 +2649,7 @@ dependencies: "@types/react" "*" -"@types/react@*", "@types/react@^18.3.3": +"@types/react@*": version "18.3.3" resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.3.tgz#9679020895318b0915d7a3ab004d92d33375c45f" integrity sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw== @@ -2657,6 +2657,15 @@ "@types/prop-types" "*" csstype "^3.0.2" +"@types/react@18.2.39": + version "18.2.39" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.39.tgz#744bee99e053ad61fe74eb8b897f3ab5b19a7e25" + integrity sha512-Oiw+ppED6IremMInLV4HXGbfbG6GyziY3kqAwJYOR0PNbkYDmLWQA3a95EhdSmamsvbkJN96ZNN+YD+fGjzSBA== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + "@types/resolve@1.17.1": version "1.17.1" resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" @@ -2669,6 +2678,11 @@ resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== +"@types/scheduler@*": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.23.0.tgz#0a6655b3e2708eaabca00b7372fafd7a792a7b09" + integrity sha512-YIoDCTH3Af6XM5VuwGG/QL/CJqga1Zm3NkU3HZ4ZHK2fRMPYP1VczsTUqtsf43PH/iJNVlPHAo2oWX7BSdB2Hw== + "@types/semver@^7.3.12", "@types/semver@^7.3.13": version "7.5.0" resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.0.tgz#591c1ce3a702c45ee15f47a42ade72c2fd78978a" @@ -8882,7 +8896,7 @@ react-transition-group@^4.4.5: loose-envify "^1.4.0" prop-types "^15.6.2" -react@^18.3.1: +react@^18.2.0: version "18.3.1" resolved "https://registry.yarnpkg.com/react/-/react-18.3.1.tgz#49ab892009c53933625bd16b2533fc754cab2891" integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ== From 5677b7ac5d800fc0c2779e7e5ccfb1cbfaefaf34 Mon Sep 17 00:00:00 2001 From: manojleaton Date: Wed, 7 Aug 2024 14:08:06 +0530 Subject: [PATCH 44/90] added error manager --- .../ChangePasswordDialog.tsx | 32 +++++++-- .../ChangePasswordDialogBase.tsx | 70 ++++++++++--------- .../components/ChangePasswordDialog/types.ts | 6 ++ 3 files changed, 71 insertions(+), 37 deletions(-) diff --git a/login-workflow/src/components/ChangePasswordDialog/ChangePasswordDialog.tsx b/login-workflow/src/components/ChangePasswordDialog/ChangePasswordDialog.tsx index 62e0fb25..f10038e2 100644 --- a/login-workflow/src/components/ChangePasswordDialog/ChangePasswordDialog.tsx +++ b/login-workflow/src/components/ChangePasswordDialog/ChangePasswordDialog.tsx @@ -5,6 +5,7 @@ import { ChangePasswordDialogBase } from './ChangePasswordDialogBase'; import { ChangePasswordDialogProps } from './types'; import CheckCircle from '@mui/icons-material/CheckCircle'; import { useTranslation } from 'react-i18next'; +import { useErrorManager } from '../../contexts/ErrorContext/useErrorManager'; /** * Component that renders a dialog with textField to enter current password and a change password form with a new password and confirm password inputs. @@ -43,7 +44,18 @@ export const ChangePasswordDialog: React.FC = (props) const [showErrorDialog, setShowErrorDialog] = useState(false); const [isLoading, setIsLoading] = useState(loading); const [showSuccessScreen, setShowSuccessScreen] = useState(false); - const { actions } = useAuthContext(); + const { actions, navigate, routeConfig } = useAuthContext(); + + const { triggerError, errorManagerConfig } = useErrorManager(); + const errorDisplayConfig = { + ...errorManagerConfig, + ...props.errorDisplayConfig, + onClose: (): void => { + if (props.errorDisplayConfig && props.errorDisplayConfig.onClose) props.errorDisplayConfig.onClose(); + if (errorManagerConfig.onClose) errorManagerConfig?.onClose(); + }, + }; + const [hasVerifyCodeError, setHasVerifyCodeError] = useState(false); const passwordReqs = PasswordProps?.passwordRequirements ?? defaultPasswordRequirements(t); @@ -77,8 +89,10 @@ export const ChangePasswordDialog: React.FC = (props) onFinish?.(); } setShowSuccessScreen(true); - } catch { - setShowErrorDialog(true); + } catch (_error) { + setHasVerifyCodeError(true); + // setShowErrorDialog(true); + triggerError(_error as Error); } finally { setIsLoading(false); } @@ -89,9 +103,9 @@ export const ChangePasswordDialog: React.FC = (props) passwordInput, actions, setIsLoading, - setShowErrorDialog, onFinish, props.showSuccessScreen, + triggerError, ]); const passwordProps = { @@ -168,6 +182,16 @@ export const ChangePasswordDialog: React.FC = (props) }, }} showSuccessScreen={showSuccessScreen} + errorDisplayConfig={{ + ...errorDisplayConfig, + onClose: hasVerifyCodeError + ? (): void => { + navigate(routeConfig.LOGIN as string); + // eslint-disable-next-line no-unused-expressions + errorDisplayConfig.onClose; + } + : errorDisplayConfig.onClose, + }} /> ); }; diff --git a/login-workflow/src/components/ChangePasswordDialog/ChangePasswordDialogBase.tsx b/login-workflow/src/components/ChangePasswordDialog/ChangePasswordDialogBase.tsx index 20979796..d2a97b4d 100644 --- a/login-workflow/src/components/ChangePasswordDialog/ChangePasswordDialogBase.tsx +++ b/login-workflow/src/components/ChangePasswordDialog/ChangePasswordDialogBase.tsx @@ -19,6 +19,7 @@ import { Spinner } from '../../components'; import { SuccessScreenBase, SuccessScreenProps } from '../../screens'; import { unstable_composeClasses as composeClasses } from '@mui/base'; import { ChangePasswordDialogClassKey, getChangePasswordDialogUtilityClass } from './utilityClasses'; +import ErrorManager from '../Error/ErrorManager'; /** * Component that renders a dialog with textField to enter current password and a change password form with a new password and confirm password inputs. @@ -66,6 +67,7 @@ export const ChangePasswordDialogBase: React.FC = (pr showSuccessScreen, slots, slotProps, + errorDisplayConfig, } = props; const defaultClasses = useUtilityClasses(props); const theme = useTheme(); @@ -140,40 +142,42 @@ export const ChangePasswordDialogBase: React.FC = (pr className={defaultClasses.content} data-testid={defaultClasses.content} > - - {dialogDescription} - - - - { - // eslint-disable-next-line no-unused-expressions - currentPasswordTextFieldProps?.onChange && - currentPasswordTextFieldProps.onChange(e); - handleChange(e); - }} - onKeyUp={(e): void => { - if (e.key === 'Enter' && PasswordProps?.passwordRef?.current) { - PasswordProps?.passwordRef.current.focus(); - } - }} + + + {dialogDescription} + + - + + { + // eslint-disable-next-line no-unused-expressions + currentPasswordTextFieldProps?.onChange && + currentPasswordTextFieldProps.onChange(e); + handleChange(e); + }} + onKeyUp={(e): void => { + if (e.key === 'Enter' && PasswordProps?.passwordRef?.current) { + PasswordProps?.passwordRef.current.focus(); + } + }} + /> + + Date: Thu, 8 Aug 2024 16:40:21 +0530 Subject: [PATCH 45/90] test case update --- .../OktaLoginScreen/OktaLoginScreen.test.tsx | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreen.test.tsx b/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreen.test.tsx index 2aa0de9d..627df63d 100644 --- a/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreen.test.tsx +++ b/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreen.test.tsx @@ -17,7 +17,6 @@ describe('OktaLoginScreen', () => { const mockSignInWithRedirect = jest.fn(); const mockTriggerError = jest.fn(); const mockNavigate = jest.fn(); - const mockOnLogin = jest.fn(); beforeEach(() => { (useOktaAuth as jest.Mock).mockReturnValue({ @@ -51,18 +50,6 @@ describe('OktaLoginScreen', () => { expect(screen.getByRole('button', { name: 'bluiCommon:ACTIONS.OKTA_LOG_IN' })).toBeInTheDocument(); }); - it('handles login correctly', async () => { - renderer({ onLogin: mockOnLogin }); - const loginButton = screen.getByRole('button', { name: 'bluiCommon:ACTIONS.OKTA_LOG_IN' }); - - act(() => { - fireEvent.click(loginButton); - }); - - await waitFor(() => expect(mockSignInWithRedirect).toHaveBeenCalled()); - await waitFor(() => expect(mockOnLogin).toHaveBeenCalled()); - }); - it('handles login error correctly', async () => { mockSignInWithRedirect.mockRejectedValueOnce(new Error('Login error')); renderer(); From 14cb8d25a37b0d7907ba6ff9b1493217befa6ab5 Mon Sep 17 00:00:00 2001 From: manojleaton Date: Thu, 8 Aug 2024 16:56:29 +0530 Subject: [PATCH 46/90] react/types package change --- login-workflow/example/package.json | 2 +- login-workflow/example/yarn.lock | 16 +++++++++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/login-workflow/example/package.json b/login-workflow/example/package.json index 122c0d72..f1f30887 100644 --- a/login-workflow/example/package.json +++ b/login-workflow/example/package.json @@ -43,7 +43,7 @@ "@okta/okta-auth-js": "^7.7.0", "@okta/okta-react": "^6.9.0", "@types/node": "^17.0.23", - "@types/react": "^18.3.3", + "@types/react": "18.2.39", "@types/react-dom": "^18.0.0", "date-fns": "^3.6.0", "i18next": "^23.7.13", diff --git a/login-workflow/example/yarn.lock b/login-workflow/example/yarn.lock index 641aa161..1490903f 100644 --- a/login-workflow/example/yarn.lock +++ b/login-workflow/example/yarn.lock @@ -2713,7 +2713,7 @@ dependencies: "@types/react" "*" -"@types/react@*", "@types/react@^18.3.3": +"@types/react@*": version "18.3.3" resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.3.tgz#9679020895318b0915d7a3ab004d92d33375c45f" integrity sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw== @@ -2721,6 +2721,15 @@ "@types/prop-types" "*" csstype "^3.0.2" +"@types/react@18.2.39": + version "18.2.39" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.39.tgz#744bee99e053ad61fe74eb8b897f3ab5b19a7e25" + integrity sha512-Oiw+ppED6IremMInLV4HXGbfbG6GyziY3kqAwJYOR0PNbkYDmLWQA3a95EhdSmamsvbkJN96ZNN+YD+fGjzSBA== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + "@types/resolve@1.17.1": version "1.17.1" resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" @@ -2733,6 +2742,11 @@ resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== +"@types/scheduler@*": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.23.0.tgz#0a6655b3e2708eaabca00b7372fafd7a792a7b09" + integrity sha512-YIoDCTH3Af6XM5VuwGG/QL/CJqga1Zm3NkU3HZ4ZHK2fRMPYP1VczsTUqtsf43PH/iJNVlPHAo2oWX7BSdB2Hw== + "@types/semver@^7.3.12", "@types/semver@^7.3.13": version "7.5.0" resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.0.tgz#591c1ce3a702c45ee15f47a42ade72c2fd78978a" From 0926b09596721ceb70bd86235560b98359f36db8 Mon Sep 17 00:00:00 2001 From: manojleaton Date: Fri, 9 Aug 2024 11:59:06 +0530 Subject: [PATCH 47/90] updated changeLog --- login-workflow/CHANGELOG.md | 6 ++++++ .../ChangePasswordDialog/ChangePasswordDialog.tsx | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/login-workflow/CHANGELOG.md b/login-workflow/CHANGELOG.md index b00fc9eb..77110ab0 100644 --- a/login-workflow/CHANGELOG.md +++ b/login-workflow/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## v4.0.3 (Aug 9, 2024) + +### Added + +- Error Maneger for ChangePasswordDialog ([#612](https://github.com/etn-ccis/blui-react-workflows/issues/612)) + ## v4.0.3 (May 9, 2024) ### Fixed diff --git a/login-workflow/src/components/ChangePasswordDialog/ChangePasswordDialog.tsx b/login-workflow/src/components/ChangePasswordDialog/ChangePasswordDialog.tsx index f10038e2..3cefd0ae 100644 --- a/login-workflow/src/components/ChangePasswordDialog/ChangePasswordDialog.tsx +++ b/login-workflow/src/components/ChangePasswordDialog/ChangePasswordDialog.tsx @@ -91,7 +91,7 @@ export const ChangePasswordDialog: React.FC = (props) setShowSuccessScreen(true); } catch (_error) { setHasVerifyCodeError(true); - // setShowErrorDialog(true); + setShowErrorDialog(true); triggerError(_error as Error); } finally { setIsLoading(false); @@ -106,6 +106,7 @@ export const ChangePasswordDialog: React.FC = (props) onFinish, props.showSuccessScreen, triggerError, + setShowErrorDialog, ]); const passwordProps = { From c388a11ecec53d2fd4e9dec7a13d3a543ff10644 Mon Sep 17 00:00:00 2001 From: manojleaton Date: Fri, 9 Aug 2024 12:48:32 +0530 Subject: [PATCH 48/90] typo fix --- login-workflow/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/login-workflow/CHANGELOG.md b/login-workflow/CHANGELOG.md index 77110ab0..2858e4df 100644 --- a/login-workflow/CHANGELOG.md +++ b/login-workflow/CHANGELOG.md @@ -9,7 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added -- Error Maneger for ChangePasswordDialog ([#612](https://github.com/etn-ccis/blui-react-workflows/issues/612)) +- Error Manager for ChangePasswordDialog ([#612](https://github.com/etn-ccis/blui-react-workflows/issues/612)) ## v4.0.3 (May 9, 2024) From d3726a4fb5744699b8485004cc408bf5827f2f84 Mon Sep 17 00:00:00 2001 From: shubham-eaton Date: Fri, 9 Aug 2024 17:29:41 +0530 Subject: [PATCH 49/90] Chnagelog updated --- login-workflow/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/login-workflow/CHANGELOG.md b/login-workflow/CHANGELOG.md index 2858e4df..33c3347c 100644 --- a/login-workflow/CHANGELOG.md +++ b/login-workflow/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## v4.0.3 (Aug 9, 2024) +## v4.0.4 (Unreleased) ### Added From 7e1d01fee4897e33b66f9737fa54e58e12676b5c Mon Sep 17 00:00:00 2001 From: manojleaton Date: Mon, 12 Aug 2024 13:06:26 +0530 Subject: [PATCH 50/90] removed basic dialog --- .../ChangePasswordDialog/ChangePasswordDialog.tsx | 14 -------------- .../ChangePasswordDialogBase.tsx | 4 ---- .../src/components/ChangePasswordDialog/types.ts | 3 --- .../ChangePasswordDialog/utilityClasses.ts | 1 - 4 files changed, 22 deletions(-) diff --git a/login-workflow/src/components/ChangePasswordDialog/ChangePasswordDialog.tsx b/login-workflow/src/components/ChangePasswordDialog/ChangePasswordDialog.tsx index 3cefd0ae..12680766 100644 --- a/login-workflow/src/components/ChangePasswordDialog/ChangePasswordDialog.tsx +++ b/login-workflow/src/components/ChangePasswordDialog/ChangePasswordDialog.tsx @@ -31,7 +31,6 @@ export const ChangePasswordDialog: React.FC = (props) onPrevious, onFinish, PasswordProps, - ErrorDialogProps, loading, currentPasswordTextFieldProps, slots = {}, @@ -41,7 +40,6 @@ export const ChangePasswordDialog: React.FC = (props) const [currentInput, setCurrentInput] = useState(''); const [passwordInput, setPasswordInput] = useState(''); const [confirmInput, setConfirmInput] = useState(''); - const [showErrorDialog, setShowErrorDialog] = useState(false); const [isLoading, setIsLoading] = useState(loading); const [showSuccessScreen, setShowSuccessScreen] = useState(false); const { actions, navigate, routeConfig } = useAuthContext(); @@ -91,7 +89,6 @@ export const ChangePasswordDialog: React.FC = (props) setShowSuccessScreen(true); } catch (_error) { setHasVerifyCodeError(true); - setShowErrorDialog(true); triggerError(_error as Error); } finally { setIsLoading(false); @@ -106,7 +103,6 @@ export const ChangePasswordDialog: React.FC = (props) onFinish, props.showSuccessScreen, triggerError, - setShowErrorDialog, ]); const passwordProps = { @@ -129,15 +125,6 @@ export const ChangePasswordDialog: React.FC = (props) }, }; - const errorDialogProps = { - open: showErrorDialog, - title: t('bluiCommon:MESSAGES.ERROR'), - body: t('bluiAuth:CHANGE_PASSWORD.PROBLEM_OCCURRED'), - dismissButtonText: t('bluiCommon:ACTIONS.OKAY'), - ...ErrorDialogProps, - onClose: (): void => setShowErrorDialog(false), - }; - return ( = (props) enableButton={checkPasswords} onPrevious={onPrevious} PasswordProps={passwordProps} - ErrorDialogProps={errorDialogProps} currentPasswordTextFieldProps={currentPasswordTextFieldProps} onSubmit={async (): Promise => { await changePasswordSubmit(); diff --git a/login-workflow/src/components/ChangePasswordDialog/ChangePasswordDialogBase.tsx b/login-workflow/src/components/ChangePasswordDialog/ChangePasswordDialogBase.tsx index d2a97b4d..fa1e0d6a 100644 --- a/login-workflow/src/components/ChangePasswordDialog/ChangePasswordDialogBase.tsx +++ b/login-workflow/src/components/ChangePasswordDialog/ChangePasswordDialogBase.tsx @@ -14,7 +14,6 @@ import { import { ChangePasswordDialogProps } from './types'; import { SetPassword } from '../SetPassword'; import { PasswordTextField } from '../PasswordTextField'; -import { BasicDialog } from '../Dialog'; import { Spinner } from '../../components'; import { SuccessScreenBase, SuccessScreenProps } from '../../screens'; import { unstable_composeClasses as composeClasses } from '@mui/base'; @@ -35,7 +34,6 @@ const useUtilityClasses = (ownerState: ChangePasswordDialogProps): Record = (pr currentPasswordChange, onSubmit, onPrevious, - ErrorDialogProps, PasswordProps, loading, currentPasswordTextFieldProps, @@ -117,7 +114,6 @@ export const ChangePasswordDialogBase: React.FC = (pr getSuccessScreen(slotProps?.SuccessScreen || {}, slots?.SuccessScreen) ) : ( <> - Date: Mon, 12 Aug 2024 13:19:41 +0530 Subject: [PATCH 51/90] doc update --- login-workflow/docs/components/change-password-dialog.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/login-workflow/docs/components/change-password-dialog.md b/login-workflow/docs/components/change-password-dialog.md index 81bf494b..e48ac212 100644 --- a/login-workflow/docs/components/change-password-dialog.md +++ b/login-workflow/docs/components/change-password-dialog.md @@ -20,7 +20,6 @@ import { AuthContextProvider, ChangePasswordDialog } from '@brightlayer-ui/react | Prop Name | Type | Description | Default | | ----------------------------- | ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------- | | PasswordProps | `SetPasswordProps` | See [Set Password](./set-password.md) | | -| ErrorDialogProps | `BasicDialogProps` | Props to configure a nested error dialog if there are errors changing the password. See [Basic Dialog](./basic-dialog.md). | | | dialogTitle | `string` | The title to display in the dialog. | `t('bluiAuth:CHANGE_PASSWORD_DIALOG.TITLE')` | | dialogDescription | `string` | The description to display in the dialog. | `t('bluiAuth:CHANGE_PASSWORD_DIALOG.DESCRIPTION')` | | currentPasswordLabel | `string` | The label to display for the current password field. | `t('bluiAuth:CHANGE_PASSWORD_DIALOG.CURRENT_PASSWORD_LABEL')` | @@ -39,14 +38,14 @@ import { AuthContextProvider, ChangePasswordDialog } from '@brightlayer-ui/react ### ChangePasswordDialogSlots -| Key | Type | Description | -| ------------- | -------------------------------------------- | ------------------------------------------------------------------------------ | +| Key | Type | Description | +| ------------- | -------------------------------------------- | --------------------------------------------------------------------------------------- | | SuccessScreen | `(props: SuccessScreenProps) => JSX.Element` | A custom success screen component to render. See [SuccessScreen](../screens/success.md) | ### ChangePasswordDialogSlotsProps -| Key | Type | Description | -| ------------- | -------------------- | --------------------------------------------------------------------------------------- | +| Key | Type | Description | +| ------------- | -------------------- | ------------------------------------------------------------------------------------------------ | | SuccessScreen | `SuccessScreenProps` | Props to pass to the custom success screen component. See [SuccessScreen](../screens/success.md) | Props from the underlying MUI [Dialog](https://mui.com/material-ui/react-dialog/) are also available. From 0440140a7ecf06f343a311537b7f9620880c05af Mon Sep 17 00:00:00 2001 From: Komal Dhere Date: Mon, 12 Aug 2024 18:19:36 +0530 Subject: [PATCH 52/90] updated Readme title --- login-workflow/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/login-workflow/README.md b/login-workflow/README.md index 84bcc06d..bdeeff7c 100644 --- a/login-workflow/README.md +++ b/login-workflow/README.md @@ -1,4 +1,4 @@ -# Test React Auth Workflow +# React Auth Workflow [![Build](https://github.com/etn-ccis/blui-react-workflows/actions/workflows/blui-ci.yml/badge.svg?branch=master)](https://github.com/etn-ccis/blui-react-workflows/actions/workflows/blui-ci.yml) ![npm (scoped)](https://img.shields.io/npm/v/@brightlayer-ui/react-auth-workflow) [![codecov](https://codecov.io/gh/etn-ccis/blui-react-workflows/branch/master/graph/badge.svg?token=H18T75WBFS)](https://codecov.io/gh/etn-ccis/blui-react-workflows) From cb041efb0cad728f3a4c40699fe384198d8a5acf Mon Sep 17 00:00:00 2001 From: Suraj Karambe Date: Mon, 19 Aug 2024 11:47:47 +0530 Subject: [PATCH 53/90] Added okta login screen readme --- login-workflow/README.md | 1 + login-workflow/docs/API.md | 1 + login-workflow/docs/routing.md | 4 +- login-workflow/docs/screens/README.md | 3 +- login-workflow/docs/screens/okta-login.md | 37 ++++++++++++++++++ login-workflow/media/screens/okta-login.png | Bin 0 -> 147926 bytes .../src/screens/OktaLoginScreen/types.ts | 6 --- 7 files changed, 43 insertions(+), 9 deletions(-) create mode 100644 login-workflow/docs/screens/okta-login.md create mode 100644 login-workflow/media/screens/okta-login.png diff --git a/login-workflow/README.md b/login-workflow/README.md index 84bcc06d..e3f75eae 100644 --- a/login-workflow/README.md +++ b/login-workflow/README.md @@ -6,6 +6,7 @@ The React Auth Workflow package provides a consistent UI implementation of authe The package is intended to provide a standard, out-of-the-box experience for capabilities such as: +- Okta Login - Login - Forgot / Reset Password - Change Password diff --git a/login-workflow/docs/API.md b/login-workflow/docs/API.md index 8a88ee62..5f047629 100644 --- a/login-workflow/docs/API.md +++ b/login-workflow/docs/API.md @@ -123,6 +123,7 @@ Exported screens that can be used to customize the auth workflow. - [EulaScreen](./screens/eula.md) - [ForgotPasswordScreen](./screens/forgot-password.md) - [LoginScreen](./screens/login.md) +- [OktaLoginScreen](./screens/okta-login.md) - [ResetPasswordScreen](./screens/reset-password.md) - [SuccessScreen](./screens/success.md) - [VerifyCodeScreen](./screens/verify-code.md) diff --git a/login-workflow/docs/routing.md b/login-workflow/docs/routing.md index fab62d75..524883c6 100644 --- a/login-workflow/docs/routing.md +++ b/login-workflow/docs/routing.md @@ -23,7 +23,7 @@ import { ContactSupportScreen, ForgotPasswordScreen, ResetPasswordScreen, - LoginScreen, + OktaLoginScreen, ReactRouterGuestGuard, ContactSupportScreen, } from '@brightlayer-ui/react-auth-workflow'; @@ -69,7 +69,7 @@ export const AppRouter: React.FC = () => { path={routes.LOGIN} element={ - + } /> diff --git a/login-workflow/docs/screens/README.md b/login-workflow/docs/screens/README.md index d096cba8..62f80062 100644 --- a/login-workflow/docs/screens/README.md +++ b/login-workflow/docs/screens/README.md @@ -12,7 +12,8 @@ The following screen components are available: - [CreatePasswordScreen](./create-password.md) - [EulaScreen](./eula.md) - [ForgotPasswordScreen](./forgot-password.md) -- [LoginScreen](./account-details.md) +- [LoginScreen](./login.md) +- [OktaLoginScreen](./okta-login.md) - [ResetPasswordScreen](./reset-password.md) - [SuccessScreen](./success.md) - [VerifyCodeScreen](./verify-code.md) \ No newline at end of file diff --git a/login-workflow/docs/screens/okta-login.md b/login-workflow/docs/screens/okta-login.md new file mode 100644 index 00000000..810c60ad --- /dev/null +++ b/login-workflow/docs/screens/okta-login.md @@ -0,0 +1,37 @@ +# OktaLoginScreen + +The `OktaLoginScreen` component is a part of the login workflow and is used to render a login screen that integrates with Okta for authentication. The OktaLoginScreen must be used within an `AuthContextProvider` + +![Okta Login](../../media/screens/okta-login.png) + +## Import + +```tsx +import { OktaLoginScreen } from '@brightlayer-ui/react-auth-workflow'; + +... + + +``` + +## API + +| Prop Name | Type | Description | Default | +|---|---|---|---| +| loginButtonLabel | `string` | Label for the login button. | `t('bluiCommon:ACTIONS.LOG_IN')` | +| onLogin | `() => Promise \| void` | Callback function that is called when the login button is clicked. | | +| showForgotPassword | `boolean` | Whether or not to show the 'forgot password' link. | `true` | +| forgotPasswordLabel | `string` | Label for the 'forgot password' link. | `t('bluiCommon:LABELS.FORGOT_PASSWORD')` | +| onForgotPassword | `() => void` | Callback function that is called when the 'forgot password' link is clicked. | | +| showSelfRegistration | `boolean` | Whether or not to show the 'self registration' link. | `true` | +| selfRegisterButtonLabel | `string` | Label for the 'self registration' link. | `t('bluiCommon:ACTIONS.CREATE_ACCOUNT')` | +| selfRegisterInstructions | `string` | Instructions to display before the 'self registration' link. | `t('bluiCommon:LABELS.NEED_ACCOUNT')` | +| onSelfRegister | `() => void` | Callback function that is called when the 'self registration' link is clicked. | | +| showContactSupport | `boolean` | Whether or not to show the 'contact support' link. | `true` | +| contactSupportLabel | `string` | Label for the 'contact support' link. | `t('bluiCommon:MESSAGES.CONTACT')` | +| onContactSupport | `() => void` | Callback function that is called when the 'contact support' link is clicked. | | +| errorDisplayConfig | `ErrorManagerProps` | See [Error Management](../error-management.md) | | +| showCyberSecurityBadge | `boolean` | Whether or not to show the cyber security badge. | `true` | +| projectImage | `ReactNode` | Image to display at the top of the screen. | | +| header | `ReactNode` | Custom content to display at the top of the screen. | | +| footer | `ReactNode` | Custom content to display at the bottom of the screen. | | \ No newline at end of file diff --git a/login-workflow/media/screens/okta-login.png b/login-workflow/media/screens/okta-login.png new file mode 100644 index 0000000000000000000000000000000000000000..1822241bccf03566ee28fee6c3f97c08cac719c5 GIT binary patch literal 147926 zcmeFZXH-*N6EI4s0@6f4DS`@uQl)oLL_nlTCzK#fB%u>}69EMU1*A9WNQ*#1hX5id zRch!+i$DMcLofI6JeF7Acdh&V`PRBWZq_=SlR3N0o|!!}duGB@ZA}#_3T6rd0s<;E z)m!%n2#7EQ1f-`c0P#XdQ)u*o#$h38r7~7kC z2b6BApJKb|^vIo1mHc(+R7$~PPDP%J#Do!SbcW9S1y3N#Ov-0XDLEn|p4_+8(L>a6 zLHtFrn_ngUMxsm(vjw)Q4AAOVO^ZN5&iUe z_FNc<`T>#g%&B?F2`HTiCno`iILomkyAMc|VLe&P{&4^Jc<8Lx0aSoM`&7%*dZ;65 ziydv?2ZpC^1d42m8$RArSyvrZ60hB6zO~bQmb>@sm$TfOBFuM3ZascWn@1SL?IJmA zO`z(|snxr1<+3!V=VSg**wHIdJM!P3T&)d?I;O8OIWKOL;y?PPOxULb=d&9NOW!T85&`&deU*~KkmJ-5}WLqz_^}>Q5~UK?o~%zI!wu$0|)i>|ks2wv!u&X|xJUg}Bv zpfSyLnuAbEk>rgcI$X=#wrWz7~2dGen!}yNEk=EwNd6?dx!D1yRC=&_*;*BC)Qe z28K4BMg(#NN27v{oUxXq>xeR^`-PN ze98Vo>MpYs@99QSD!`Vh7E^Og}pHi-|rjJp`_(%8~&f+E}c5x0%V ziUq|PQzFcwCLd2mmb9bp*S#gexUf>^M~Jl6%sg^oHKi^+RmI}T>PhEGCh=tdaYD1h zT*Tz zyyK(lqjDvd>ciT+q${wfIX87dzt@K9t6n#KB%PT;4Z{;;`drj|1~1 z2pV4TG+B$ED3HA|rJc^z`_h8T;%cDgQR6{1p>p$`i$)ifEMr@)hptexMo20vDGMs6 z-+w)Ov8^+L=Zk;DkPsh;3@N?1GqQRo?1%5iYMLvaj zg^s!~J^wdh1|s^D`klJt`EX^JUfP?r;vRiL1BKipRia^`p;H4!r7o)3x>lyT>H{je zIW^$T^2Gv1jZQOOeTVR2k`g*t1gZ$7=o`MJyqe(7B^{ftDVSe1(C#kk?&rZNP3BSS ze#QN{`(+PG_Z5$fWjg#hA2lDD?_=NJe@Ehp@P=PTmKB6K&Iz5qcN%`){hXhusPHrK z2?*waBsAy#JMoVaZ^V4=-xY_8^az&&*@a_9?@R0GO_ilOk-lBvqqvO_332_3XVspUAE08@R)HP_yWog zn)_hEP9HJ^#Sf1SCOeqf`}c-H=U^3Mc^?*^mn88|!!uTiWFpKmCrRtX>zuZzx9;yt z@6(a_hZBd(QE#8uyM4-velGd)`%kSdNUO*>J8s{6)_h&fKfB%;8t#@#&SJkx!V`?Ld(lRnD!_^nzlUEGpf`Sx<* zoymuX_*>q4UW~qQ@2ft_KKfpAo5Og`ty27j&9|GzYXi%X-|*X$i@q5p9~R3UFjfK7 z0lbG}hiXTkj~I@6iS81;19b;GXIji`p}B96-e}2u525X%p1N=#`i_T_cRoQI`at!8 z&6h}_A_Rja+vm8iT%X%p6mEIlf;F>E5~3^JdJGOd<-lHeKCD zNTVB2T~+~sYo*eTey>Mb(kRL1R%at;eVNYlo78^UyN_&JitH7932rfVl?KJqraAL{ z=H*V*Z9A`J&Aq0^I#*s@S6$|{R?k*X*GSnErw}(Eqn9k2ii@e2^X6>h&*ihxL!Z$* zHI=iMx2AQN$e0S}gbB+@H^>uZynNxJS-^9b9%c8?MxYzVnDjK_mcOy4u}sDLcSp0! zP##|$xGpur`DfBx?_=;WN2VhaA1AcDb-eQvuJJJlteV=^Lg&g~`>h{j#AheCB~+F4 z8NY=qAKzL07*dp}|Fme#V5LOBRId8HUH2#CJEXlsAU}eShu^D7z{kw(we9ERmSDX6 zibJGzryu9ihn^K1l+8Y%(A41gS7dP#tHaX` z9@`@kaS`cvqCf7*G5dc-LgO4 zm8@cJRxH7Re%j3jsf=ojczj-mm;Z z6RNOPFCO5(sI{#i(|-Rw>GYH7yN#3IHSv=#w^8fk@0H$X_;>6GeS5nTyPTh$aXv$) z@mApZ;)&MID{=H>!@-8w}uZ$!XT^>WwpbC;|f ztglM~EgF3MPDEt8a+F9r{BhyiCqooywRcn_9Aj$)cc0&)TO&ZdeYuCj$;jnvooC#= zFEt~jOj9M8Iutk7b^17=@%Vgm+#CKKy91^~e$rKH^4FgL?=`~4NX=G5gWwwQe2Rb= z#7sZ}Jb{2q9>ntN`8J4$fao7MApt?SJpu8LHk!cw!28yiQr2Ttxj&9ZqI=V@F$zA%Vg*5Pd z0v5c)@lO+X2f0f|8rmF6POdf_;sQbfLYL$zI5;?DU9D}U@7=onqdV|T?$QHycV}rq zK~GOl0Z$PDCs#Yc>rzruf<{|@qVoLe?-R<8EW?)FZO z94F&i-gokFm%DW7WTIc6fAO^Ovj07kquY;V0Sgp7c_VmTKuGY{*g#j=6R5Pdy_XHt z_?A5kpcycS{B(97A8-Edsqbdvs^kO%=5&|;&95KR z{^!dd9c2Yimi`~4_?OQAKmkI_Q^*SbVwyZf6>sx%fRC*9x3u(tJ0N8zAEFaENjm;!XX{gH?K(}SRvq)gIZWo%sY?Z^mojIA z+m~yn3aZUlX0LrIt*u^*7%43+Ix_Zr*|twer=zDRM7~WI#mTDHAr)KWV|%nd5bJqw za$sl@57+n5->z~mSX-7>SeJ?2?cN^-YZS@*3_Rh4ETF;M~zP_VoTA#)I4U-w88S6 zZ>E4@nW|aolu)spc1BS`ar>U>X3*r&%kxa>4a!548Lx1CPtF#h7iwwyl2>09<2%ePjL@*{i@ zGOG66YtDWC`i2b4zAN{7@cs)!W@dfTMjxfVG`^A9+?%Y8b2&8kz#B4F9=&pc zZ4B7f{#X-GR=dYbX+owhMK)=Ox3kFb<*_l%Fl6n~Cn*WcO$}M&P30}|;FR2Sn&Fopz!OB!^q8r7Mf30|$qwK0F{W>U%(wV5N|{u&2A z4X{VzghkZ=i^%Bn<;gZ9++YCUpF!}F zH!P5HQkn#}O4{1!=QR#fESp*wT8s`o)~R|V9q!Wgv9vT`nBt+Sf}#2DtH(NJ{{qVp z0mG-4e*%BBEJMf-pMGe{Zpena)>2@2BMlf6QB)j_43Qpb*C(rs5L!0S#tKE9$6ebT zi4uh*)Jd|j)z=B81m2ckf7CKI87D(Vdb8qQwwodLpkWYO=j!ovFSXb;Utm9h%wu%= zN@0d}#-V!H9?mKDomN5TQSME%ttz!;?m@fb82kA>RyA}fibe5l)*BRI0tpXop zPuoX<)y{(6CB7TW8#}Jq0?`s`ooALecVe>SfydS}0Q6qge?lW4Gb6GIkZp{&Nv>Ff zHIBW{^&I(Xjc^ZQ-Cr4g9=(^a{Zu<)+c*c$fcLieppyYSeq-?PwkXv36Z)7DkxgA@ zX)sgJ>%s1{XCAtg+E_I0`Cez_rBGV7{D}XxB_D=7m)cU>f9bC9k`Gg! z+Yi{~pD=HxJQtr*pM#{^W(qCtQG2HCD>-&*i9Jg-%irvnJ=n+xq?Xt`ASkr=BgKZ&oq9CwX;pGXF+zU>!|Zjs_2DaES!YwFs+k~dryR!C7FdExGV z$3IU#zv%s52ERvAEzUxwf14biv}am8EKP>vsRNyr`BZQX5e7|@Hc5$OGx$zJymxoa zH9M7QQZke>+f`GV1TVG3b@t$(pi@KnQ_Eg<{-n2F&jA$GlD%1wx)~i)?|A^#G*8m= zy*+3XAZ`c_kExXVX99UrYRtmX+kp`GZ9ApF9``|p#9`d0WjdtW+dD>`HiKA`WffoO z@`jg1fcXC_=g4rE%sXkB4M|ED#G=Zwz6n0U7CQ%V49VxHaP=a=zrfpwZ;m%T9F zhAqL(Xv9c|5?*7_h^S*_e{%TT^D*k zlIX8K3tzO`EI5pk3)!c5t!e(P!rSl0Mg^cynd7w++7s@{4cjz)tUjh<6=XRCgw$)! z6<=eG)+8)w$T87_94c#433s=x3u;f`5WB+L4@NrmD6!SJg5Kx)8HJrnZx5hvLPZo( zl$WnUHY<`cx?K)0(BfSRI-lz&AmxWJd_f6{e)lGJX`laj{r(7xaJ^0gF8yVM+VtzEMN^S8o zQ=bzm%XYR<<83mL=I+iy6u0GZGx92N4e+)IWpR z$k+Tv(5kq768DE1W|3vL1s}W#K&@9J!4HS;#<(>M+wf;_N*U@}?2MY$m^TdDExRsw zWG0Kn&YPBb7r>pTCW5lDSW2xmEz~>m!5byuDGGac7g&eta->GA{56wZ`fA_x zE@s}(UKz168|KZHuNw-_1ao!Qm;&=0z5)BIe7PoZ(?mP<;jk8SaYMW-T1~hTYx*!< z4|@*_RZ!P8<{XmJ2t!RAE~<%b$yls!h`v&~mo{Mih2OVnM9t#|NcmsT{{6Dpho(4F z%7olP)|lngE3GXXf?M*1J#9TmXXE6LmkN6V!jy^N_e@F}7%mnfwpb5?R>eIkUL!1HM>QYbJwKEDSk%f9y#TS-E zJZfsCwU>s~JWIoCi)~)IWAEcbGrHUK-hd5^GByd}XF{GdOo-}1N)Snlwo4CSsQfeu zLks^L!1$ysHa-&`}H;I(|$AB8O0^EO!laNa8~v!=0kMvc52t}Vu9klF=^k0&$s%9h}h zYFV`oRYNLXsXCYqZ)$}A`wXTLX;+G`vB$rvdd69!JajMTHQ~4$a#QpOty=5GtO4`? z+7r8mlQZ0xhHa@yXr|@wGvIbN z?oW$M^JHF)T}!<^aNpzdQcoyWb}O;8g(hZ89)>V)64hVJkxtlO0mnEweH|v*moDtt zI=It4a4#eF;axKU{kqvhK7J2l{es?agU@rM4PEi}g}rKGi*{~YNWOHB{(A}fA$zP^ zX{v83ribVeht@aEOBMLOhgVG>wv54KWuT2+a%0HU7=z%IRd!i0O3e+0)nAgO!b{n| zA6&TOU|7GB`&yvr6kaOb=cOn%(=aV;FIChkK%A_^=38+_SZ(o{L9ExZQh#cvnHZ=p zRl6f&h30hAjlS>N$VLSjHHPY<%X9l=PdSbBb;V-lO}jlfYvj2bB@>m zPF=e$&B-eU?tflobPo-dd!aO3%?to^>ToNv2gAgQ+!ggVW(0YxHIcD2wZ{zRcXHa=2wrrz|4F|t(?(#%p%TqxbY^T;i6 zB<_b2YT-NPlq9RUKnSNTIW?>?CZWvF>)ZezxMl!*xMYg+YcYw>*)vtQT6Q%OdjsEB zyJu!V0-)pZI=)B8+%jg_jsN-XD60*yifOesojz><89p||_XrrOqTxD}-YJ}ihyrC2 z$DF{g(4oT63OV@TW)5KD&gmv7!*S=I)kd_Tj&lZW8X&-+ZRV6%uTnm#Z0tx&Vn+7? zG-`SO*&gdF=uv>f=hQ&b<|#Tvh_`Yr{7gVnWE~;*=j6-$dKqc$t2j62mjb08qwis+ zD=W_{h179?K{}IvW>iIuXS_Ns*17v7!-J=6?W?As6rVfc-FyG>WG zEwHuLpYV{;=E;K>9$;Oh!aW#>aR^SOspzBD7xs=@Y%Zom1@iqxPR=}omsQMy@wMOC zJ(}8I<*s@Um+t7u)TJBhjSpqXtHAD>T`1w#kx|j-HrobA0vneZDT4Q|ynSmGXR@9( zR?3K%dT6x_oH;PtluZ&$x@x`U1%Zx_`EQ`9!J_krZHG*Y1=oa*XBG^f{cu-YhOq_D z3Ojf4*REj?vN_kyQay~zDVGlgIf%GIu6VZL#4c%n}(An;LfwgM`u!qhk)VvWj~xnROEm zSMDYD9I2=saq9qn#-31GVeb+C>Rr3zY|i6Yo)x#m_k%XawP*7xj&)*=)#6T8eAjNd zBG8{=VDy;hvwuuWkX%gNp3eoLWCcX~+0;z* z#D~M6j<}j$X_gV>eXP+L?8RPEbh&j)p5b z=Xw^RW1_^e-t<}md!lpXwNPp&I~SY7Eq#EptpJ4jDRXQNKlcS@iPMS>Ww#f)pg+PsT zxHq*ue>ewrb(wYkoV}Suaqav=*5Pjh%k1Cl&C)_Ha6exOH%>53Yn2Tbjc;yr6Swqn zO23fiJ&p5+8NfZJJX5_axGE!e8X+a*U=jSFCJRD^9v;B-t)WoHyzU*FMw4+7>=X4~ zg5>IOe`8gr&vjaVzMDmP zAL(J7`$$?hV{+M0+pa1*$G7O=ikr68ayi(ad>IFib9d5*nGF}w0A|$y>ECQTy?`{4 z5L-PIRd_&;aJx5jU}sU?qr5^#)qA;oZ)VAL`19sM0oQ=_RHdf<^=%H3i$Mg0r#OE7 z$aAY?A=8beofqfsWE9WM^XS)yMKsoRl^Qm$P3h1Nd^=G>jx3a{#rY4T3^Fu=dq zC1#xxR1zW-owqtMM2p}R82mK6^49V571O}^0|wVmOI?6A3q2#uWwuN#>y4Ht+1K^zWkGQtG^CAe{wi>ClY zD-Dwe8?`FI5aS{!FylUQe8Qr9>@|=YQ}@{;23Yr<{~+rL{`iZ|hwK*;ik$qkyE=yR zBE5V|i*~-iFd8?}r8&}!PGx(ca6I5G8&PydX86V*OjuS`WdH2(oh*>2 zJ4rlgYzWZC2B_W1R+TVO$aZIPZ<8#>(TL?g*+#3FDL@?Mb$px@G$}CP3aaxiPT7f) z8@**=L6{!WAOUfZ`1aCrGmsuZ=3~<>R;DV-%KaC`XrH6$5&|uf$EC?J&E7Dycu0!9 z;kVDlgZv}V#xdk*=e4dgl|$mL5?e;`RqO2!h9+ zUz!?v`3(jccD*_hTbC6Cqm)d})Ig&eyZ*o!L_AA_v9y^~1dTJg8*rqM~EzsT@_Blsa0!P}Xo^g8l3Gh%f#zFv~P zc%L*p$5ZiSwaM52?7*y#7K4mr4UK_sza@ssWrpEC`BtXXx3j|<80pK&x-4k!qSsbe z@=0VYo_PL21VtrsVk!)hdKl$=pAxebG-pzQ^sU~VejxG9a%qL-MY^1vJ6#pzPgVw# z(w{nmsFN19MXWvwGmSR%3^XWLy5ja;sOZ72vIx^o(L&v&3!n$jJiwx1z=S>S z<%^0XwJS=9Jw0+#aT51jaam)u&M=G8h&itDGNRKxmZ5M|C~uxB~Hw3>*1# z*;W*(2QOK;#s>x1*kIlu83!MqeGjrS8w4sh?n#i`m`}-#I<>LnaGNKLP_X=8%MYXP z3!3b=H7NrNdxOB>@<=_2cs#UFt3h8`QuelM<&-l0CYFh=kuS6bdYO8O0(j%xeY=M56mgUowWTxWJgFT) z8cg3>?$65oG_154if_M~LX*;8PH*h=#9z+UK?}+P) zdW#sk87HvGhqJY}7w&Dj@KHFTx`gW&DTB|E)LYhK9M*;9N?NwBr(X+yLj-ElUNu|W zuB8^pQ0KXv2?7hV#n{8TS(NL0W%G-&hlo2a#R3ue@8>bdWPrbQW8fTR|1LRsS+Y8V zp`f`Rwq7xt(yO)H-^{Vp7M^x{du}g;{48Y;JZaiA8lpf67ai8jM!(s%5WLLKChQU8 zt!EfZ{>--0`*1pH3UG<|8!v*(knts>fJ|EPFc)_ppTgJ|Z>5U-pxt0dkOb%W$W+a= zgYW8=+kUzfVJ>m~#nHxL05X|ySp3zaaPF&dEeUngfsegCKd>WSJ-4}2mkBYC%w+RD zu}BL?voGwY_Jh6x+k}lZEZld)w+vbCJb;lRJaOo~^h4;p^Zl}ah_Aj)cF7&cgn??7+KQIFO zY@Ap1USAYHB${&Az{&~TLrtYVjm|usESMewb4mQ=IDMkPaFnRLZ5|V-SPu^mU&sj9 zC^(o&$7ac$-9+2h9;WYRUE_ZQ1+UnE~?3*TJ(nnQ4I>B>i4-Oe%IH6 zhKgz-zG=O7e<2DlbH@37>dgj9R!_9vF4nNDBXl`FKK`w9$p|b2CB|V52J&NMR2YNT z)?1>y%9AkJ{vflp+44NFj_35u)P5OW9#9@7=Y9)X0SOen)dTArHgGuH!)dW+FGw#x zf*gAjj>Y)5by9aBt$o22uuOqeEUYV~md=?9!$v>zc+yiI_#lb6x9&iu@yg-5C1scd%#|0rmc{&oI;8eY~6&p1fB?;^$ zqi060y08+zC+?BEAMZDlOQw1ymd?r0g{6QJYsIpWsml-r)j2j& zR@45Z@pHwukdn?yya^F1pkd3w!Fq1%Xwa0N+eCqoG9TILIpuRpz|;XPfV-xNF3l+4 zs*4c<%vqSPEz*}qp-dX$P~>6g`+i$>7f?JUx6uN5Ey6z?0FFDLrXW}=KGWNMIqBF> zB6>EWoEB4679`)YlCTcuDk&+kx(HT6ZmUb6Zj5`X_`NU*<{?D2JrRB&Lk6u{o7sw~ zcOyg@hWygaii3pWrYkPrk%#@xCH$B%IX?(Qv8R4fP$z?8Uj=PAlaRoE6$XRVIL?ke zGAk~scD&oM#dQ}?rb7x1{q#ak+Nr0T@;IBSP1-gwijC2lf)&w8;vnbc87Pk4Y&(Uy zLGjGvr&ALA@E@_jBdhSWO-&Z&du<*=7a~^aoEdjU>u6%PwzjfLFtxfY#j6v$iqJ&W z-~u94!xsd&f`|l%ppo~{A%=phe+!u;aecE%bbiTjZ5PViVf$-iqrBAq^tl_dQ5!So z+DHO6dS3N^`t*_#BaKOFpaEm0MaaC53S?N&if&cJUWn?!w zrcLj+<8zB^h6=Mc7BI>PUA-_hKF*6Z-&fSjM+eaH@P5s%V!xD@mUcoExq3uoHPtZO z93Ec$;#zPu5vr|F{6WHL%qLO@Uvgq7Z}V^2Rm#*uqqZ#^D8)fCQT;RL0tlHANRsiX za1HcU?3>;NBn9S8;YDzT^ZU~%L+CP#sFnT~FNVbnt1TZSAciRulr;0l=|QVbt=vCN ztKtq}E+Gm|Gr|a^!eIS(o4?ZZT%aq^o(T`E@Z*Dwe|m>Rj_v2xWs%g~?29Wg=nR4t znhJlb4q7dz_a$@$WFdtG{L6`VBz#2-UA+`=WO%_u_YxfqLtAmQ0EjaB3oOdS3dR}Lch$k7m^`v$>Va>lHaU)KdqFJf86M(R4Y@lNa$*Vd2M#_D?mcN&L;olI1wg#8EXZmz)T zjXb}f{wN}|KOete)#1dBx#ZjB&6qOfv3O%+FP3RRzSiv!?!7OueidahRX**9(@Vlk z#elb(SB4j&URK>~P9YhPS-@S!CYO1a_tgueikeOze|N0N=yu)oPqAs;YzQqHoRJcj%L!GADT|=Q`wghlpF>FW2F2U*kp?*?b{(d&ki&mmGsFO~&rm zY=?j~&;iq)!(L1uqNf65x&+T4HVwx1Z?iuwy0NoOqoA-h=b7R0!W6zSJK;)&aoT@B zIX8UO)OmcmLHi1h3d6n==-^KTcXNxa$5$RMbPJkZ>ekQ*t-HE+G#$8E?YEnUS5}Dh zy$F(V{ASG-9kgnCff#BhEq?3g`ID8n{{mt}9;xf2@nFb)Esok))audMMHMO}b9o?g zttRW{6cFg{&6IsRr10#xjd)A&X!cY6p%>8>J=kYnYGBADe>mPYN&2-uu?zudo*H!2%ysuJP6bfuj%GM%b>lvkLLAd#y-pcPRDZ;=339fMbpD^ml4WXU&8z zakKZ~ch$F~GWPw~D(as<{2mr$c6sM9YdnB4?f<}7@Suf#UQLT*IJ5eGv$d4Z2R-je zO2%jsFcs2iXW6Vq(YRxt3e#k?pXxUsxW;dqJMZg+ZrmfI`MAA45m$Be7{yq#vlE&H z8q*v(v<&fE^QDGp9SsbyY0kKEa4T1%)r}Uk-HfV?OqUAsz(+Y<+t}LJnBRJ3OMlPIQxgDW2w@h z!>I&TsL7BD+4VZlIe{7+uV++RLgSN55QpmF7bOGfM;E<20}qTZh=wHQ!Y)DbOWw7} zSrDQsxIyDdQB*%IIEXCRhX!+JgI^ z>vG7(vM`|F$Fn_l#ElD*^S_^RaNuOY!EYNRlGf9e~HzEBmeK9m}i_GXsi(3%|6 zlk+!snJ+>Dzoy!3e57YwbQgDAd9``GyCqu)I0e+gTg&v@^!}$4H21oeIvaiRWjCNl zm*2HeWAe)q`7;{6Bi=gj*IW4GLeAE6K=LzRT#{7=B9H=qFXr|s46~zx^HzUqRM_}X zMm3k#M;3%9-d33mw3#CRkW_J#`c2-7H<{ExFAB$|Y)W=I#n$8{5^qW-Jzx*s4my~N zW{*i(n@sgxKh(m2_Vu}O+=i(lK9kZhdukaw&$pcmeKgRT`YxdX<-qdp{TT(NCVWnd zuyEaBtyzxo-?q$v50zxy7}J~zf+g&B3m*2f&E3AVO$u#Vb>H<*fqw`;@=cR%Xej&g z(2@-2ndY5Y|2dAU#)`qAW`t(Seff-()6l_$bm;M@Bk3()t7b)L=*l~MdJtQJyKuA; z5QAme9Xg+ za5~-}cu(kJi4OQc=eF=B(r|1t64hAd?TW?h-xutWbVnV`72PJgeHp?;f8Ut@Brd=F z_uR{J5UsVYj^_zw@mJ|h+@y~W+o?82*%eZ`84S_sQiWy#mKRcN^0)nbpC7EfF4-zE zt@TmxKJL6t#x-tzTSlP_Qn~q-VY@L=Bv&cGr%lZ&64?d@H?CHCEfUv!Zr~oPa>dhJ zh+ChovB&wpWdg#H*Z7K%fR9jfg3cfIYtR?HC7-44ZSK3uwt*g~+sv7zzySJeAwD`? z7!LKPM#3!wMRS>mDt5s9>r#HXM#PwB(xX za1D(+8J=u{WIanC`NzNdmDR6xdUmWma-5x_I)yQ(GUrx4;m4W(qKOowY0&-UQMh68 z3tKmfx0(*=6PC4V$KI*;OhMpYtZur%cql)n;x6TOuN?n`#m?^Kjn!#6u{A%B;Hi%# zW;GVpYpcUcNo@YEYuG?R+tbK;H5IxM!1Z$9zuepDd*tx^3&f!f@J+5W#1EOA;6V6a zIPgO}ld&4?lD=8>hizmZzmaLO(~rKj)Ba8e?pHZZ!fwJBefi<)wH24wTY0bvGLstpMS$H%b{SgZ#pF{t(_coRMNYR8ZdM;7qnz)QK8AgB5w7MrrhoDsU${+?2qTH_1{_Q;Zq8pv&1eRD> zW1iXPrYkh)Rx(sO_czzdKe&xMinMPQ5cdWU?BT9j^sLx&%--Kgu#jCg; z9o@!#$PPR0Y8#p~^1lfUI3((3HaA6_J9ZFx93HEQrJ5x1CP@&PDa>G7h-$ zi3t|OraaHaZ568HzQAc-={wca?%$6F=H~*p!j^E$v$D?@Ev@2z-oLU zsvX5pdM|cc!E0Q2>C2ZFTU&5@80=MiJfqu@hPQ>!{n}@RM<=`0=FVTP2L}u^{`rh< zlUiQxRi<*g#I?C`A5xo0`;xV#UIPy^AE&J@HJGsPow{d<=?gL%l*jOjbw@X+>S=-p z`fP}g&&e_Rgn53z`OXal925R<&N(15nQzr_z!?wof!;$AXyWp>2>$;~{%_KShY3MO zN}5wuW!Q84QHk2uj-I%M4v3GBj-Etn`p3qu@$>Wd4-Up{=c@GE+{JUBWMFmww*JIW zGEwoTWs;A$wK zWUc>JvZpZA51?o2fI~fe;}+Wspb6{WP41B3pyIsnv)>W|@fXiCi#HWrzero5sO}bf zFm18UqAVNxK`6qj%SL;pl@5`n4(Ref4#Pnbkd?*O*4C^}cX>(4L`uw<@}P>2W*bYc?02v;j^AD$KzNy%qLwePuc7 zAy5=H@_I}%NpHcdy1IJ>r?;JjVN90 zLJKnL(i9*-J~XJ+OQpeMVGm_!0?wjTYZV_7Z7uUUod>MSo7aM%y09Hq<{#&EW<9hZ zWZZG~@bJ*;;=XQ^m%*ApJo83wHBOR*I&J(4yNtt{QMIF!Q!fb=)^G*VZhQu*U;vD_ zWH|ZoOsVSh3}W|>5phd-vh#_ppuc&bs#=Q?Vbl355rAOneUFRf)_ls zY+0T^U3soELlP;nF+3!aTTvmxgb*_w4=On!m>k!*D-3%*{YrR*8pm^x%)osgLrhSK zCX#%V7?-%r6aK3{Q)b2nM^Y8k$^q=esd9Vr3v1p=?g)~g7$Mw{qab5vu*(3PIwp+H@97<3(As~BXZ0R!Y4gY0~_a4*g3;2(O@WZcZ!J!+^H zT+&6_-_U@@nM*(>>lNw3HW7EzWsR@gO?=^7)``TA$sdoEmKi!JA=5^}PZ{d)yoe7f zX|B!o`2NYohe{cUomP820#cVgzfj%(gH{PgP)kP{e5`5kCZC2YHiYG4{iSvzzL2f?u7 zUMoIuUzzC52`Pg;VkpmW4eHJ~2W%aQa&ziL!WvNH%lf_+`C7purMEbMpx!uJJ;p<{ zWbcc{mCtudd#f!vhI_Ley01Wr1nGZ<*t97@PC}?Mm@|rhbj)lbV6+dWRGnVYD3FS4 zq)6Cod`lcbVoB8{y=2-1O&qQ{+(4O*;~Vxj8XfsQy{{R|A;Gyeo3P}0^nHCB1dDuw zps6u)#C|4&5u%VbzfuN+H_gLbjOAGziFzfv>AknrW z%uT%gMXAB^z;0$(u2%l!YN1zcGlm5Puo|a3}54R@ck4<8`g_qsrE2_+q+uZ z#iEpH0IDl$eMT}ffG*xxa7-%Yfs9{zb_J-~C=vXXk>(%=1i|gCjZbMnXRI?@s*)=S z1yQBk!2Qlh{)!cmG7BJv4mUEE&_<)$n1-8GwpGxm(%(^kPVzX4-duV0elcf(4~#qv z>FWORxT0BH3+)r$e<~R;9@77_l7Ukhs8fxLdGKtL!${(`R6^ay0wOr3dCWZ84ULj1 zkUzna>o=BEKnhqi?w(K2OU1PG@`%m5*{3l>c1D3ufuBE3BKOtKAWAO&YW;(cFM(Xk zKZPiM-W9Ev`zI6dhxIWuHz_ebLUNy1}gkT(mj**)#cBOKYRs zVdcW2CrQ7Wj#Xy;=WP4a*&l z2k24{1S*ssj7E{MjwF{%wss%iu6s(OZZRG79k=v4vYOV-lVB zsjuCyh+z{>5(&Gy6$C4@=X(GgPbcIsL=CRvLrfU`q+dzYf6ayH3q>xFFQ4vS^|Qc7 zuX-ac3X~e7Q6rhr-yilSHi^%ZN{{=}0IG1~cNG7hDotk1nQC6g7tML%Nz#S7$;n+- znJLM)j;pdIQtI%Mo|NTUMM(KxllI++BB0VkQj7+3#aLa%R@6EgbED@JW=eQg><>Ek zX%lh>&foqZj#O7s0h^^GP1OFAfU}>fT(UYv9XNLE@ z+s(XNq`243^0(= zEF5QZ)&;EoI}82~1F3la4=WFD->qJh!XV#}u`>P47W}g>RG;8&fH-L0L^&Ks(s)@thND42n$e%&}f9ps3PMxICR$k;}vVqYTn2Jl@ zPXPr7%<+xEH_nS%$dZlE{w;x89I9x8v^zK9a4(~BrMzwT$GSj)<$POmP>ICrZE9-` ziEp1j-RSwJZmANYVzh?)>399hTGe93z95)j&Y!9I6YV2Wy?x}+K$8*#<0bu5Q)TLq z08SwOT7q&m#n?+?==9o*Z<#>|5@ixC-a8HgBpW6CH=f3sV?nUhS?aOZq&NtmHHH7k ziT#TUEjcfw$R_ooOl8n&KtD0GG58Ph0}*eLKL(78`J_nEq|&bU5KzfeQa2{jsPb{0 z+8iqOPtfI;-TFr`o?oL?Mx)|&NMYEZ)nT>?^B7M}^wz_#K6*1>q9;@DL`bC9-V%^^ zeBG7Qe_?c&#yWfrU3y7<Sm>OzP7l;$nu|B7mrD93u_C>e8!4a8=$jD29n>rM(j?Rb zqyk>2R=d~Ug?6d}KWezOogeOplO%*!*aweXpj`L*1`_^+H8@WQ52*P{{d2z++~Oz& z3T6{#fqt8#T=o^*qumg|BXuyl9E1C?z~6r zy#&NUpDEdO)?Z}QE~|B7zP*+5mCCkJBE&-q`PBi z=@=N0n4t#ljX(YUpZ|3|>wfjTd0x1dYq4POeV)fY&Lcj@cc+n$VW>!v8s0}zFd^d2 zAia-Y;$4xJbCEqzP0g9S`y`vR!>N#T^B)b!GVLM(EIUea+-=*DC$kD411n|kLMe*= zvR9%zG@`~sL|^XyYnreje4y{{ra@mKeC6aj-H2)1XeUJ+pM8+iJP=*wDWQEyc0E-Z zF_q@iD!_(0zA9DGFH>_E$jc@$RwHnVt1dczE{Kf!i~?XFqqBi)o_Xb1akfGrdC3_+ z4WwiG&@~GoPAeiqE-JnC{_8Emsk4n6D^^!R{o9EwqY{wRALFRuGt(Q8yfUIqIz|D7 zS=SZVMU5(iPLYbBV%F1r@~f8J5B|O7;G?j%7slW2q_yAyHP}gM&$h0|yXdGp_xG}# zzKOHoV;)h_{>!o%6NO%bZ^;q=uac^=Ea_SSE82C?Yy;402xdAFBuEl#Rs$zucerR`$p_tE)bREY_@Cg4@EQkKaEn&~yB_Zc(FBjt0=9YD zr2UnxWXdt#`YbgCGGvAW{Q=NZ-+V@=9Ma&~de=_+awg1i#JfMCF0M>c8fKk}ePJ&(mS~%jQ zR3>Th&BU^1DJ>p?zRqn%ga;2&cuV-$fKOZvlk`}1-($%l%hVau32CTf!**mXQpRiS zC$0d@_(h+FG8R419<4ETf5v(1AV}O$Wuv1*At;`U$z?)q5LAow_p)OB&$%CQC7si7 zDsO0PGjmjPR)7izKsdqwdJ!JH6IR(C;TdmAsx4lIw*9^G{!U>K_1^5FiheK zxDLy@T!5g6XlThEV>Xm!ja$Kez7CI5T8I%Ve&Z0not+7En>-&wTP+0}H6OJfj(n%= z;v1JVMXx42I9@9<>K|piLmz1n&3tyC!{}VYjq{l-oXt0TO|SP=0jZlGLK7$|y`#Zcv83O2*9 zU)V=kDNu0(=m8tIrE3g6G}uc2fh9MnQy7bT(r2P*5thd*C4^neYtjQ7LX5f@wN6Hq zvz|#E>sC%<1~ewB3Pg7>ZoD?2#YSD!@d#M~tTM>nN1M=+VGaG%o)Tlwu;x{)z-kzz zx`Y4M+OvTMm>&O|`LBeVPp{9$U5^1d*^gcwW~=D*>(gN~&5zeRs9!+-pr?)o?aY*y z6qqtQSE=Zhsp*#)MIL@f+O|1IbFT9fP;BgPjGlC6u%p@cvK&8auZ3;{L-y=+)1JobG)}bHGL0HnpdyEJ231cZ zW6=v@*Wvb8Pf7l+3h8}-yJ=b0i}~~B-^A0|Zm3__G`={)pPE_;P!0_JsBel@EV6M$ zi2|%cCXLQ^@z^>rYPMu2=r!5pJMU!cOpc_t1Udeaf9&X5Rj@IsT!8hl5zreunD#gs zpmjZ*uwGy9reDsS7ObE&5Rws^W`Z<23>K~z&>+Vj81^TPh1@1oCdnQ4_eyyG6ZEes zGvnbqG4pPB0kaLnMY2Rqq)6&1LA%-9BfB+^dE(cS&lpBF0T26$szlh(8pRl{={`?c zg0T5`gW37pH}{Ru2)mN%e#DT*RPlF(S^&XRSA^H08QQz!Ip@DcTdSxtU3bAHiF6$} zTZfuD@B5z>ry$d3ipm`iOVlGfIJ-^4x5V_V8a3=2>^Yr0oMOfh!@W$7g+c{LU=0hd z{u^;7+X45vtU&~(f?tt#0TTlEc{#@?$oH1=mXv`@M~|-P&xh!svBJS)m%=>H9m7IM z8Dq0@RKvdEV{Eo->byvPr?4TD=YYe}KC9nnH(s}f>cDu9)%R2B02kz5a)8VLYi+Q= zc_pk5&vH+ zd-W8seEh6^S;EaBsqaVTZvl`@a*O^f#XhPV2+M@^BI5F-J~@${w~%AIi_kON6Dg-( zTq_=bma;!?oS@E=3Y>v~8$Hs<%4{Tz<;;Taqt=;1xe9f-fZil0ZY2?Q%2jD9?jc26 z5~Rmr^Vq8MkOsq>BVyRFTt={js048WG!k(Ft@3s_SDzLe-&-*sFNPaI2mdk`7hS1B zVxZ7mBR2c66AzJAE^~&JWbXi?sFbom@W2RqUI%f~?kJ~k@&e^iR84tOMUdsEFOBrX4rWvMnt$y9Qn013AHJhb5?iNw9m;-2Yatx&UIY`_hr8;y(dW zC_VfjMAZ*1DpPM%bN>0dPlL1ZzzW(U_^t8_2OpuBb2c#h zy{p!V4B5Ma6xFZSUQycOnBYP5q}Vfof7UuT^By&x--h0g>4x^zupEFaI$s|xpn|w9 z)U6uN(yPz)l7!EO8zi`9Od89X!!VWuyekH-!w*U)zDQJ;YwFu?B`GT44h0H7G>8q% zT!irQ8paHN^FCnA59pn>0=S`@X^;e4a?xUSEm^+6S%Of#J=x%48Xk!@}7ouB(-2_pmn8 z%Tr3nBhO4a;}kojgwop`i71e4JiLjIRqJu0?OlY!srtR?1*2l{3D)yt_K9j!L*1yu zI(bY&n<)?ju$r;D53PFnCD?u?TjlA4~#uaGd!6RLbJ&FBuyJ+5(-u0$}--Q5=Oe0|e)>o&StnI5q*IqPw41S%kYu1ZXq&s6LaHbvy zDRK)KW41jV%QlgM9g@iR8EseowX@nwc!=7NetJSnrs&W5@jw)-=ixZAAxIfVtv#_O z2rpg9n@%T)HyZ%2l7>t#Y1US!AHkI&ItDxFa_+DvU3OBnu?I#xRP)Rh;alw5`& z>l#0Ryu!w6tVzQ9wVKc0&@nx*@BR7lsvT`~5c!|%CK*NqSh%ms9}5T47l~3CLAH*l z-s}PUr}UQj8m+5T@O}XvER&=PfsC{FaWzMLOv`FfTbi9{W*lY3+13 zNIov%U6_AH$p5er)+^#d9!QCk6G6mx>&C8&OKdv%4afoxu$N@Z zx5Bd|8%dLClXvBY;Kq7@A=)i!a39HubBVg;dd9@7&B=7U?U*{gE%57(C7p1^pH31? z2;i3!6acDHQM3Iv8;>DCqhC-STGrYu!%{@#NU^u$m#K{!cH1@p*aS8sVugxOD5`tr zcH);yF;Q`)BCtgNk?$>d(#!-q(^1mNhZ%M80I8zd9po(bnA>WL?F{5O`SWzz20-`2 z|8`V>QWF3Hs$D>UqrX1C1A@C7iX>67(-Ybe;ekAvL90W9&E>*^Tj~JbJOek4raeVn zkQ?@mc?ri#TbwLafy9e!?wf zvo1DkUaO&{4$f5U=_sjQx2YRLQP9I3n557sszGcdVMj9-IJE^Bu8d4;+~2nX1yYU#Yq;8w1s%pnu$-G}UiQ zyWl;6gM$n?NK*(z0F~AKM^yHF#k1HuZTs=nMMv_~CF52|PN<2)FL|93Vcl&TK=rJ~ zEyVS7RANq@OxzGlakaa>utC!r@)7(-ZwjhX)j~qJN%hG6)1N|tBfxz-@oN0@BHet^ zmocAN; z`mi>5qi!+%NonlBHa(o(sjLG#>-rQewfXRT7LE|*I>)YNEw^JOSo+axf>O=Z$puf3 zP08!@>)PF7k9<0Rk@P;qj`D?P*dw|&WUj+Ktr*7-fLtreFKI##bNH_Cf`t!*{;3p7 z(_b9o8Gu1v>;-Uyz1vy4WS%6{|1iH9;4E}DAAjp-qY0d<@9=zcXojqjA zSxZ2yVwmKy{LZdx_f{&wH(yCB!Gb1d$@*t#-3BGbxgi!n5lk`Qz}q~*uIh-zUn)Qc z@mZ4|okogOiQ7Hdr(_DBV)BsM?B=Tm;XBDOO8s3iu^WK*qkHgAQm6Q|aSZak|AP3# z`EuFuP`lk@ zr)sM*UxV9NdohT=(5uyYMb6jsg$Iv-Ss2NT{%9{8z!UY(i0Y%=nvUbW7$WbV{Pjs? zKxCGnAnzGBJ7w(jU)>?sAj@bE7?8F50$95+do{^KlNz!HVPIW_GC$hrMO^`1-q%lR zg4o}H{&mU}zfYhGKItOHx&{x@m3YJJx&Fg$t*JBRCFpS9`sgd!`0>>>3${8w zt)%l)fK=uVV5sreq=p~V&VB5n67ZzFv2&r^aK;HE0pQ2{-INy06kuite>-wJ1%#(g`T;$z}D z;>eW`c&!s;U_1Tv2sMl?atJFv$OX=bT&zqxPw;qB?W3|Eb8X7JEp)0xmc1i$fGqVc z;QvUMgIFVU1pqZF*1rlDFt^{d2irfEmhad&W<3ui7@n>_N@7wtKtMU*bk!y)JgLA{ zBpkP_jZ{J%$o3oX>M_JfpX380az9LzEuttBOJ6H%)AxQ^fbn*iE@$IcFrq~%EkkT# zgQ44>^`vAeo%!*^byYBbM{7GT4)>_*e=cg=I2MwtBA8}uV2e>3jNE*fIR~nJ19%>m zm0#-f5gc}v)tL!bfqgN@|Mw_oe8>@SB zG;LD~h%5cy;{D0MHxw^0o8*78A9y4l#LhJDq5yOhCrClM%(yrUyL&W0qte}Qx}dtw zbcdo~1QW;qL?8U(@i=<&NhWX@Fsd-U$6Q`?C|;K@Vku;|x?uK9{g%NE`ZhKGHaB?Y zvf1&SMw&MN*8M`+E?n;Qe_Za{ZZGK0G_Nb}3T=0HVEpZ`@Cql7Rjf)Uws$e1DZXY> z5Kxw}UwXF6LpkDoN275J3}{g`e>!blkud2l^Y5g8Bhdv^P|tioAfCCJEjd>^uuC14 zL&G1!^sft({2f0;{o`ZD1Pqgm7-1PeYGdZdkNY)fmHN)6z_nIAI*dZZX%laFsY^4T zbR^>9WE{8e@b28rrKbH_V~+Av%LK?%sY2B42G^$^rZwlXlGovBv?k|&&&mIgM!-3# zO|_mX!DlRwkU9?d&2syvZ$y?U_BK_8qLm(SwwC%MjqH+!_;(_?5U_+Zu%3B;rA zQbvQXT{Flg@_Lg^Crc7Pac+3k6_~y{1LO+3&ri+Mu2RM&y}u41)ugr)e_NyX)h@P> z`_C3?0Dp$nBVnD9alhWAAr)Dh2O5_=MF6@mH^Kr}3Ouj5fW6useHq{fHL<-Mrg@Qy zg4n|TD4^8HtIj@B&nmv*RS=`iGkNoudT;KaN}d`XX=X&0j@kVAp3IwoP2E zO$~&`-`AM(38eWq%!jwqIQM!0G_Bn*RA;G^M=~WT%!v+U=oIDJGr_GzKP0(X$et54 za14N=#+o)eg-7&o1ILA@d!%JRkBgsfS&Y6hQ`Is0Y&Ej=Pb}~N4oLq;wRbvzxxSuIUeLfDsi8jVif+86e--Y`o9!N)NaF7 z8a6b-KFR>1C%u|H0461FTOLFGZ&~B_3RrLiw|OO)n}@R9hL0ACTu5UyyLG4hTbQ|s zeqk+SKph(lM+4f~iuO+$D{_Ak1Gtc*>A$$pKPLop=s$2)xodvMt~R_q5)Hks0x)lM zHG6;U;nuKKKw0`@r^4rb5Y7;570?@%;yLh@1h8L>11}l>7PYDn{7nK-DQLP{LXG%71vEoe+BE*SmOqpU z^zwaR;(SO0T$eGaT#u)tIS^bRK04nPpfnj*a2@c!*f^&(^L^PD4~+(-mNOjEI{58>;|%Be7juI7@xHkjUn(OB} zVg{08l40sTA<;PWVsCvrBWQyjZ;CE}@*gYs)7ga)-ykgwaCr?(g3~Bu<4rL#zXbyr zOU?ffBe_Nj=#2CMcgh{=W#z1|H6Wt2!@{z1PG9C{{DFfD5VB zOgRrS!gw%cK!$}JXyYm9$CHf#%I`zs$$-L-Rqy}!h3^l3(!;@n7F#@NZ-ImL)icbR ztve2|NYqfM9OC!-$Sh|q5=aeYP}MKCF^iCKH~y!r_|)1H!@n)jU~_Ax9V*c zcz&gVhv|PjelwX_qqVtU!8lJ$tyclhL~EutfbKXk`U4$Te!T(~0=sroK5nP_{~;oD zE!!R@|636W8zU>l{z3jjBP0Fh`y0PLy}qVQ@VB$^+rqx+B}8M+><2nNqGn?g-)+CoR{i{+kGC?9_*)K&sOE4?kA zq14|pBaZ*djQmN8{i)s_oS}@INc$ml8^DGsgarVEZ%t(d2 z0nBVl>^`SiJ3tZQn;}YRt&U)2{wGUwnos<%JDa2d@p=~?eVOR9pX>)sgRxT<=OITP)FTu=Ob&E4xs$DLWkzNlIeI@*h~Vv zvCV)Z> z!)-(D`l-c@stcRxltLOj2J!5gV8ibpGm<>H1T(~+bi-AiLyM+=Aw}lMHF;v#n4~q#1Z;QEK?DOjfudEs?+Wp1N{OI96L|{ngg#<%wZR5qP@v2g{cC}oZLBOq7Hcxe4 zuvNqrW?AtF*sF=pjCK8pIGp|fu5K&SKb;R*UH0|s2@MF+;jqsvi$Zz_4FLjo%J%EF zXwpwWNuFXZT=Jfmv^fk8xIxywU}Mdkv=-mV{^osv5#G;b^4MY-?Pl$SVSy&R%JZ!bd8$Meaz zhAhs4f4uet=4_6+)C);r7C?$Qx>n4CPg+HKfl>YXzhP7~bX5yAj=QK65xR4Dj~e+@ z%*u)`v!#s{5OQv@F)K&e2gb6K^u%!R)Zm8|HTI85u%90;k{CM|-3lI1WD;|(u3g%B zERZvNelq85>K^O@H1QS!zED4B)&TyOKYa&?w!cZ=z?*7%ajPtW0GJ#52$7q8j5n3{ z12u#Xu=IKBWF-B;EWOaUR<=477ilJ($Ro=a*-W9mh-2f$3ds_4ouqwJKRfJo6i1er z#V@1bTxbQ^1fTZfsZVI&>vr#Bt{)z0Q^P&?lW)m52^pfGPNobd_!YPKBXepS6JhVn zg&ldr7=1dzeAr3TEb_X;i{USudZ4x~(tTtv&8W0-#?nukWCmq!$x?W4?s@`6Dxv!6|0Y&5EgQ?#|HI%4xKwzMxjYXEO!!&;NPat=>v_A1I>P7P0KJnq1UfdGio}d3SY}`FQ zZT_jNcVq)RtGiMh!39TYed0Y#?E1zVsN2f=+`xQix0S|TKN(V(4`2Bb>^a#rIQ5%5 zfL|rQdrh;kA{vmE`-%^IngF$n)tVaS6=64|Q-7yr3$p+eb&94S#LH;*if%_wq?vZP zb9AJ2$OT1b%yucE!YI=Djs7+ba#oNTxFAQSl4Z9e`M5PkF@uP>x8U+z!}~Dz`PHDV z4E9mY#xb{#LqoUhc6Vbku0J?*_zKjZU?$w3)=iQWNtuHs0BhXs`Xu-?d6sB_0y$PX znXD&ZC<|!FuwH`~5CV(#4wwj;WVH9h^qLHmp{(bak4Yaw;Tm=JwmiD(AcTwHTs+ja(u~{rbVLE^2Jpcr@tFYw=%Mu@*!Vj4(5xoHck{;!Jq$ zCf}<(pf;Tf2)4lI3WCM@)W^#DXb?P;zqMN0sgHQ>8lH5*-D{7HUp`;3}4JSj=Xp(3=XC4Kd&1*U) z_8{p8L>3d?dZe`XSpaE!7eI6`F}MEj{$}H2-p4_ffC>tq=nO(@QlPhbu%+mcX^c%} z@PetPTh3=5hEZKa(+k_}l3NPh4(j|t-WKMOLZBfXS?D;JKZrYOh2G$ca4(>~Jk?u1 z6-@CF6X|(wUubs?uHYH8W4??p=A!R8Ch>J(KX^?zi1JoKQ2qF_w!wj^79_Lv>SQ#3 zWvxRr+PanLnc9(Rnt^(QY2tKE`_<j@&^C0G2fimX#I4qHl4K9k(pGk;{(1T>q~-=2N^3X z>?ud)k5WO`Wj`B#=s0~Z_M7C-9(mzDmW&S+0&ygVlLiG*+c?{2%9#A-)ehM{9sOM< zJt*V8ptxHvj*g|oW#!X!T2w7IWMj8r-CmWCO}{tT0{*D5JOv-m7tXHfF%Qe{1geO8FU8PJ6WRi=(l@!Gov{k-gJp z3${Im2SE}D9pYZT#;p}P30$jkkZNyw1NVj_ph_SrS^^1LPc3@)WNTk*HKFY#6Pd{P z{)1@oau#e&O&*6w#qpwS5Mshb3hco-WkPJPu7dM*8aP!OvnbT;Rw&X*N+=|-?G;%S zf*PT!N`^t#%%DR!%SoVu0otvd{>i!kg)McG(!%yU&TakLva(SMcAv~`VLlst}yO#@`2N5vTJ)v90{fy zn?LLkc6e`|X@`f+y4feWE_iv^&?y6-$O4)cO8t3@$C5=V94>1y=;^c@NfU!n2oq>a z!e?|~#me;B$+5lZQLUU^%K~RfPmeISD?3!})A4krZ4@x`TPb0-;hh+8Ry(%6O0g%X zKr%AC%?I4bJ6teP*zz@Xx_#U4s*2i-$7PqH&p*tk2W<{N5#CBWDa$`t{TxWP3omx* zvBc&VuZb*Afx9%%k;&u9;|0q#076>L$B?YvJ+|#!-LzO!tK!x;whO&r#%#{AQ|Hca zCvNxRZs)Adh#Q_kg_6LHi671$r8!D>8=!tj?Adfbv9Gc700^s*Q%VG{akB{NNS-u6 zq-vuY3Np^jW*m;+RBrU|rG}lQC4=Cp2|e?@pf7}*W)UdkZNO^D-NtA4qusk5sK>q1 z8+LSUF#^MS)8}-BfGAAofwN@~&MpsYiQ*FlY|i7^I^T23ScBj(scOM-@9M$Rrn0G1 z8NFw5XZVG4;gerWKEB9u|8*c6%d9oQhoDavhJ(y%N*qBlgzb4c!jaEXw$wq$H@;K zzZh{uF3#wv&Md{eh>Az%1ET`36v%gu6}Dk3QA{|Z!-sn=4;{xM{T{OMIOCQTl78X7 zxW!guOk5_*=*_!h&Q6C7GmJ$hy(2rz<9kILmY57ZiuFFYQwldAH;!W7^e~AZFZZi# zcHq48Pqb|66Q?J`xSS;ocqnHw-wX%!r&n^syLIGG3${Tu{Eck^^*G|vbKLNYBLhJ@ z1aZGwSfGbT>x6=RgCY1xL=9vs>DBvcF zf1Q^)GhVWLeZb@ieD35EA(gz>{ZGNy#8OBIZ#;i39deI(^y}AC8dZ4e7b33KuV3D( z7Bj28zV_s~+jc_mHRkY7_k%x8FJsVW4cof2#-$T6Gf>ef5Z|3radDfK-qqf|J}j=Q zbh|5mP1{ZK_zavtSecJ(rJbP@fuF>z6wWygJ5Kjij9gMp+2eIOubz@LGCIP4@3{DW z&mLr_-c~R#<@uA=I!meTc~a+s2P*6eH)Y!%I#DYi74HFbd*Lhk%9IlQBE^JjEyQQJ zYiHs0Q}+t!T%qfZu``Z^Pu55Q+mfCNBQBTq$vv@_>{~}9IE6HxPtDj{U2|TsKxnX? zT?w2URH``fCgx+!J%8^ndTu(MsB`ExyYzTMe2_+@>G?6^@R%)RYJ2Rq<y99P=hM_4Qxy2CVSc5Wy|mPQ9sl`8q0i6S5NSs8%8BLu-r+}#n-X)FyUQjIGYm; zxjhlL`Qs#$rt^(ZZbLjtw7ZtWabXjWBCg~Ho5psZaw!wo1{_njKA zY)n%bvul3d6@mO53p%q?&$H85cTYL?xEp=RIy}K=djI|hM|~>FlCDngjFS+? z+)4q3;j<~LYm%?Kb0x#?{o4ITt}%U3#$WDdTWyDm7ONnv&3|5!s<0-jSkTa-esEf6 zn@<-0o=4*xDaj^tU=7)z!A3MlEjTFGFGM1M;}VMA4F&X{#l^?;t)Nsp=T{=q)OdCQcjBMDMC_H%a*G1SAe z`_4%{-?w__3{s1^Om_wHg*(MlEo-&HUKwDits*AXC*2a~5w(7_Yldu^;+{w#t6XH3I^+xghI+BU}^~~wkHpP^&(TDl{ zcDeU4_u=K|_CZs9TSBh+khN;f873R(SmB(^;3b2ccKvpV$iO);b>+6m;&imY)x?q1 z#<4oBrehmt$!%-51)3ARvbnHyJ}6%H@%P8>Lju`AUr!}#&I zPa3zwWDtfuV1&@#HaxFzdiFzgBnPzjc@FoCeeV#f=CUUDVC3_Z$zAj<>S>)yt+_rc z7dgtYXEaE+mBHq+7Vlc3#ESe$H?vR9^`n2Mt6zf8sjx*j7{Ez`YNqfeD=2}f96A3!d76_{c>lj(Rcczadnh0 zE`vtG_(^!i8Y$$a_{VngG(R!_{VV6<;GKb*$TFOzI0?-`1mjW|cN`Uy4Zp&qwTXZ3 zg%RXisBGH&Dh*kLy-~qAksXIwQTjH&C6U6Dm zyOHu~dYc6Jy)TpX2`i3Y^k3VGlz!R2;DfKj?=$;AeS)Gai-yq2IAr|SU>7TVIrZ>8 zq+|G5+1LDZ0|~Q$j@>(cT!48T1@p{&;{?m{E_ya#eK|h69H*CW&O72>a&Vf68Vr`Y zrI6TG`<$&;tWJ-z-K33)%OzYBxm{rHb7?X4(F^|`_mhEo8b3D8XIcSCLReF>ZpRmn z&sp}Ve7{ojR9t;yC>!~p6hCpVpPk#bzog?{UA5!@S`_ND26NJ*WdWd~XeQf_R?Nk<0 zc}8%w|La`0rbA!U?BnqS`%&t__WO^!WpgA@OR49GxWwWoIdoTQ)KFq#Zdkd&pGs(F zIRXvON?3uxnX^;43s+(JaiAx5%_=PzkCk3A&B63|hJ>$5u%su`xUSE7JTUH?Fu%yC zuF-hU$xQcb#mKlEzRuXH`Rzcv_RacY@(M{Ba^}by&xShU0!$_3i-hlectE+=$?=4O zYp2;q)E88}=t9P<+E>uhD6Nc3K#yEKGW1w(*GdV}qi3jS2m_e3roC(z=thvY+z zB4&7Ad;M9UE-#D+i`pxKh?P)vKd{?TUYuF&@lIG`jO2lXtk6rlO@~u@_G$N@Q+>Dd zjJMF3NV!ohd%pX5LKX3WKO%b8^MrgF;T&^KODABa(g?PE=CMb;HhWnvY`9gxVmBF@N5}l%7S&)+M#LZ z1gooojFW=;o}jZEs%xjSz0*fUl!s#&JEz z(6Ujc+^R_Fs!5~j2p6T!%B33ayn?g)r1Cs`F^GesajC7d_rKcQ-bN{;F3?5Xk)=fV z%4au@`FzXY0i9tLg96>~k)Zl1gK z45_&M=?CXrk}BrO^ObGt8odv3d-m}|28Nmo11NHQ2+Q(shq56)Qx2j6qEnj_O&t#RgH(|Ski%MICW z49+_YG|5pYy+MUM3S=$jMm6-wY>hR>N49=Rna24C5i6AQE!Pd;@@~G%xNq9NSsWs6 zSGjcJiT)Kj>qlxyK553RMr+2JjS^O^nwFqGC?4eG-1g zLlrhxyTI?^cf>G*AF8Aa;@& z?%Fun;$jL&JfjIJ%&$h}zbo9z$OeOx8OxZ;uWp#?9={Y?OMWz@5=(RXDxj11^?fH# z(*<2`xgz1-e*cr)q9GdEi7hh+SOT;#rD(iZf~XzoHFDB3sS%iJc>=8b4tLJWFPz)n zC30M7wJ{VI+T#aql5t@%^K@uA@6jnALy2!IIFReeP1z#oTya>?oY8Ul-k0ZTWUrJK zMLO$ccbS91$4J%Y)Qr$uv4P)qX?kKSTbiEf+xBZke?cqR%5lf@z18bvXCPxwv-sb#qVt!p*gw#me-X!(ykiuY-{6tQiaj0z4%Us`XolRcaJ z*qX^TpO~2@pElwR?Cwq|*;1N^yQ~nw^J!P}pK^2L(4;wYGL~hLqNZQ+~MYg9A zu6~@wx@s=z#FN553t`Te37KEH;*)L~t~en|#o6TgyzxZdTx@o)s9U0zlZ~6Z$I>h( zc;DY9hQ8N1o={ZB5G<~BXGx=wXr*}qzg1PCD&B|^`m8gUN7Gd+xnE@5K&!T*nDY&NjwouFWS1As3Ko4HsG||)0LxSjjjA;qyu>{XBhk` z)eVu<_{+93v@f(O>kksG7DVKXan5IFRXS#4F0Q&}mtGMV`5J+RKW1~D)?3Xm(Q6@>uXNy=EA@>BlTo4WP=}

+p&T}N7I$c;8luoFygO}5MAIq@Oi{GYn29l{c)Ma+_ypYB!EwAIFi z5?_9;@@r{#U{L6TdARm9WLIZOE$wPy2l%?PzSt@yTKI9-n|tpPbncG`e<^?&C|#%1 z6hgIip4e<;PHkT$!oQX+fk)`{&>r|#!M@lnd+zeTq+Jbt%&w|Z**$4mQfo~Ps37g}|r=(&VPEM39Y z{cWxR8>btdr7Tw}2#=*OKaV)O4JAA*-*rQ08EC83@O5mD=&!yqFS~ClWAt)5e;Qwh zL^F^`E00&z?8(y*Ln+(<&x{T??58koA2Z!ZmZcYmLC8rCl_hQoI>oNM8dYSSgSs!| zXs#f=QN*8-jD;1~WU~5DSUb zgUuTuD;Ca8QtF@GE~}2cV=Ypf>y$hff_w>Yl^x4+m$A-VJvY_3K_F$a^f8N2nrRYZ zH|w|Ke(-Gk-49;HLMkBe)2;rRbnHiR54)bOVcsa`KgC-K#t4*#w^lD~K+a&IN=~x% zKR&&qH|R-!LF8d#aKM2&3jx*iu9yU=Tw+t9fU8>p>I<2AfksrH z3_uc^0o9^SJ`-qUoP+M*&yK>lK*u?c{tEwgpZ5-bwE(n|gyGpR>gD%exONQ>GhJCN zKM-)3hZ_-LyhvIztrg<*?yiRpL6=|bRUJ1aG0IyeO61f-Mk+#9)z8G=8y$>F&%Zq>F(j{up(wp` z1Kiq4i=^iVokXt>hU9!xR8?dbexvEk@m7woPp+^@SH_qX{_gQ zl_XoWkK*h55y0!`n$iGmT~xL{>^jCdLSAvUi8JRg94k`hd&12tK15iGV&qSqLbbT} z8xxBw}sIQDYo+|>G!!f=&J3kPK-tO(3~H0!Bt_QSb%Ml8onS|R0T zkXCKpg3um~G5vU%yMeenxYFdZKI>6n$e5V%*x64aXN0L`u$+;w!Q+Bm3inC5)eN5w%PqUbnY@~3m^9T@l{jYa@p-B4#2O)+Xs}uDc@XB$e`L{rYkRg! zDIms!&;0yIic7`(={hgVU(9hJ^D~N5qpZA7?c1o;-SiQgx?TVF*Qvzm)FVa|)8VLaU#mn|g;XD#vd3(@o~(Pe0QbSkwIr}{boMkiw3#E-8)i)eUv zcy8~j_kFKQeGWD#X|d5!c}aU_dtg6K#{xHIz|BJ{oyB!r)c6^%m(*IU1Sp_gc(H); zC}@3aH=mvfWmn(TMl}0c$B?gNZg*~WUvUX`ZTz*?R)a-Dt4)O#-q-o;;GDg4!C_pd zU1AGO^;UNtYo8UUkP&tF5-f#U+K@!>xgkj!xaq6DA<9pkcCZ$W#4z(Hl-J%1SJkwI z%wXWtR^B?4J%bM78lEMRiVt-1Gf9TP-<9dO3Vo$?47V*N^g(s!WgLsBR|pw&KD)O2 zuR0NxQsFu1yq?ZmH8^>Xm1KjX$db#~^$~)+5(|`zyclM}**el}nd6Ni_~Xyq69WhN zf%GF;VTOTzsj~NS-xm9n7G$mWlg?&vgU?1*Ol)fg1j1HJht{-%TjeQJ=^Y*$jek!) ztbNMAYTM3hEQybJSRhYkS^gYXbkx86ps?Pbi^}r>{rxVUnpKXwNZHw1xmgsC^ND=@ zIP=p=rR8);eBYD7$s)&tDoWfbFV@Z*a_~-&?S;BJ=dhi2Mlg}imioP1kf%|lx1W2D z3B_S&x!??sN=v^?Arv>TFdrc-k@NBubjv2_kyh*C*HDnhEE*x6egmQVtuYeY>&k@u z5vVntPaI(Rb7@FC$r*Hn?Wr36G6we2Am~`!#M)(NOycYKT%J2=U!;XF&N<(nvZ>w$ z-w+RLr-HB@&M4WZ;vpYN$&0b`Q7T2q0kz!+3YTCEJyVH>n<&M=D8=Sb|4-Wda60Ttvqoz>N82M)ZdFfZ{c<+D=T`dqM50b{IwNzMmwZVp; zu3<5u{T-yn^$x;_F@gEk<z zl2J^9kqodWGN{8kQ90H)IMq?SW#j}qx3!k7Z&KwUpAu2Hlj;j&R>~otR(&=PV_4Ly z?_3#|H&=TZPJ*~}ONG5s2<10Qg}!nJ1n3(uN}6?2iHv1dR4)u8R%wuzuLqAV8i*8p zuNWp+g(!W{OcknW96QK)_`TVQM}pGzj?ICAETTSZ-PNpxK>@`ol@!y^ldyY2l6q87 zcT*{M5fpZN_hhcDcxrC=K!wT=?ptDfRx>fca9u z0DsqAc$5~hmq&&BV^ZBA?BacBFm3%QH&iESOQOZ30i-Y5Jid201M5R&eEMS*AmOgn z|8J|_IWUM&`AQYEWE8BE&Nz8+i8~<7XzG5M@l4rhPJ|__U|sqKwbT#prDr@Uapf;4 zuM6_{RBf#KphnnSxuS=1aq zSI#r1b*(pRC`muVjY#e)3yX{sUlS4z$}9_Ee%%kwULD zz)Ej!M9oN~>veth_ylDi`pAN5S5Y@?F!KpKrZ51za{gY;gNXYmi?~?+LPb4K@=`+^ z{bAr!J5?Q_kRhAJtmvU5POh_Jj865S*t7q`-kXO*-L`S#C4@pKicmy$m95CqLfKWa zjkU6G$reHr5lX2nk+tmG7{)f1kv021gBe7K86(>a#`0dC`+4rC^gQqJ`{Vb|dmPVk z^he$IcfQ~2I|4_d4pv5YLGKS}wVMbP#mz5nyEmCPJR_^pjZvN=J=Q{LlSH=3DcP`XZjQCU|>U9`cgiBsyyZVk|mgb^R z1{2NYy&hB}1tSVc=HogwKejKP>Dl)gt#bFZ-m9zW zoetVUX!}b+*qw^s1bzv=)~jy`_NTF|cz59rSxb5=OsqXV)0el6U=rDDW6m(5%lQuN zY{+aqRy#Z)=iKR3fogr0pGSxmq9bVNNz5PbF|CwcTUO<2=pEM-e&*?X=sadD1Hb-) zzE`6>Vsvdyv}Z;Cb%%CjYNucdEY@mXJnCX>Xy_|}Go2^$D$mwn5s)>HC@Mr6Px@&Hur zH1MX0>VLsk%wa0Xkd=%^VS7dVS(5v7j#1=sCxKJ%_9Z#GIddi|58Z>E6)0zk5rIWN zQFkeC9Tm6Y6Ky>>Z&lcli(u%t=v#sqGEA z?U6XkV!kM^I~j7J_Kf$#sW?n`)in@=q31#$Z#n<%-PY{p`|rAai(fam4V5a!GIZ{E zzS42iaiu0{3{M@wgjd&2*Tsr`9l9^d{C+0-ay3)wkqqf7wj6QT!Fw=XjgQP`&y13c zo=>xO1&J((Ft$3h7E0g4Eb}~#2FQ>PfP22A&&(_sb&oZtyHp*gV9~4OdX7=Vc+YHA~h;FR{V23Zr5XI7xz=ggR7nt%IjG$bwA=^ z_oV2YJn_we?#YVR#a{TXEyw83CR)cGq);W~+*}USxL8|HD*UXZ?tU#+1h%T@GlX;h z# zOyEOZk7-9`p|6P#uw&vk7ERj(lRY{UoG%XhH_^U)FA1gEPuH&uG~*%fKRE*%7R=bW zvf97|N^+hP?~rY{f>TqlzUk(sKrt$#Kz?CN>eJyd_?*K|GE8hjJzXD)v+iqY5vMo? z`boEPOO#b7^VZ&ZKcF~!acYgQiFX>E97&GAK9FgAixrIa$j8zg@~WWcs11B>Zs#Cx zb|_rC({ROXt-O(6*`?1)IMv`|G-NPOTYPdmwgdT~ZSm9cyvXCk%SJqLQs|lUmKyA(r?h|5lq1YtN=w;;h%HC&I73e4pZ& z`F?s?Ld|l)@{7R%**nYHsVC6gd}zGM_M~%{+9|!UYn$Fk+a0 z*O;*V)0l`+QEo>tZ$%57y7OdZe~iAmONV_$)hyiSX9b!M{Uw1X+0_lrk1MhX^D7G@ ze7+6NkQ(AS!1tu`V#QYZN}H-13DS(_Dew#r)LfvT=Xsi40^*)a3Y1P??a!g<0_JNWCXi`rM7q0GY+oB>T7ewEw9 zRl8CROjXR*y?8F;77*cxG5l*6Px*%tzV!PxWssm!`GqdClgSuu_3ihwJ7x;baV96d zytp1S?x)j_0h=XGj!NOU8JmF_}R;^w-l>b;{P|>v6w^pECVR%|DQqw$r zVLi9aH_csXCg-f#YkG3|QuMX5@Gp92bb3YT2+?Q2In3HGWnnTG;8vg4a?Nh)mO-EZ zb147VxgKYjfqYPWBb}3vh1}qD@WPZILL|oix z%{;kY*l)+>0|cK7wdyh>7s`$6KxQUCTlD>vr3?YD?<@LK-o`v)-X03HQI%Lc5pgMSq!f>QC+@xken{xXmA8!$^a?vy!E8++)+>88o3&`G(R3)#vM9rC z5iK8DU1}=1IEf=erBsa_l~ju$wCR?WEJW<>p_PanLf{Xd#7$0RM`Zw4f1>w ziOS?Bo-|_KPj~nT074e@AU5HlZB%4TU0P|tytd&NPzP_R+=N!kdMP9ze1r@H6(5iN z{IS`xwQA+gHrB!uGK!qI^0|BJC?9MU#fM+y*j};xE?5&|eQ|sAR$rpn;dS2AhY)<5 z%OJZYO|YvAvaV=X-?aJ?~s#cx^tQUb&V2KyO`fl8T|blX^n3YIuIzMqQZqiC2_DeU-dy@#RAmL54*K zzaOAeNfFzH1V;Zl)#(ZA>}8wI2?xm;&E`cnj@lAaxKxXJpNn;<$2L|q;)ovum1e8# z9^*?V`C_fL7w=>R(>cxGSMH4j5zVd2bwjbjV#SsAOVTphTt{ zmSF6qgxIlhY4vr?Tk5|1;+k->XwW*h6i4N|06zxjkcU-d^&ram2qkF;*XCIt+)oHrz0fnn6>sGDuMd>^=F;N6SDRy zS3HXk^?6wL!74h@7X0ydubB1;H5$RT+#XySa2qJpXvp&Wys;9-!GR1-hMZ(P(j+ju zOnGx|r^LE9rd&(vq_w?w)2!T@7gv?K2Rqb{H5+&@sU49ORz|uND;qmn(*?mA)n97(emj zXuV%cC!1;JtEO0!qa!|btGYJ|zWKs1m#xhs}iti3_+d(2p{aSz~KpvQ2*E(NAqLhCpr-0 zt*lRawB5xlpxU;!lnBu!ks1qUZ_~lKgZN@0eDuZ%;@Nm3-Qpj&FRwB)S8|DasFPQ3htmcHkW#r5GwPOO z)^E?*y5=sFRz$O=a6cfKvD;YQ=S5Hb5%~ncCqm3)X90G`na**Z=S6podUqwC%J-#HL zNGY1Z%_f<_q**U5$Pk<7&u34I^8-mQ6n6(Fo0ChBj*U;2+_;6ij#NBu_6cce+(g?n z8Yl&SP7D3%YSNB3XQxeBK1F z*fH%p2H}|30geoZFJ{jV6YD8j=LmQiaxLa zk>=~f(yYkEbWc09*;SR~qTi|@kY;jb&D{3tT@M&#cF#VgmrvK%?Oh1ED#R<_{Q9KS3WwVHB$yr$z3_HE1;^l>l zK3ZpvMB8bw4+#iJIBmumTwQ@&nwitr5|8Z*ug$0X}FRY9jH_cb{bGVO2}~ zaoIQ`lOCDH6G2hE@mN>igk~;R>j;QIVc|1 zT(jGE-9I05MF4Z_unj_^n!(9!lN=<8TrNmFA@DqWGV{BtZM-Hqp?$)%<-pYs4Lcqq z?zarw%#__!(Zz3P>_<1GFEl#VY;-|xXCEeHF{TI5Vk-NflZ$(?BdoXTS$Hj?(8-RaPZ`zy`!Js&Bw8g#zY6^zSj47^P0jSg;qYM9&NK!P6l9s>h%7=J8auJ1$>W z;sxt<`(%yoPs-JU$>G5@VyOZB#idbR4Wy+L;t4ou*YBRDi(rr*V>BaSAQs(i8 zjVTmDsaJeZ^U$NsA2+kog&)5ij$J7BJ%(ZaAhb2F-BrFL_+TeSW_~_qpGNBb`$yCC z#&c5wVi8)YG~On?m7mj&ce$P{MU2!nIGi6nqE6|R@#-QNemefs&sNf-HN{k`XEitO zQAL0#G?mDvYs9`fDOn}T8P|#n74tkhgl(jJzL+dW{l7>)|-C&AgNrFIa6lIAt;hU%t#6L@xZo12UY6f;;!~UMb?pk1Z+A_ z_fd=TBE_FhR#f`S#~icsN=^@64fF5d7sY?36>}+WFL!u7eEP~U!!rhF2-XAL2R_03 zTUhmRE{?u8T>8>prP3@k}ES;g=0^`#+%uy}xyl#&<#!K+jvt z&-k0n-OA?-iP^0iX5VA49Jr<-zxK&7>4I*^+QLWDPE!ZEc$2CRdj_c!VzOd(%L2Qy zCdy9Pc$Q$FBy18}DD>pI6+gUH(^8ZlQC5}R={7U=LCywIPg|ygsG|kP&lzw|T3B;~ zRg2tBa4;C;9O7Yo+OWFNs#s~)eVzQpztp^Id(fM$V?_0UXtdDM=&h3^WoI>7>u-Zk zt#0>t-%Gs39fjYx(V=~L-b>>_t)25*8OW$8^N7FcH|0ilNAojjtGJ${_xsM~pLp)` z()j+`I5`vJU&IZvEhToHFef|v+))1Gm)P2p5 z^DBg5H9Ins+N|}NNR%LXGFDu6Wp(OnFoL^-hy4u`A_KBw& zS+E!kp|SZ8OF@`^T0NE1UZ7$5Y5Bb>WQH#yG)DfQxWJkBC&gb~yhcB7Ef`>NKIxW1 z9%G>qq`@dngM5}A^x|^>6@_`=kK&WCc{)m-(XF)OPV~Nv5&u4cp*g7njmy_cyHk^!TB_x5xYsWD5QkxgjjZ z(5hM{^oA9Cg>zN2*b|1bmVs-mDt+w?IgUCM%}+ln14awn5OM`K?SyL(dQs#3)fQxA zd78gHD*t%lelxWCa!~Hr(d0tCXlae}RDMPY+WFQ&Cpig^Td=TX#AlB=QC#R|wI2B( z&QI_IY_vCHGXZ3&;33Iv?*#J$M5mv~oXc{LUtj8N@y#43GUHEWIyfA)EG-bUK>#e%4Pefy4d9LByGj$ehHbQB1>z$@)zX zWy82P0T!(TP50K|jMS%KZ}$NWj9|4G3Syu_Ubk^#g6^mC)gyMUs2MO<=;5n*`oG)Y z>|G`wDeK^GWt^l^K=KMG3CyjW6HomdT23;kcv)8d%|>SMQZ(NSIN7Y#5pnGqq+r}3 z^z-|?!Je`3(jTXtg-j8;VEJ^L^?EAQA7}{uFgi;2oj+ya`PHLmj+gX%X5rONv-5{A zn`W-h*(Zv<>KVv5bT0EpeCdvm^(noVCag*N|qo-p?mhf>GE7^Y=*LIZnsdUc!hI5}~DAATP>!v8NGLAIIQ&Zmd z$i@hHR8SzqA-AEHi0yIxjJrRe)0kUm{mhql8>M(nm{x@z2uZ`z@6F5A)WJ{*7MDXQSBOX@8UV&LB8P`p`zz2^opxI)FO zyc19P?z-@LS{~<$WW>@_w2CfWzo8GKImrONsV{4JmW5x5ibx#~eE!g_I`)S`bU;X}pnlsd&|fWLm#sau%hnzQ zwn|>)>M2z!S?=oM6SHQHnr$L}^YeIbcMi`A$<4*nbVXvLVQhtr!ibq4 zB==pX!Sv7PrQ2n4ijyu+Jd)btFr$ubtJqzFmaS=m$NZbi#KT>&fcK)UGJ76?X$tO6 z6Zy|+-VA#hymFVh>PL-x8G0*G~@b&OFSc6Rxh#ZlBajkh)c#cgQjM%@tAH;Y zcfb7ee{q6Mpiq8i*Q?K>`}@EC&Zkk1}mX(zjq*WG|wXUop zwOj*FOct|XhN^t_&TojmKL^$6b+8M4LtG)rD__`@WBsLVLaDo)M6wJQG_ft7yt`_D ze`+6f{0EhMdcxH&CL#6$jJ!uNHOr6uTef^_wJgBc6d^Ht9zUfAIgd%V`#wNjy3l^x zYXToE&VsSRX3^{s^m+RJXEaEoT*TEJ|FC1=b{;;6!rjWnC#r)^(WxEDuTY)MF`j$g z9UrYCL*w-VM%sEW1lv-ZLfC*2*#0>JMUKT=iStFYHmjPcZ)VfLNXD1woT*D^+E{-V zBrxQXu)f|(0eYvg9((R5mVtCmUC{!+PJdSt`Z|`(jogQ?Tc#8NOiz&dR)g-DdJV3Gthf736p=0b%uem^*6YeGZ7Qw8;0VJOn!Ka@em zhq^Rx@RR)T{Y9IN4cyxTEy7IWlQ*Eqt*(EZG-%+?>-tKOG-r%Hf+>Qn?a?F^HrAVc zs#T`M@%2gpP-)Ao7Y~+pzM=?ZKmM|?K!-iVFwsW`Yr0zbU|XFLY{NFs78c5O&XiD0 z16`X|NgfpkI~Cg(LjDklGz&D<1QyYkR-Mfzo{J*oYhS*^HfW|;?K1R;9thgDX^)^) zidpH7VFq9(w&Yu?)TK;9QHn=C;okah?#CmfqN=fK%vzR`__?NM)gq@y!NK|K!rO^Z zfeZ$RLylvYjMr!7Sk@9({%xN{!pXt>(n5U78HLW zq-{>hsL?5IVlIc?DUd0?H}?}xjq6N_|6y6Gkx481J(@jB*S^-CUXW>B&L!m=>}X$P zp8_%YxGioH6L$6Wrz78w=OU(y4U!5qjPr{XGUup9-Xri%yhn!U2!w)fGJ95N`pnNJ zN%QFo;@kzr?rS1c3ip#n-H77@VAWzBu39o16$+Fgb(oGu-_R^*&kOl+LR)G?Ijh8Xo;eQDDE8S61m|~0x%dpI8m~)Io z!Xe}U0)a8bRG)yqpyUScQCFzonN!gDVFfb^%qsT*%L3e|Qa<#<)Al=O;CH1DdLc9h zXh>O+vS>l2Ex`f`d4uYXb%kBd)AXN(_5?Bc0mv} z0&?c!EwmlI2B=A=j?z0)LQw@#q91I2Jy?KBXI+5KCRa8f7~3Ra{(ZDE=@wDNc_G~e z*)3dtkey8!g zic44vKTb%JAfqabU~QNM0_Sf#@Tp1%D@cK*u&MVamENkrHMNPr4kemq6po3{&Ka`= z=3jK8F0DQH$7cHrgw=DsLQNl{-mAc(pxY>H%e-DD zckJ4?sW+f%;ve?(bxDrGw8+PZbUfxHmR&E0gVPi`U)c>z>YAqIbi&(` z>y~GGzDe!P&#S#w!f_<@LOJ~WoF#nzJ4D)wE1^9D>D=XE=JIg&*eIM08 zVn(k1_JKRThpb;Bb#pJ>A8tiQ#{N%in*- zcysq>+5h|5zqk7TL;@&?|7i)>L*4(|IQn}~!T&2FnKQ6l2xwZ}0;uCIffa!7Z|-(` zlv?ISiVF=%$#&F|0bNm$q(sRL=~lBuV+XW?_8eULQ7VcI1X3wGdV;1DbN9vrepv2f z+@t^S!X)a_V9yztEP6B^fX{(ehFx6Qxd-m-qyCu70Ts8xUCQ%>wHXvyG8dRFrd_zY z3$PRagXzydg=AXuL{+ zKcnO@v{>S({jIXa_VP$cBGPR=58w&Y!9U#Wc4`OhT_5FwmZ<$&3W}5%i@!!hQ>-_@ z*ye}edvpPiaN%_ls{Dn5Fn`+^IGe>;r!W-Lq?-61LBCQ@VHd+Rn&cn5J+GOE8l+_% z8qV&0H6seQ$vy164X6>N(*J;$bA(~nf)NXu*P-)rB89sc^-}R4Bbcjr@p{hbwamF( z3x?-f90D-^gRwVusRxU_z9T3@hbG1himO{vB6aZN2PoGp{R;kYtWq9P`3V86vLSra z((%S@7#LhlHp*d=Ym{sT@I$6Q0h78Ru*fTy@eZvyPw z@`p0Cf(khV&p;1Pgj^qbA;!b{p0eb0P(Q%I8MJ`60se#|p~$eSG6WU*yb%=q{&u*> zzfp;on3#G5V4HY0gHzzsUa+)IU9a|_oc(m4@7EQ4hLQXY*uhZDKX%KqJqfJcI-81{ z+3=GpD9db9d`Pqkko!|0VRVNFo|%1QpVv;bGo~qZb)NY80Y;pg^=ymL+!eIcUO@vM zCJR*%G9Zt94Pb<)N*Dopd_IOS3D9U_7-34**OJQ5*ieq0aF>2@uaA9)1t1ASh!LeT zI}SxUXxb4kPJT#{8y6g%sjQ4arWZ}Kc)LbQJC7rZCsm`MqLDzYFSh$Zm!zdvtkkX$EXQ-9RZP}`E? z-u>R3dtP?8yKLBXUCR+(lMe%xETo1pgW`yc|epN+~7m&|Pd!pS6$DAg)8i6im*fARFeUsHMk z5GR-bmY|s$n)sRlzsFLlq&WQJ0XOA}|S6!t~ z@27V{kIoK;d{4P0ucevrf$m7jJAmU}lx0;owzh3w+2oEvToAo0Oyl-nNs z)=vlJ)~#q*E%U5A|H(P0fSv87tYYjgLvtRAV;6-FY&w_}=L*6OrrtCfQKt5KW%^b6 zz;B@8sY*1x)=s}bfwNHnbUr~gOL!~%qqPix5KZZc?$OG7&wieSCeF^fX~s&p zkw5wyG4YJ<0p?Ftq>cyyfXjq9Qz9w|Gh`b~YGMGtnRhp9^D}+Db)LC2w0@5{QCVgY zQnifGInSrihn~4mJ*{Zgbejd5_!uq-I~H8y&%^c@@9uW$5D}OnQsdCPK8=_Cm*M0K{}EbsrVGFt;cxjA zWT4!mcGR*Kr}iqak@_iZ=scOTz<7&?K{8bApZ3)6^IcrsvU3Qk^TzYv$zpr0g>(Pv z1pu&Mw8|x5nT>T)xy4}h*t#uYYe_(lOYi2t|LO;)4AH;8V;PZuorHqRm`rc$hTNMv ze1{0Tt?`u#`35#v7wciG5od82YNiodB)&)K)y{$l;rx2KbBBbwWv2g6=)0?yluqkC zmTVu@tl%Zl5L*+IG9jp0i-Xz4PWjpQM|SIXK%(TYreCF)CF?znLM&eIxmOxWq7X*P ze1;;O*=rR*lO1u)P`dy;{rLz40yku?0jAsigA%3q_&kYSDpn-P&-Z_L^ zJ_GZ&ILcoFAzfMy8Q^Xu>F@X7<`+SufIRr1!)0jeC7#m8Yn$kg!Gckk^8E)VYVMY0 zZY^!`3&X-?z!%={irQ;oz)dw?50iI04cubcv#bYpt8={pmAe~I{dIO=Jx=ZZEOWPN z=YK!@%M1FSNdBiKf7xi2|81QASB*jz1X@iwfhK#et{4<)9>LrV?n>Qb`ua~oE019) zAAN#^O=l{7HwcBC0Fs)y8%i-g`wb7B(o>~c6@rb7n3zUzVD1@mgK%uYglF4-c%d&V zhIKHpe%RE{F%m`67Zu%&$SUmhK#x2u06jr>LH%Hz1f=nqV!2miL@S6Fdr5fjCWHTa zDBIcWlEwc3b2TO$i1v$HmD{Aj!Mpn2B!dq%0kO05lJ}p;f|!BaAHKf=6tqen+6A6j z*3EqdGSBgR$%{^XUc{!UVi3o6H~vpiei^9QO{2DR`JcZ9QH^+;7cf^?EX2+p+6}S( z8OwGMr9~cn1t@w_qH(LvlSCK@UcBT&{C0wZGe!_<0<+|BL>SyeNP->+TsI#$W@^ZR z&Oq_`7fRMa+Q2#nz8AF>vu0(Wm{5UHCs)}R2&4!VW`!#l#R#EN`2jxv94f5@mVX`r(NgMNVyE>xvb8Cx~9PE{h zU+5?Ykya3i3th+Ub*T421^LeDAM$cDDUtI`vp$BYL4=*P{Zg5mi57=Q> z8-zo08sG^^IWJIy`vu?!@0CE{uazyUy#(R0BR`<@1Zy*#5zJ7aLE$%NcpsIvYKlJ8 z%-L#QA@d&92=7A~$5L$l{Mgfk$I19P6JktF%~1|F=9hbz2&f>xUO0+pV94cbsr%sy z5_VPnjRYa)8@u8 z-Z3?k0Vw~<9beCq5xbz^(${qWG+q7!8gfHVBv=nT^Iy?h{Je2J}g4DBgH!aH;zJBYu_U1N6( zjE0%MQmO5T)d78g{xvJRlT_m8jZ?X14qtkA1ke`+)qMzNu2K#5MTvyWT=zKomdmPq z5LI_e!(6Z+ujlOCohR;p3G;#FdYlM&wHV4UFCg?R$nisgHL}R!DjjhIhq# z+*cdXHxm~;?tDsZhh4la4&@SYY)HQEcL2X-wld}9_7r@gu$n2T`RZ&{}=$dHMknc*X^O67Wsb|?zxlLRe+jxSXTgTe_x$S0?1nB->kba+O zn`xct9A!GKap-TN0J@EYEc${=rqQ=DnyjI0+1@#qo}kcJ{Vy&(!p_HRt%S zV>1kYt0E_m!8ZcBQQUKMyI9Q^~<{&gD><5uV?yIqV$Bm6T;T!ePngsmb` z@sc~oFzNJ;fvt2PV`M01XaZ9^c!7)B|E34R*SA*ff9;b`)r8?QMtC~+^&a&Lp1T{gRAT*nv@KcQ+_D&*C zZM*%Dec~sM!GOfTG21Y@8p`WT>=e1CzeVVx+`k37Ld`U6}F!eSP{p!-@{|+2u_?G zOT&ibGy$# zB4}g(>S5)_1OFbjN*Hygf{UY^f3Jy;YAFY1*qVfAWv-i+(MiDqE-GMnknon;Yxp4V zMPZN^fVDC9g(g<7P(cd5eb8!3^c?6Two+zf4zd0+YL!zFDCkK3j1Dd^+|kw5d#GSy zcj(1AOYkdn`WlvgruO!@G-|KYxt`xHI*t*Z0K!5^P?^_BWKvX z2SSRY?8W^ z1Ffj2NOYdT*6W*gJi78Q>2CvbD)ec_&&ugOg-WaX5XNw)usMSA-Nma4newh&PgM}q zrQPZeG!K=Hc*YfatgckNJaO>YAL$s@Q?kqL;_Vz|@1+H28C!Nawq2x8{9XKMy+c$Z z^+Kxr%nXFq@*s+!%|F;Q&MnVU*kDDgL%!#zFBoS*fdn~{_uZAMoV=D+28hGng} zxy&muF%h&yf=ls+=BI~)t@WWqQYlxN3ULOeSpDD9LhMVr;54P?6lK@C7{4{RbsH8s zqd07r*}4A9E`P5w-pW?y!LRo61-4;|Ckf9-e2%b)fjP?NAD}`A!Jg;;*CdiYyJV0G z${Q$tNR|rO}3u$3&=&d#>DLIv{&2m z>XvPartF||m-p66k=l*A^KR1kr|vDd zaM^rnL5kXI{RFy`

7R$5BH4xBUAr0Fp_Ztg}9102<`?y^%p$lcfq4Bm+MplpoXp z%)lG1W)_Na=}(%f`qwf3RHYJRn9MHal~oUXLa|TQ*;nQqJP9>ZBtu=r3StP#LDnX&cZLVoVP>JTRIb>d-=#$G9(_X1T=uk-2a-&-?<0nF&`Q}b(~ps%DiEuiDf zxDBrVE2saTuuqQ$%tb_{F!dVX$!Uw2j<%Lbg&uLfKBa2vc*ozW%5u2?@Q1W^aLAjh6yXSvDv7KBch63Bh8b4#t0MZ zT}RLO<}Y7fp_DZdKXo4*IFb#~HIm}&_Mxn-9xOx>ygHN0`nOg)XK>Nvs&V$SFXkOe z6p@L$FrgJx^_cM#tilZeS*yF-Np`?WmD-Eji&MKmfl4Z)V7_K6$r)?HA9~D*!lGP> z>yUOtgy+3r&1B6M;jJ2%@ZR}o_zAtbq>R{F$RwV}n9_G@Fc4f%kjtEr0Un!e3rYAI zQrV4zBX75^`hTiBeBRJ_IMK~jX*sZQ=GU|u z7OZb_@pCx%lcqFzymqP<8tsa|&F8!9%*(zoZ78hVQI+$yLOTp7+ZcdL!dn&F^6KC} znxmz!J78;y(T-Z*2=`0f{hW)4<8w9J0p94oL!au7m=z}!D7QM7eiJGi{SjH`T(&oAYVRrZJ*Rbm%*y;MDcU84XkjH=%?3RJ%ug-2#A zYjeo5M+;c1`m7E~iMepG_zHH@FuYuRxlhNvqUEsYO8IXen?MuEHj^ifnTC~FygzXX zX+{$tZ7K^-Rz~}wBe~@JqJxN(+A6D3%GX-kX%|ib9^}e*xx)ox3kq@-J`u=+V;sJV zvG2Ux!OdW|q^KyM4NiF<6X)?@y^&)JJ0FxU|Cp|VSBmaLA)UV~`J<%KrT0)b(JSAS ztHe1kwkj=1Qq7g=(DfCXle1Jzs&HVSvpIh~1F++jX)zt-=na!TST?5XQclY{h^tT~Uf~KF0YUCXo_}T%Ps&cfg zwAl3aTB*eB;2v*`x_lN;xO3@SEV*2v!&wgLao7{(-Qr?Q}Nb_Gedf+UC+tOuA2Ul)p^1DedBz|N}ot1p`fB?dWi4GjE$M$NqDmN z(1N62cCbM>3ps{J=$bH(<%4m=Ar{d)eu9s#M2;j61}>#haN4gqB;UhTAJnvuvU()L zsVziUvs;(8Q>)M3SkNt7n+wc)Q5b1}+1XzIph(-elO6aNB|KR!Iiywm+?wQD>s&L% zGVP++*N~#&mALcaoPMp#y8(2?s*K9wy0X%DU*Cx2R&fRTk88C9v`52*DJJGm7fvGP z$1^xndJr?3UL(bq*1Dz~wm*0?J+O)mea4z$f8@%gLjm3shii=qw}Uu2u|KD7ER2lK zyYMMw+ok;2(Q1%0Ij+`wY54?oFDR7NNwD*uX9j1D#h$YURWlNIrSql$fnNcX^jtw48V<*1j1cdg;w zG5l<{@4(%KyZ*$|)$KqjuVJlM<^2 zuUnf0V#6z?N8tB2uGQ0X6ne~gxe7=#22H(tVo2WdGW($~DVccOFwcd|%Vbi!%2T$p za9>@{c|LR@9WBC8Bu9byHy^;iRbT2|{lv46VYq|+m9Al|Lo|%b_Y;2g;79x>tDQl= zs7m#LykIhq{139j)(*NaIq9Wm>^JyMW%CwF@>XVA!Q7l;if6-^`y9#b+lH&4X%J*= z8Bv2TJEr}DbbiMlecOAfhxazEf9~4(gTx7Q-!*d=3*{$QRnb3?pi&xo5nN9F5pt`5 z&+-QP%zlM?a&`f>mvC+1O(;T#PCmQWx#+56el zYQ2OxtZQUp@$2b)vnOsjjvmLKdAub~<<|(DKRJ{4bo*6tvIV0RdQBjERJrKP-8Ewb z3BrhRu+}&HHgZSmPH3COY;nJUvDv!>aoM7{&OkDnSU@Z9nOi%Hy`NY)oO@^^Lg|qs z>-YJ%rrg}ShUD}#dc3q-Vyon!%fp?O56NdJBwf3BrWpAfxUsHeqo&+w;|9x8u3Fsp=5>p)&5Jvb%_G$LWd(0nxr@5gU1fsDOUb;3^TdJ*8tLYz(I!ls zwfQ?dc?nPC<3|1ud*2;S6A49;L?OvaC?nZ2l3iIDha=lL_Kss@g-{9EWRG*4 zjAQRg$X>?|+2`1M{+?5xQTqJ8fBydXUEhCPU03IMp8I~^ulKy)W5a!?)fit7-hEY``QEzOCs#ysF2F|7oDtbu;YflVgHQCzP(!hT8oN5%b9z^ zNcp0k;23VRgxTmwodO&CyPW(P?Gy$jbSP-?`*}AlFe?EBZ$2!~y6J|F z`|g{dD5GL_uieN=L@%A!0l}D5zWq*2yS*I4tp_% zV+AEQ(xWUkE~3gn#%v9FlvJp~(Z(=@=+TpshRT(o;d!na)0slq6FxA2ENDgTFiKP^ zG}fD5Il6(21S6EkZ!J^;3f$@Y-oN{yij;2dy{$`U$znnmu1phXjx>(NEbY#N)%u$B zr=#_S;n#X{7qIRgEmlwJZ)FXnhLy6dM|~-IUJ_->GX-47KZfVisAFu>UrV6TR6GW#v@m znR%4@B3Q?-mp6~nIa^cFy_{IeTsVP17n~hl`Yq$@O7Dk_REf6zS$Lxco6;VpxJIFT znvG)cqr|w*w;aCSgvgF@Qwe>~oh{F)>TmtNB?HYhwreLBSC>=|C;h;=Ruu%gVwBEX z;Dg>A1iUyF+6Ia&(c5rvSvUx1-P`v)0YU(?>UGy{3=R-tXX#iVa@|wQQXpq?&QRU9 zDsR>t;k8-#8|%q&*hs7gw%+E*{_z(C4T}01HBuc}Gh?`g%pcY$eng{3^f**Pv+QeN zOs+>3iQ=W_Mbj%5EnXK6%ggg`7sd+dnq-`GMwk?>56tuCeM|4MtkpzS*bUs4f2Z!U zL?uzmtGzh~1tv>(ztNhU%(mH_%npp$>VIRV!>V9XykxRG&*?SoyvFBau%N8L{~Gg# zOiQ@clRm1$QTQa<$$&zlWpgN-F_cX;s(ICBvo#6nM6)Zg%CA=RvM+co43W572VHc~ z8moqPedxGnRG(DY^4yqK2%Oy1)ALE4Yj*g720I)aWV#T>2Y3wS{W5T4g}aOmr*ZC$?xLf=;jcKEdmWOD<&O+ z7g3=$7_<^Lq8H~>uO!)lBYZ|S_BMK(+80;Awe3ownTNp88IoR70P3p%ZpHjjiXkQ{Fh$M2NGyo=46g8s?sn(XTg# zEK|q}OXzW{dLwT4X;p8QS!WU*M2y~_%%h$T+<&)ma({Q3&NNx7Hu2*}GD027 ztB{h98l@2=m`)9a+OUk4aeqSW6-~MlJ$8a(LeHi6)ZyoDlT6x1z5@3#3RT_+hs5cV zsZsLv`kC=K!D&0pR8iL1&J_crY9^? zcMr3vT_sJNz&C&NAZ4meWd*9CE6-zR+E{FL2eMETmwP~H8oL8F39TVk-p({>tsf;C zUj~7kr9MfVmH`+c6+`N9o|khy;$7F371Ta%CR~Lm2CCiIdhMX`dc{%B#1L!q;(igrvAwr+AWE5uFT!mWSDWj`9lHeO4HzctscsK zMw`3*+J!nZ7Or)3j5StW`vfU~*kEp2CPFySpL)hs=NynkeL&%rD16zYkYLYNLVhHZ zl{H(f-;1j-V~->xX<0PpT*tF#=TOr0o9E4y0T{<>b+)krT9*AcEjv!gzZ3Ds$u*((MkuFIad%s)W z={^vITfg;iyRzBqsE0~Q7Ev85AeP(c3m+BHck~vSe6d11;B*uEyh>*aDZJgK9Vq0q zp!tZta<@52<%8;x;r+FfX}*QXe!Wv>HMU+j)_VtU6>XF^8@%dQ)`eAS$(=BA$pU~H zfa=SN!~xnd^>^)f{$WXPNn&Nq-spT_yv|Y=feOX@i>(gP4C?f$yUsP_8>C}Zy#Rvg z(O)c|XH&pu4&@OqHW`Z1#ZnJ<_nkp{!tB}pkBsUY9xu^0tPSF>A-BpW1lqIPCXg4^ zl|5N)%FH6$YZl8EU%{PMBa$?RCwAaX93|V@AKDL}ZtjFCg|7k@_ZoN?;iu?5aC_*^ zGaiwAfLGo9#+a)#OEt|^0$~R!_rTL*@Ma%jE)Jb)?AP`~V+Ed|XIn`5sp{Frh9P^f z4xN&spTBIO7nD|*lW~jht=DZMXEy{-K5e~5&vW=-qgL6NM0r*2?iH{0q-8~9HgMBP zFmxSrt)u(|L4{M{HSoRKFr+fbnIBBfa~(2+>METYK5g!7+S-*@;0FD4&_=9ykaQH- zcXs!7_uBBG=bOUJ#j>njQOj2MPcy86k{f~NWt4B+kbAYez_cdo7> zoLoF8SI?!@kx1yA8dQ`+lDNH8ZpGCb4H!8g6>-eVP6~7|mGb z!mC(mdb31QwH9gr!B?^cM2L-QB6T7F#D(y0;=+OX+$rpRL3jcM8RN3zb$=?px!7j} zx-}Bxa~0)^hljMi#V?(1=APNLLoIEuCPegESzmaLh5w|DK)~)=zC;fL*8n$IysVdR zKi!nRA3JF%-@eXph@@33KEVkwr6$rWewE9=rZ0>~%!a0lxUowKw&&ys`PygQd7NwC zCfYzEN-1$GD=A$hm)~JYCt7bIA~!40`?JweC$SkPkEpAlOG?rMWkko^`#xB)Wv<_3 zdH2j*ae%6M)V2d_p8y-gjKl7X&otp_Osf#}#!Zm3V=G`x&Dpy$5r_mve&(9FFUe(^ zxyN11CgxC*mOiM{fh8#N>&V~l(h=O%Y{`X_IcVbLNbW|Q%3wQgreZiJD^f*~GW*Q- z2jpD4TF7K}G}1oSQ6W9%T-sm2=xyC$t?^s~jS*>^;F5@`BEHLhmeA2x;7X&LL0)T! z;4X7hh&Hb%(pKvoYDql0o{8+xEIPF{poMUD*_~=okA>$u&o_z>p;gxxUe?ryL&a;i zkR4mi@$2r&_cN9ja`qUV433&&V^0Z}#JC%X){Mb>^QDn}c99iu#ck;0$q&6mdIUOL zy_)M{{h~xV^DWI1d-^21sj{W&(e+1O$o+)9c`Imqbzpxbyi$;aV5sMR(c8rCo zap(?it8ULn4qe*l@g#(6TtBB2i-g=88#ZD1jMmWpTWo!~=p#yY4z;G|jvEsp5E*>+o9(g=iiIr%m^5CWbQM_K zl^J`l!}CCIk1NHPZU}qY?@9f9H0DtJu zU4^)us0tB(1L!&0-}Kzi9bNU7BnAjXFS+zS{5r6lQ@=0guOD>~0P2#sqhgjB*mNYI z82&ZyfQcGEf8;0$*boHk+`A8e<(L2#)4vjd`F~mth85ea5mKL9}l6U+67l3_>( z=C2_yVtXm}2e|gy7@H;Q`L6wqq|<4H+~OvxE?>mMb5Fti7j8iUQ-p_AtIqN`+3shsm=l#&ZC`t)=6)w2gr*Bn%kh7+ z!wHc7H@}n4wl<>9;n($`7gr7sJu`1(`egNd2BnIvd^i&&ONe2`Iy~|Hf<)CbsIAdk zeKU=>{jxcN*t)uVE}wEF%5)jB-Uhuell|ulY_>h(@Wl-|?8J0? zQW7ET2VMIwqKJ&R`q5nUnj{RRLm=l=2qM5jnNI&KMpJH1{JZlox|SZTyd@$=~(Ea*b>%UzR^kxPd^d*j*Sa9I=PuhZhmQPWP!jRQGz(z+?sqDf&>%GlUaE&`D@ zt}!j`FXSbbbwKdt35*C9w+w5E;<5%ZWvmZ&H{|>6=t~|Z+7K-Q#WX*m#-8b2e4kSi z8ov=HvN(H@M<09f=95>IeRjqAL%aRX)kQbehtToQKY7ht1KI$s1AR~&8B3tc#%{cz zEHL7#`3Q)MjhJ+q2Kzo~Vl=;uR=PQ?rjBvE7%FZeKl-7m ze*F0^Rr~zIXARB=OQ;6&rttb=sp2q;r+ijWKy&yG?tPy~DQk)%5~f8NJueo6jCfnI zwZfnP7UNsct)v5YE)MAwP!~|6te|zeGXooFt~kc_kiX^Wcja2C4`|Cs^i?Y(gw#L!G^GsP>#kMaD~KQNF)4z|~iB1pY>3 zUoI9Mso3ll|~bsDQ{+7^3QeLTA1p$84U$ z5nF-K+EH%MI-OJFo|lRm#PD6oB1B5GN*-0~*+{?gOBoP=(@Do^HBE0=AD`sxlE z&bk9Nqyc{j2$|7oD5^E zX|iY%7Y?lVL{Nc$KY6tS2imB2s2X$HbFlNmktxa5CbmMXR7IHyhDIyPl5uh0tnSR- zmPqM+@G0~RMVUx+&BxIIt01D&-7H8C2KvADrobVI;x;K(b(?iQ>Fl8GXxu!5c8AgFd<3=HiXPZ?vInj*d{ z7O^;f=ruX=QEsH8<4%cNi)s0b%a?TjQBn9+CmVwhgjoNRaL)pqy0rDTVhiXejr$(c z@&3FE1Vf40bVX_eBDB6$RvjZAE00AYx&B7x&rbunhOs1=UM1}YlX+520hRdA4fJG~ z%`-Y(Q2nGMs5Ecqz{g845PAjmj{yCF0tGf(jL?{EgP6mJO33t{Q|AG1hnSekk*?qq z`2Yqs=~vJq9jF+zbxlAQ(Pud2C<@s##+};zEWP0h1#sK;I^Sx5jZFfL&KO*{B; zIWHvq48?7rQrhEQ>Dk}b2SF3j5n-)o$rDYaYTF)Cg9Xe7$BpMv4AcF9ZLQBq6$h0*`qwEG#AQhitzx$b=@35r294 z{uScA07^tdm;pu8w%}B?O1m~5>x2^75c}rvJMoa`UE4&E&PG)ytutjkvylvpmkw6- zcE`%=f+;Xn0@7%PvY4KU z<5w#>y2MLf2s;cRZ13qY=r`XucNx{1`{-gqcCr{VL4~Qya!{rQN;7xEb*)m__I@pz z=j1US{R+aJf)&Q$lEn}N6~z#%aHZNiB)^~I2~eA|7BHt07Jvoh=8B+l?X<+z--vv| z2M6k=Md84ce7RN9lU74`sS zh}mBk*{fNxbr#0yLcfwfDry+^Wo z%UA9$JPVhpMP@cE{nROcoACuCUp2{`2a89N!Ge%>7z!=N1c@X3oth_n25jocTd4~o z{r9HV{Q`6Mq#II^yz^fBmvD~RfFe^~oTJD&i1h{!1&sX)uoIvus#%~Sh@CznD3cKT zPLRar{RSN5ykM#aBpm*N#S2==mqF+`^qbeY1n$lN*|-A!n{3vAkxtV}h)Zl3b#Hj5 zlGj^PSw->{t2u8)g4uA~rvLS&S0CQ-u|9*z@x9MfF|!?_x$PGR=69{=^)D_Q%N~6M zau%ca{8yjhrSn_mWZjeKUTH*f0xim{x_8i8@&B?63P2>zC5v%D+O1J&-E03rvNrDS z-khWDH~J19TPs3HIuvlG#>mOu`M45KaUi(Khx~a25epRACr*GA){=b|OATbDt01q`1f44Fz z^*b)Tfr#U*0{)85j_LPPkOcg8$8>ybpcKf(`~`mO$tM7x_c1<(q4(l9*mWk)ZDqGs6zens;}~o^j@swe zXR30rG$e+3sf3)K69M$W*VNRsUTj!5t1pV3aAa@EjbcI-UjJnHPxA9$>CGKCfK;;& zwG!`>!e!S!NS)eUKBZE4jGt80yc!P*jKsRtB3ZP}e z9bvkEDx-c@ADR2&w?GVZ3cpN$_MZ&!p9N?|_kcuAjBjx5|8DQsgZTgA^nA26A^D!4 zLpC&ei)F6>{ol@yJ6IfpDT^E=iW(!`<~G2gSC}&|yj5}uUsG8Cj-=fylCf&{-qcOkM4)|gr+P&UpMf;2Vaf1nWwRm#ZEx6v52kNAH~L| zg+PlY6cYO+@lwHc3g@TLNreS`P5BL%>VJwE{z7m&p#m7v0v$m(d{UBDzq4I5v%uNh z5~1$0o)ugEEH@j$^KBpKQubDG;W&$m_&lb@blNUE8mXh}o7#o^q2i{Z^Mfj4rM9EM z6E~p$^(|$HAY0zlJI$_TAYb1%nogPl9cXfh-v;W>W;N*o#3D4Iq7lF^V_M{;;#`3u zDpBjAW8~|&L-O`Hv50PdafUi^3p>imTL!I?<2X5|Gz!yhnKxrbb$>9qd`wVmDkQ%H ziG-oZCwtOr$%(1^;zDc5pWHT>7(+y&jk@i>PoyetA)n zfgEMk>NOrtY7MI-fq|9ik?cG!f=t0!@M|Y`h<;6-yOoM@yR8jHd~Kqp06m2>FH`j|HBfkUWv)eNPmTF>vCq&} zM;Q`G*7m(s)3tQ3`y8vjnT7@*thtB7?*;K69o>ugKxL<~){)fQ1J1$Bg7whVb-LVa zr`SU3yj~*b(oDY&6`;bFeDkHn=6soMp!A3%)jCz4_Z6>Q=_EEVs`uKy z6>Ew?r*fkO^nR3z$Ar^W0M?*SXm^Yzwph}zjNXj*!)+{2SE%-cnB9f7X z1tlGW4BOztCXkiL_Zy&((cD||GTSReZB+j=`$*0my=$6pKo#in;F}XHtKJ=Fj|onM za*8a5SdoXDkJLjZkzm{a^S0YDA^Xiw?$*gTBoX;u@LTtufF^@`a!EHJ931>{IPdBIlAe`aIw59uYgR zL0~O+Uqr3bG2`IvX&>sa>alqdb)Ec0q`FoN)k~yk^r6x_%}Id3FR$s2@MH*9n1e(J zWa|eH?m?ozL?{XV*x6sk6R^n(F}1vMqc-%y88ny_D2X!dowS=FOhvk2h?XP!n$49P z&6mmi05uUiZyCpHQUJGI>9`>3ajYZw37<{Ls{riozJ1eSE#M;-fg1bF-?-Ey( zH{TDd^##}3&GZ~o9tu&CNRY_zgNVUydi7b<%5zfev^DaFaMBQLtLYO3#G>n;J>ByO zCrGiixk6kz>?z=LJ_)z4RIXUF8%7LnH zJnB5g=g$u1w_2iWFShhu7;vM)tcU^_xVL&4KcU?=1++!0PLLHYzMEAD>!vP6YJ&-tMR_lsK8ih11yKm`>2|be9}rc}NNp>1dT@ zW+QZ7@beAiz7JHEv!Crd##2Qup!Dmgh9}0%MJ=b2Ha)7yzg{pHEg&>a;Zz2yS(G~s zf2m~0t52WJ`^guG(4UiqUW4y^kB?5MSGI|*On@5V*3B#}IYAX1!r0?;Rz^?1%>kOw zzLGc31lkmA=>%F^1l5LhLFkVy+MVs;JkS6~6)4!I#2`5Hq@&OM7wXupV~~0~f^XMv z;FWOHISg>lX^6?lg(e3H2A>2GKAq!as~|L`rf_y7{NBo~d+?HGflQ)Z_}M^@6JT(i z{||%9RMrQvqVRU^#^^UDR7hhY=P~<_T@3G~7(M@AFXdms3XuH&m6wt{a(>(M>xI3^ zrMbiEJ;xb~dD?QP^++^H&WJGH*}w5q~M!Tri*JcGQwhWDf&-TTXvPR=6qOnPXd3*Nuq2j5;w z$;E)+W-Ys}y7l1n!aRQv2Y{4}?8q50+9p@9e?ottvE5 z8MlU?1on0c6hpX4-R@yjQn_kW_%13TKNBnglU;bI--rEh<%b4;f_JT(nE&$fAF6}0 zLGB;i0D;R|Db-M-+qK(1nw|yc_75>Q04mNJLdJ&n;iiRq6b8i?%4Ha@-cmgO4aiL3$-p5s}|OODyi59vIP#_hu0=j-wzRwy5<9n6^B_yp)h^0#Z&I8A$(*H3TbMO#-~DL+r*lm0^7NB7oFCjxTe@`SdI`LThYD`b?Dkbl zJ8MfR-g03cM;slr-7?0etKo#$nCl!kRet?}N$AY!v(Fr}ZBvHlsF<5{H@i!-?^t)8 zSr{lzZ55G=HZ7#}n%*tm6Ij~q=A7%&aOY;^o{DzZ$SVpak7>~Slx=w*A%RW}xj4J9 zo6uz1(=%|Xk?-B&?UBmvyV%S!@s}>}*O3*sbVId-6>-vDF71z?O_%Psr*6y^^D~Ux z;M`}54csesM|+lQn>(kL*{@TRxF{5p3jMqnnwXY> z9<9D2)?`wFEC^DA!knWaij&3OA$qgJx7YR!#A?P4Zx7tBxH-^0QkZ=QKH_lOD+w87 zR#}d28&fSEmE6Mm&q%V0oTQvc4C694Jg*0CA?a4(as%8fz^Ej9VJ zeS+8F?Ot)l75W=tV_m)At={gwP^<|x{x~gwk%Ns46u%rNBS`n!RzYUXhyH3hGpEJq z*{s%aPo^=$ULSO{qQdp_(UvZin-QU|^UxaYwTh|p)sq`Z*qoW_jhb3$WAIwLb^lpi zrcU(%zxHS5Z>w%uDowom*v8K(Qf~a9(YpFUS7Lwl6=;9;a#iTA)6*_zxb~MwvO$|K z`{=_r@QBTWIlsl?b}zGVp{1CQaMp@`mgmr%?;W8$2j7-daV+N&#q1C-pRTkCdKM@q zntw|*N)j?e_|-nzi$ZxF7E0hsDi=C^zzW$t%(uMhTr{LIg}RZc_ns5A1}3z;TUn(D-Jb2FvxLmx+s zgoh61U2uh;qfZ=_Oo%!U)?8G*()W1N{~TuErQyV>t~{Af!(E|F^;^QPz-5j0 z^7Sf>H{RcSDeWkeu~`)#t;gg1SWzNjqhn_C%U+F%<#fry&a>?=y*FLgGnMi`z-_i` zW!04|3lgsJGKgCWEPWDNo~FPh*fj1^=y;Iq+*oOO4BS&nDVj~NemI)}B8`QY75b`87*!|eN)1tSU6a?3yz*{xl6hJtv7 ztH75wxuIu@WaGabwDuz4YYQtG21Sv14>Ane!d)0pS+cSVZw}nAe@vV9;km6!u`o{f z3Qg?eF;zG=sN7b_u2y!7#3tx0So-Pr7b4R&N5t9 zqGxE$_?WZv5Lh#|`-N)_q%qy<1 zfQ9(=hx(2Tt}&w7(M#3CN^%@(JDSmzuQ8qt;+%u4zRz}+b|40)eG*zPv0AgYDyV<; zAE7e~tt(jDTpeExzni}vcs{>qo=q`1J(jXlY+7dZqP2(CCH@M=$!tDLr7d{4dk~+U zPN+>mEG8J+X+aqpH zayv`(B5&P!5c-r~rxS_9M3VOROT<=I%!llE%B);mR0gc_4`)*)iW2FvQ>o+jhR9k9#d0gyUzn7?$`ZjgVp*Wa%Vw+ijm)EfA5UfL+>^^eO1 z9bZXB!cDhuPm8UZ?r&iA7b{$Q`TX6LeVlrwST62L!FRmYoM%Lzs6(J}_3-dfM?;>^ z-TsG*@DcaT6;-djX=0J3)zP+=E5*L?a?7~;;os1lTO|>PHXmlKlM=SwX}Y*|-Fyac z1tU?4t2vzfu1S~2O2WNhr2$g*Nq4P7)5<DeP^Jt=b^B;<*&{-um7fU!SZ?w z|JXLcmR`Cz4{1Kq7N%B`8!A=P?uAuE?9vFVJ|%Wv?3Tc}(nK;vWNA)F%;Y6Dt>?+K zBi80B3o;0eibe#j6F14VDse;R)(47g`4Q`)htQ94;vb)#WLvIrZoFaUE&4@kX`{W; zE69aJM|)mqbtOJ6EC`uu9-KPdZt;#e->QzmabhQ4uKKjWK?`%0OmHmWX4z|_*oky! zN?fMIa*Wti{h>+hk>@D6;*c=65+mM`df1G&>Eww2x-Ri~Px*ivGv_BW`;E0_y|D0d z!)+GIJJsI=)V`o^f?adb3pA6seAgDTlkhRKs-1&3W+XtR=9vugvKzSkW1KF$5E4jeOQ~y|Twl`>jnihDHG*C=k%Or&yABW13&fW%e5Z zAAJtW(qD@hYCYiZcILo_>-EgSa zYg+ogV%2uXPD0M`neU*VpXZ}-j~-L9iZlx~j|asv>tt+*gm)qN(R!3!1-fujbNQP7AUs zmJtSD!h5ri+3+e!3gCsmRZ>o^bq-(WPS`3aSJMiWF-YFv>k+DvG8i@mzZ6GR`)+@+s54BeP)RS|vT*v^CUA{RMmOwgY$B6V{<&|KS_% zg*P|SCB+HRZI?G5W=36pj2Od#Ic~-HeVuH~vu;-5ZlT!&76JR*F(wlbu6{duj^zdD zb06K|<7+$pCMvdwGV|_HC4WCoW1Y1^YELgIqsO@RaI@+CmOB=lRO;vDwTqLpLBGINK5Gbx^$=srHsYO)qI*I3!x@LAEV3_@pqj^t}X$YG=EUxdCzo4Bf}RZ?^0N(;B6-l%@n_G^y8dygoB z{ho}O&{C{5QQu(v=uw>*(R15v|DAwoEa`;El=!;6;Rc_9lJQo}$DkD@!{M9@S66NV zlQ}p;%HQ!s@(ryRh~u)Bhd>=o5q?%S7OsLY<7)-fzX zekJ}bOlb7Jv9!*1Bx~g1|<*FWK zEK5NMpcw{qedC|?_f;|)R*yl#KHnOaD>un`=Z-6KqDtw=ZshzZVvHU2`U0vh(z!d$ z5v_#fpTUKaf?K2e;&&5~+~rCpY0uM1VOCmVTe`!dt}GgA7NuEpvacz-{b{as!U2@a z=;fC`wyle!-{kDkdrgxPRfJZ&lJ7OjDW0b5VIb;eWl*nJ|9HG}^=pd}S9cMpcb$AH zTiw)JFxo;tYS*6Gpk03cUFB4>9Y>yc0>{pPuvtw!CX%}of^qA=EHU&+mEU!ij|A3x z%U~&9%Y#bxyk2DsZ;H^55Md!9K0;t9^>2g#2(p@=F0@YO$k*&qOLvPXVd(glqE?Yr ztNGdHKx#BzUOh`)>s)tsBagVMi<+s0Nm5uWub06$%12F)KRsB#i&%nJDQ5J&o4rYg z&V}z>zyO3j`OM{mT$qknQ%G)>w^^70C&!9LHO7n+#pvQxBW-T)01_FxeWB4Y>c;eY zhJl_*mdfk3#*L)~>Niwb)U*o?`>T?&co1ojy^8Yb=2?WFeZlO$DO{BeRSeD$J=rYm zIW|KB$f|vH>2(MY)x^l z(b$%;-bKfYXCqa_G-J&<+NgUvA(&3gS@?ontk6P0By6I+7_Kn0zb~1&Ime!lmkXrolXp%Rd z*mL#PQNIb3)>Bkg_JtvaetuWa;wlaw`aup$skP}1LDvioXO*d$SYCf;#Y?%yU{p^$ z(FA8(!AbB1>CnA0(r((fV)_gYG1EHGwqhlgd40$6CDPl`O%z5c#VGAFJttj)cq2trVf5aO;(Dx z1xmy%faK+eO-yS;Ri;h3`8`V4)XkvHJ$XWd_pX3T*ShW)2L;gecRH|tblG~b{TNd& zmE!aop0sh6#}S`s?Yps}lz*stC~><%{C`%L*r_y|zRR$?O|!C67Q z;)0bnc-I$Cuc`&QwZYfOE9yD2jgous&tC`}*?e?uvdA(%=|ii80J6dDJ5ki^*(l&% zxH0iynP#)Y{jC0X^NAXi#K_|-B~@6)aku8akbxS_`J}u2H?}vFZWvWdeN}U~IQ!|j zRO7}|#o}~>9gjSo$@HCXJc&grU2jh(h%&azBSE@O)6_9ciml(51k1yFXcU2KfBX$< zN8gXg8~eYJw+`T5fm$fm6TYF}G?nLQlsS47BQ`#Lzoopwb|w&fx~Q_X4!HQVsYp{L zF8i*^8)+l#*&@r^c0k_$g1g<8HjWYc6_a;v%$-7)g(E1c@@?!8=TfN>gS|;X*dSD8 z`^utJk1vPPlcwwm9e{=kS3@1wzOsCIo2S6kHFuK{%hJ{7tpCk|k8ZkfN#eR2Lm~2V zt1)5;!G#jA+11>7!_=%bP*vij-}P$BecW>d%P_M;;XHm+y~;GQi(JOZh3kvW(LVaJ z6}I?E$}#vJV26hlQd-VU$qRR57HD757u7w#0~@*L30|us77lmoSE1kEnhm^UGc~Om znDruVn6DU?CZi`^P@n}rUH%zf?oPf@nB8IP|3Z$-FM>05XKze(`Kf@KiVxt407zsT zA$za3xOcO2%5mUOEh!fW;H6CC13qxvbc+p2ee5~~d;*jQF!MQfL%dq@J?3E&S|SSw zQCGez{2I{zK^1@l~ve~G1kG$2H~o%LoBRIcg?3_EUj9o zst0NeRM%5#;zSVkN^o~aG-IQ3@kTTj8cUoQBCE*d@4RXXJ#-NUker}3I!EDUzO1sa zm%$wq`}v_^tAh1rQ@hvR9_-`DJP@XQypu-_o;~_T^lZolDH<;|)G!RiskW*g3}<=` zu59u9J%ZL$e!VPgmq8;MtWw(A8j^U+DIh5vA&e`?s*Q5l9hR$JXDPe>l(^i_ZLQSI zvUy!+DW+c@YJEy%ptzr^e~rW?pV!`Hq z5R`4+dM|X5Svc|$pU8aV(SYG}7(^`VE~OFpU*#jT!y!FURYMng22@D}jnMMm?j{3lh1EV=o=B(8lH zXa13*RdmWH>NIRaRsMyFy+a=LL~PUWQfGDED=E12n`~Pcz;U>@@rov)_4`Y<$ewgw z0fWjlUUaimlS6|5&EEQ+T#TPRtC~gHa3s2+Q+FY8t79HffyR?h$+m#>8p=Bcy zENVncRIgOrzt58sX2Ic}AYJ^1qI9m|qau-2NUThUZS<#oORdN9iD0)kB+3ZWe^i%(O(Vj8>0&nBrENvFn^t`(%(VmuYZ7N8xovY7FT~n`Xzb1TE-k zgZ^>=wgWA3ykZfVr9vB>dCTLjvYPDm*WT&hWKVUS-?#H$pr|-JuzhD>xp;W3Eh4E+ zXE*-)4OB02Rgusx^0ns;xpHw1GN4mi&VvVu(ee;EzM}=v?8GC-8B=^tiqGR~c#_in z;#4RSp@n%;IP(*mY32QhY%&S!uQ|A^ts%R6k2Hq#h|rX>96=iIQg5z2nyYs+(cq3( zcPL8DxMk~qIx_&5!{3#z3dc#qQ&Z|!U+^qRxlCELzoi$BH#m6cJa_IX0=N1?5h6DO z3!IG8$!L?;5Mqn;v24?+7mwGaEsnIEcVK&vc_$zQnp6N@TB5XW@}>J|1SN%qBK(%b zYz`;pS-g@?lW2`yNJnMna&q}3v^g@GiQj70cX)ImB`q#2;8UrY=-!+kk{j~h zxTTR?muZd8a6k3dU!+(4nNo3nCV!Yll68U-?WeecC{Z>$Li8^0pnqw|QsAP$d)Q3#9=IQxs5XFh8D~DOd8g* z;RwGx{c3X$b}#hwH!FTHOXqvce~C>UH7VVK$9J4TskcA zQrVo$%3I84*qLt2bX&;LMrMWU0+=S4NT!Rw5BnbI&CAbOQIc2YR=uiY?b*2?{wO-^XzVt0`_)rK^!x0Z8)U3@ z9790B0e;$^W3#veE(M{9y)}bh;0d2Td=jZLkTCIA!l&^)Ny8Fo(!ragp}`N*WpPQB zd1v)+3Ax3nq`D<(iLQl;39M3h_3eP0Qup}YmN!on5DCfXyT(WjMS9Oa)zZ9S{B99f zU%)8T+)C>r-#3`bgc_R6a%jh2$PaSk4f7BGCc$b`KD>qu9NS|{Et*#3JReP|A8Kck zejQnJXk`C%vAEgA;;^{cJo3%KJY`+>%hw9Q7S#^7lvyN<;#gp0(S$iwbig!$Fwrgi z;JIY0A1SXu7umm3USF{gup|g?b@C_`+esfxI4TRcxG_gxg<;Bl^|&UGbL1TJcSx`Z zZa3y^ismejz77`H7fN^px}=2XGehjNm)kfoPsh--op#Pp z#R0!{4*0v&v~RYOh9zzt75-NmTyhUSGdKL)-!{;%Neut*Gjs9Tp1DaYPvII)R_6l= zeZVr?dUOCs<6#5P8-Kkl*>wJ$3DM>&2YqMK{=A&>wgWEwOyKC@Zl%C~e)RMA7hc!q zv7%6M!zZFo6aje% z|N0gcrj-OLlo81<%7kk8mj3xwAkHwx3%?E6AKQ?$Xsv6LWo`!&Js{KeZ#q~<0kb#! zGU6Edij+a=-|E`>pa_oMI$ly3{ngiqh#MoW!V!YHeFeL~cw$G`0N!T!<<>vBijqB} zHjEj_xfI|)HQe*x0LJH>G&`OycJ*Q9xfLJ}ke2={UG#K@k{JuC;RMZnU{>wPKZgQ$ z?1DrLbOhOa=z(TLG&Xk`fyBu_^IQ>ZC|yeOMCp`|~ zOXUNR^WA$bKeA^3oHXRW0V&aIFl9)&NQSkY-%bG9fd>4UxpNDotG{5Kz{xv-$j&Wk z(h#8CGAm@Z0qN4H1p*1c;B8m8&(QXGr?Wl@=P!yJC$BVU=gfH?bs&$`uqn5eoaRd_ zK7V%j`1~JlNl#G>f+Mft9kmQ3Fv5(jD1ofHdK8!o3^v;+7SPlMn=s3rIh%Pr#qIl~qe#WwkmTk3!}ki!J!B1Cz9TXpg5i;UXpVe86XbB*>RKvXF)6 zlmllSidx?H+brwHQ4R1751nK~Wojrl`X(s7usM!+Y9Bo!=MVl)m*O?4Fyqhp+zP1~ z77zLTg8H>Jde6l1I*~F>5M27>lP`fhxC&hpe?@e{#Fx}eeD7Na^V&C|~KcLhRb{ZJ=O%=;~GCGFyiOJnt;c+3Xs0OjDG_4uZE%ZGp zk*~n8A>u!V4Hb!ie8b@#IW52_iA8W;-q%PUZce^~m|KX?s$!dJulQUM8tpo6)jBOu zdiwbHWU$OUM8W%ez_(JR8~$Kgc?cqc0UcY=rl~!^ArI*APe-pv0^iXBIy7^UYk4lPAGG%*Zu5IO9H3 zZ`HLCZFP+1S35qF7;~bgiWBvw6vU%n0I8fv1oB#lYmn$w$KwNUp;SORXSCE^S7BCw zb=8ma#tD!tb4PqFcjT*Obx9Tu6v=s2de%R(p(F@nsW3h=*(A6(lo;x%jlTcG-kXO* zx&Qy;=SbNKk(?4zmLgQP7+X?`P-I^tA!}hQ6Pikr>@jwgBKz3JG8kKg7_u8<-)F-x zgE9PW&U-l@=lrhkpWp8vpa15X>z;e=`}x|Q%j5BQ4%5q%#g}YD#SUVUq2OC*Euj4H z5AV9ASfGSl?<(`5*?~_#`x^@jgu?y&v=2^nr%*;=c){mi;!5DV?dPm#m%NR@-V9eG z?mX&va0qE?>VND$K+;IVHYAf&vBe%gkcX7$H=1M2 zlt6z~tbJ!d>RMbDJaQ*v~d2Rh+9xALkmYEncRXA`d4=Fi@!|++WF}4`jcs{nqXb4wEn*8g+&JQJZ8M8 z#{i3~u11D@W=lwzLRUlK9*Jn#me+GsQSQG7H#83#&z@+g%LK>X{Ilv#PG!bQ<1$7O%@ zqJYWL4F)J5_3YkWJwE`@y3*vtr|=%2cZl|@eQd^G?n+2gzsQ2Wd~%qXP|}dCVpDWT z<~yw764Y!#+Ylg=7KJ@8gIR)a?5!e*WM6 zOFN9!roV4BqDv#K<$d^}Y1*&BmP`Wm*rOMN|swRpQ;X__v8p+z8x1db|PmJ6_F zH`v)Ag_b)!P#8WBl#7LXb&O9={@rTQxYq7N$QjRXcbqx`C=2f7pDGn}#mDa>_;yXE zhUnB0>>Kx5hpB(rEEyVkt&ym*F`g4P6s z%|qGwT?^|1^D(Zaa+o5|7aC7mBLzL|Ti$zxeSGXipe1Vzm&%pz&JK>}S67d0A-kzv zX&_qGX6h>y|8@Y(jlPneqWqy6ZK?Y{$m?OVT`&5I!D{()Go3BojVL~aF{*QyVt_?a z`mP^Pn7eXnVv2AB!9mYh4%Au1g^ zs~0>@O!wjNsy=h5nw0ff>9f!TkZ!E@A>M?IgcsGhgWM`22(>spGs=gi{ewzpegha5<6a&@C}~2Bg;NG!quiF?Nen4wrzK{Em?0Qw1-|26WTar3blsNHQ-QD# z4H8lwG(vewC&*Ua4zl!4IeOEDI!Pf4r$H%|2iO zIcDgsnM+^mkOmJ1at!Br)HrhuH&lZOc6@~uk%Ss7VgN$1e&}UqW@zD(!hszQR->-P zxqY9#3bOz$ed#5XqEVjnBQ2C6|IlW|vd{CHbXD?~>21Xmg@L3SQHeq9FMWu8ZHSTQ z+!!C)r>vmEy*fF3mQEYMKRL+B$pv{Wg}=u7j*NkagD~B~(*}XtGo|;z8&KNt$rRVb zm22Sr#6w)Mw0-kB0VI=e}97Rnq*7Lppw-$ii zIOTOFd+GY1nM)QKi1*@?EawxPRTnkbetJyrCQp0^7jWNdR}R_?nGZnQE*;K7Cq8uC zg}lD=QRjs8wcWEBegv9eaEV~>&UeAO&)n^f83A_Y9NC)X#Ou}%!qPV9QwFy>`v-%z zW=&}QArtL~g6hX00S|ey@4_1Ws7lM1$D`c4@>DY*_s^o&voq`9SGuMz#%-Wh+I1YO zQS&xI{avV;XVQ%(rtZ$jxfYAS;3E_g>D-aIwL3-L8LJ<)e_)^YJLp+KDv(blAud+n7H)V#)yN zbpx-Zbg50B=#`0Si@Y}ZKpHOMO&$IEN%tBhcGq&6kwTVtrCM#1b6^5NmQ3tr!_{CP z^e8$ErW`I=0=L>Bd2x;5V=^L3aPC#uEd303we7W1wOIx-M@eK1^XpE9v2J;+=j}?% zk*_WI7fn%DRA?qv&!Cbu6AaE#_J8(n{Q`iv^w1*V1$%kxr_6gP)qEC4XhE}1GVLO0 zx`wURv0RHv1jliQsX!>pm?kYR28+*&eWhsXr(aC?+E981dHc?nwk*Ar$JrS)51P|V zwsl#=H4nd7t$VGO5V9M1w<&5<^PU)g;A_c>p9Uj%-G_Zz>7MU+aXqS`^wo33#pWUn z#4KH9_orbT*R33Sn`62?3K{LgLchjfG00W%o!6?_*!rQO^wDzN&l_ZE6ha1#`ms)u zR*RCq+#dwwE4eoN`{fXm(LOaMCIY`~Gv05F>VaqshE5gAm96|wZx6+P+{yyBQ_P@?jh_JkaK zSNUOFhCH0~P-~O#P}0Z!K`^V}c8jJszMr_$$}x^+6r{;5+Mgc;BI(Ad5nwsV#pcN?$1+NeYIq z512RUDb2n8;`OhCIT;up_w@U3&T|f(s)z425>&qgEXWQ+$*A(XQ=UT&S^>}sVsaj) ztyLh&o0!FjX#PQ@2~K^FYwY6q1EFPL5ty`09Y>HpY0AxYs!GjkBd?W z(aug*?rTkb{$~7nM?Z{K)jyf2mEqU^p}>s%(W7?mop20qWDLxIFpzz9@T~;Asp^-c z;PbU$@OngrpGSVp(0w)l-Sxqg__9@c?$*v$H&dSH%l4yMGXe&r zkkyj`tMVPV(NsEqu96gZ@0FwZ!|7FbM|($`YmL@HgkvU!xf$rxH21Np*f;#((Y7F| zid9C&Hc{>(xOe zdu>hCA^Wl$OMmsAycsM)a~^enH?bsGd||}`R+_UATvGnHYC0ZFix8FeQ(|LDGdOI< znZSxmXuTRofX~;Bg{O%#a40SLkpivk`y0S5VXcp!xMx>#I*BMryskHvr%dbf5mgYo zNK)5ps&!fzD}FLN)i$rN#%@GaT+_VKfU;5RD;!(;RpnZ1gzh?NAx>W*LpEm;j<4> zv@Dmvh$YX61p|@F2k%^pLwHLhq?DwqB@&n{!geE-7G+^WZmE(e{4a0|OKaDO&KU3G zb$=EDZUJ?v_fE+eXuW$RCvCqjrExZ{en3%}OQhw)bu+W?a)L$!AL`k?isWGO{SX|V zLeOa7_$zQPzb~ySE7|KbzOuKgghOqo8OEXm<3M|7jU)z^^_d|X034}(qHJLi&Y;lz8W?!Vr z?A>5IVbE%E-o^3Bx1S>cLg$g>H+l5uz6J9ZwhGjrs=L1=z;!zJ1|7Q;@lw=tLQkp! z;Btcj88;%=Vg&MvN=niKM(^K2-&q^Y-{&W)lYxV;Q>NXMkpXn*5Ba_C-roFp5h}@H zk$9dj_T%C?T^4*tVcnQO@Y1P_$~;HvOckbw-MBN+Jx)}Ya;H7r^PKF@o-x|Q`RC6h z!#1-@UhAhS4@1;49}Z~0D__?;W{0f$VuG&ScxUCg$Ro)$l&rPW#U!}3Io2*(&>bLx zGdSWNe>l#8Ylw@YKN@T@RhQ{nrs}?JgP69aZFW{DLHWf}{0ixY19$>;sMUttHywp2 zH?iq2QlK7han0+LFTOz)92lJpLY3rX_^vqY?0grp0_1V;uZ6tedhbj`UK(crZCwg+ z(Sm(KYgdB@btSonl8XxcaXM0UiB>a>jp0U-mjZ(K?U5M2U+5C}PoeAf4Zs)$O-7=) zTt0V-#=>}$e(7w2b-SZ4yN0pGjhE*WuiineZlzdXegMunnv!Cv>ZjGT>C@ef4c+82 z*M|2O+uw{MlzD~Sg% zoKMn)FsmnR3l4v#PoRGQGvUfdIoW>`7=L4MW|kF$^T6(|wKxErA55xH3_!b!n|#RQpKZp8Wki$+NkP`bq{4j)5&i5)|CN-S zH@?@#Z$yF6+v^JRm*6*^$@gEZ!@n%;6X!kA{I5{M_n8Ap9j3Lf+MC6FBMPl6f zJ>{y7%4M0D2PuL`@82}L>dJe9j9e^+=Nx+A9w?#N>6^TI0AuP}Rcy<}Q%QG4%4Hob zPp-Stj>T~BS5!fSzBuGCyXxLgy!`YtT8MK|Ja0b)=Zpj1QS_RL!-J4pbhRC0oB!5* z9>LyZPx;$mPr0y6ua@3&qc`3T+Gsh==YT)I>Q$Js3g4wRXyM;jkd|R? zZcyy6osdg-m!jfi{hIhlt0ly}3QK9D53lcv{7RM)G3f2!6rm}3?*{Iz+^(S+CD?nS zD(r(hF~}>4tL~<5*u)3U!kjN))HQUuHmZ$P1RlJx=x7o^ybv4#DnyC9`CmiD?IS-q zFE9g9r)&OSk2?TAT$93t zFY*hY^uSbJpU_LS-zHD{j_*cey=hi;`Tbb;AU_}{(OB4Q@M(tYF_$j@VWX#s0jFIs z+zGqf9ENT0bMAFj6I(SJHys#ZKz^mO4fn@;>p4_kjXzFS7~EI^!qp+6*3<=*+ip>T zs}1jDbcA!NthM-TR;(-6LQWQ=BWt$tuS)OP8a>cF1B9GLecs|1hW9=RG##+{1VCD{ zd5>%D zO|4N^`iO949hiFV%7?sq<3n__xMg(OsaW5e=_`ulIf47P@tV}Gb z8C!MNS5kQt)8GN$Mb5?D8SMmlzMy*Me&{ph<;uT=DS>#@J``Qq zX~B@TC|sUtN)K25T}F?pS_VQlnHF7QFWRXO_WM7oejMyu!!_GRD{#EqbELF$pkE+xYVoB% z+y@A3{YMLH7mW+HV5+M-5}7qyCkieW&IeTLz{M<{ZaV0S%wFEF$vFWE|6tdkzph~b z*w&cK!yx(l`3_-tIVtXb2Bwxn^$Drkyk}M5mag@zoQcKv69$*=$9JXs?}$Lw+Ol

+
Child 2
+ + ); + + expect(screen.getByText('Child 1')).toBeInTheDocument(); + expect(screen.getByText('Child 2')).toBeInTheDocument(); + }); +}); diff --git a/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/chinese.ts b/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/chinese.ts new file mode 100644 index 00000000..cda37c3d --- /dev/null +++ b/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/chinese.ts @@ -0,0 +1,10 @@ +import { OktaAuthLanguageFile } from './types'; + +const resources: OktaAuthLanguageFile = { + translation: { + ACTIONS: { + OKTA_LOG_IN: '使用 Okta 登录', + } + }, +}; +export default resources; diff --git a/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/english.ts b/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/english.ts new file mode 100644 index 00000000..464a8501 --- /dev/null +++ b/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/english.ts @@ -0,0 +1,10 @@ +import { OktaAuthLanguageFile } from './types'; + +const resources: OktaAuthLanguageFile = { + translation: { + ACTIONS: { + OKTA_LOG_IN: 'Sign In With Okta' + } + }, +}; +export default resources; diff --git a/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/french.ts b/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/french.ts new file mode 100644 index 00000000..914fb44e --- /dev/null +++ b/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/french.ts @@ -0,0 +1,10 @@ +import { OktaAuthLanguageFile } from './types'; + +const resources: OktaAuthLanguageFile = { + translation: { + ACTIONS: { + OKTA_LOG_IN: 'Se connecter avec Okta', + } + }, +}; +export default resources; diff --git a/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/index.ts b/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/index.ts new file mode 100644 index 00000000..24aee28d --- /dev/null +++ b/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/index.ts @@ -0,0 +1,19 @@ +import english from './english'; +import french from './french'; +import spanish from './spanish'; +import chinese from './chinese'; +import portuguese from './portuguese'; + +export { default as english } from './english'; +export { default as french } from './french'; +export { default as spanish } from './spanish'; +export { default as chinese } from './chinese'; +export { default as portuguese } from './portuguese'; + +export const OktaAuthDictionaries = { + english: english, + french: french, + spanish: spanish, + chinese: chinese, + portuguese: portuguese, +}; diff --git a/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/portuguese.ts b/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/portuguese.ts new file mode 100644 index 00000000..c36b0abd --- /dev/null +++ b/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/portuguese.ts @@ -0,0 +1,10 @@ +import { OktaAuthLanguageFile } from './types'; + +const resources: OktaAuthLanguageFile = { + translation: { + ACTIONS: { + OKTA_LOG_IN: 'Iniciar Sessão com Okta', + } + }, +}; +export default resources; diff --git a/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/spanish.ts b/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/spanish.ts new file mode 100644 index 00000000..bf479857 --- /dev/null +++ b/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/spanish.ts @@ -0,0 +1,10 @@ +import { OktaAuthLanguageFile } from './types'; + +const resources: OktaAuthLanguageFile = { + translation: { + ACTIONS: { + OKTA_LOG_IN: 'Iniciar sesión con Okta', + } + }, +}; +export default resources; diff --git a/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/types.ts b/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/types.ts new file mode 100644 index 00000000..5783bbdc --- /dev/null +++ b/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/types.ts @@ -0,0 +1,9 @@ +export type OktaAuthTranslations = { + ACTIONS: { + OKTA_LOG_IN: string; + }; + } + +export type OktaAuthLanguageFile = { + translation: OktaAuthTranslations; +}; diff --git a/login-workflow/src/contexts/OktaAuthContext/context.ts b/login-workflow/src/contexts/OktaAuthContext/context.ts new file mode 100644 index 00000000..0e82b50b --- /dev/null +++ b/login-workflow/src/contexts/OktaAuthContext/context.ts @@ -0,0 +1,11 @@ +/** + * @packageDocumentation + * @module OktaAuthContext + */ +import { createContext } from 'react'; +import { OktaAuthContextProviderProps } from './types'; + +/** + * Okta Auth Context is used to access context in the okta authentication workflow + */ +export const OktaAuthContext = createContext(null); diff --git a/login-workflow/src/contexts/OktaAuthContext/i18nOktaAuthInstance.ts b/login-workflow/src/contexts/OktaAuthContext/i18nOktaAuthInstance.ts new file mode 100644 index 00000000..3c689437 --- /dev/null +++ b/login-workflow/src/contexts/OktaAuthContext/i18nOktaAuthInstance.ts @@ -0,0 +1,84 @@ +import i18next from 'i18next'; +import { AuthDictionaries } from '../AuthContext/AuthDictionaries'; +import { SharedDictionaries } from '../SharedDictionaries'; +import { OktaAuthDictionaries } from './OktaAuthDictionaries'; + +export const i18nOktaAuthInstance = i18next.createInstance( + { + fallbackLng: 'en', + ns: ['bluiAuth', 'bluiCommon', 'bluiOktaAuth'], + defaultNS: 'bluiOktaAuth', + load: 'languageOnly', + detection: { + order: ['querystring', 'localStorage', 'navigator'], + caches: ['localStorage'], + }, + react: { useSuspense: false }, + interpolation: { escapeValue: false }, + resources: { + en: { + bluiAuth: { + ...AuthDictionaries.english.translation, + }, + bluiCommon: { + ...SharedDictionaries.english.translation, + }, + bluiOktaAuth: { + ...OktaAuthDictionaries.english.translation, + }, + }, + fr: { + bluiAuth: { + ...AuthDictionaries.french.translation, + }, + bluiCommon: { + ...SharedDictionaries.french.translation, + }, + bluiOktaAuth: { + ...OktaAuthDictionaries.french.translation, + }, + }, + es: { + bluiAuth: { + ...AuthDictionaries.spanish.translation, + }, + bluiCommon: { + ...SharedDictionaries.spanish.translation, + }, + bluiOktaAuth: { + ...OktaAuthDictionaries.spanish.translation, + }, + }, + zh: { + bluiAuth: { + ...AuthDictionaries.chinese.translation, + }, + bluiCommon: { + ...SharedDictionaries.chinese.translation, + }, + bluiOktaAuth: { + ...OktaAuthDictionaries.chinese.translation, + }, + }, + pt: { + bluiAuth: { + ...AuthDictionaries.portuguese.translation, + }, + bluiCommon: { + ...SharedDictionaries.portuguese.translation, + }, + bluiOktaAuth: { + ...OktaAuthDictionaries.portuguese.translation, + }, + }, + }, + }, + // We must provide a function as second parameter, otherwise i18next errors + // eslint-disable-next-line @typescript-eslint/no-unused-vars + (err, _t) => { + // eslint-disable-next-line no-console + if (err) return console.log(err); + } +); + +export default { i18nOktaAuthInstance }; diff --git a/login-workflow/src/contexts/OktaAuthContext/index.ts b/login-workflow/src/contexts/OktaAuthContext/index.ts new file mode 100644 index 00000000..2b3fac1f --- /dev/null +++ b/login-workflow/src/contexts/OktaAuthContext/index.ts @@ -0,0 +1,25 @@ +import { useContext } from 'react'; +import { OktaAuthContext } from './context'; +import i18nOktaAuthInstance from './i18nOktaAuthInstance'; +import { OktaAuthContextProvider } from './provider'; +import { OktaAuthContextProviderProps } from './types'; +import { OktaAuthDictionaries } from './OktaAuthDictionaries'; + +/** + * Hook to get top level data in okta authentication workflow + * + * @category Hooks + * @private + * @internal + */ +export const useOktaAuthContext = (): OktaAuthContextProviderProps => { + const context = useContext(OktaAuthContext); + if (context === null) { + throw new Error('useOktaAuthContext must be used within OktaAuthContextProvider'); + } + return context; +}; + +export type { OktaAuthContextProviderProps }; + +export { OktaAuthContext, OktaAuthContextProvider, i18nOktaAuthInstance, OktaAuthDictionaries }; diff --git a/login-workflow/src/contexts/OktaAuthContext/provider.tsx b/login-workflow/src/contexts/OktaAuthContext/provider.tsx new file mode 100644 index 00000000..f527d575 --- /dev/null +++ b/login-workflow/src/contexts/OktaAuthContext/provider.tsx @@ -0,0 +1,75 @@ +/** + * @packageDocumentation + * @module OktaAuthContextProvider + */ + +import React, { useEffect } from 'react'; +import { OktaAuthContextProviderProps } from './types'; +import { OktaAuthContext } from './context'; +import { I18nextProvider, useTranslation } from 'react-i18next'; +import { i18nOktaAuthInstance } from './i18nOktaAuthInstance'; +import { ErrorContext } from '../ErrorContext'; +import { OktaAuthDictionaries } from './OktaAuthDictionaries'; +import { AuthDictionaries } from '../AuthContext/AuthDictionaries'; +import { SharedDictionaries } from '../SharedDictionaries'; +import { ErrorManagerProps } from '../../components/Error/types'; + +const OktaAuthContextProviderContent: React.FC< + React.PropsWithChildren & { PasswordDialog?: JSX.Element }> +> = (props) => { + const { children, errorConfig, ...oktaAuthContextProps } = props; + const { t } = useTranslation(); + const mergedErrorConfig: ErrorManagerProps = { + t: t, + title: 'bluiCommon:MESSAGES.ERROR', + error: 'bluiAuth:LOGIN.INVALID_CREDENTIALS', + ...errorConfig, + dialogConfig: { + dismissLabel: 'bluiCommon:ACTIONS.OKAY', + ...(errorConfig?.dialogConfig ?? {}), + }, + }; + + return ( + + {children} + + ); +}; + +export const OktaAuthContextProvider: React.FC< + React.PropsWithChildren +> = (props) => { + const i18nInstance = props.i18n ?? i18nOktaAuthInstance; + const { language, i18n = i18nInstance, children, ...other } = props; + + if (props.i18n) { + i18n.addResourceBundle('zh', 'bluiAuth', AuthDictionaries.chinese.translation, true, false); + i18n.addResourceBundle('zh', 'bluiOktaAuth', OktaAuthDictionaries.chinese.translation, true, false); + i18n.addResourceBundle('zh', 'bluiCommon', SharedDictionaries.chinese.translation, true, false); + i18n.addResourceBundle('zh', 'bluiAuth', AuthDictionaries.english.translation, true, false); + i18n.addResourceBundle('en', 'bluiOktaAuth', OktaAuthDictionaries.english.translation, true, false); + i18n.addResourceBundle('en', 'bluiCommon', SharedDictionaries.english.translation, true, false); + i18n.addResourceBundle('zh', 'bluiAuth', AuthDictionaries.french.translation, true, false); + i18n.addResourceBundle('fr', 'bluiOktaAuth', OktaAuthDictionaries.french.translation, true, false); + i18n.addResourceBundle('fr', 'bluiCommon', SharedDictionaries.french.translation, true, false); + i18n.addResourceBundle('zh', 'bluiAuth', AuthDictionaries.portuguese.translation, true, false); + i18n.addResourceBundle('pt', 'bluiOktaAuth', OktaAuthDictionaries.portuguese.translation, true, false); + i18n.addResourceBundle('pt', 'bluiCommon', SharedDictionaries.portuguese.translation, true, false); + i18n.addResourceBundle('zh', 'bluiAuth', AuthDictionaries.spanish.translation, true, false); + i18n.addResourceBundle('es', 'bluiOktaAuth', OktaAuthDictionaries.spanish.translation, true, false); + i18n.addResourceBundle('es', 'bluiCommon', SharedDictionaries.spanish.translation, true, false); + } + + useEffect(() => { + void i18n.changeLanguage(language); + }, [i18n, language]); + + return ( + + + {children} + + + ); +}; diff --git a/login-workflow/src/contexts/OktaAuthContext/types.ts b/login-workflow/src/contexts/OktaAuthContext/types.ts new file mode 100644 index 00000000..0c34e58f --- /dev/null +++ b/login-workflow/src/contexts/OktaAuthContext/types.ts @@ -0,0 +1,35 @@ +/** + * @packageDocumentation + * @module OktaAuthContext + */ + +import { i18n } from 'i18next'; +import { RouteConfig } from '../../types'; +import { ErrorContextProviderProps } from '../ErrorContext/types'; + +export type OktaAuthContextProviderProps = { + /** + * Configures the language displayed on the screens + */ + language: string; + + /** + * A function that is used to navigate to a new URL. This is used to navigate to the various screens of the workflow + */ + navigate: (destination: -1 | string) => void; + + /** + * Object describing the URLs you are using for the relevant routes so the workflow can correctly navigate between screens + */ + routeConfig: RouteConfig; + + /** + * An optional i18n object that is used to translate the UI. This is only needed if you want to use custom translation keys / languages inside any of the workflow screens + */ + i18n?: i18n; + + /** + * An error config for error context provider + */ + errorConfig?: ErrorContextProviderProps; +}; diff --git a/login-workflow/src/contexts/SharedDictionaries/chinese.ts b/login-workflow/src/contexts/SharedDictionaries/chinese.ts index f66852e7..0f0fcbf0 100644 --- a/login-workflow/src/contexts/SharedDictionaries/chinese.ts +++ b/login-workflow/src/contexts/SharedDictionaries/chinese.ts @@ -12,7 +12,6 @@ const resources: CommonTranslationsFile = { DONE: '完成', CONTINUE: '继续', LOG_IN: '登录', - OKTA_LOG_IN: '使用 Okta 登录', LOG_OUT: '登出', CLICK_BUTTON: '点击按钮', UPDATE_REDUX: '点击按钮以更新redux中存的值', diff --git a/login-workflow/src/contexts/SharedDictionaries/english.ts b/login-workflow/src/contexts/SharedDictionaries/english.ts index 681187f3..0f58e9b6 100644 --- a/login-workflow/src/contexts/SharedDictionaries/english.ts +++ b/login-workflow/src/contexts/SharedDictionaries/english.ts @@ -12,7 +12,6 @@ const resources: CommonTranslationsFile = { CONTINUE: 'Continue', DONE: 'Done', LOG_IN: 'Log In', - OKTA_LOG_IN: 'Sign In With Okta', LOG_OUT: 'Log Out', CLICK_BUTTON: 'Click the button', UPDATE_REDUX: 'Click the button to update the redux store value!', diff --git a/login-workflow/src/contexts/SharedDictionaries/french.ts b/login-workflow/src/contexts/SharedDictionaries/french.ts index 0375aaad..b1673fc6 100644 --- a/login-workflow/src/contexts/SharedDictionaries/french.ts +++ b/login-workflow/src/contexts/SharedDictionaries/french.ts @@ -12,7 +12,6 @@ const resources: CommonTranslationsFile = { CONTINUE: 'Continuer', DONE: 'Terminé', LOG_IN: "S'identifier", - OKTA_LOG_IN: 'Se connecter avec Okta', LOG_OUT: 'Se déconnecter', CLICK_BUTTON: 'Cliquez sur le bouton', UPDATE_REDUX: 'Cliquez sur le bouton pour mettre à jour la valeur du magasin redux!', diff --git a/login-workflow/src/contexts/SharedDictionaries/portuguese.ts b/login-workflow/src/contexts/SharedDictionaries/portuguese.ts index a80ac61d..95b96337 100644 --- a/login-workflow/src/contexts/SharedDictionaries/portuguese.ts +++ b/login-workflow/src/contexts/SharedDictionaries/portuguese.ts @@ -12,7 +12,6 @@ const resources: CommonTranslationsFile = { CONTINUE: 'Continuar', DONE: 'Concluir', LOG_IN: 'Iniciar Sessão', - OKTA_LOG_IN: 'Iniciar Sessão com Okta', LOG_OUT: 'Terminar Sessão', CLICK_BUTTON: 'Clique no botão', UPDATE_REDUX: 'Clique no botão para atualizar o valor de armazenamento redux!', diff --git a/login-workflow/src/contexts/SharedDictionaries/spanish.ts b/login-workflow/src/contexts/SharedDictionaries/spanish.ts index be0aef30..94cbd241 100644 --- a/login-workflow/src/contexts/SharedDictionaries/spanish.ts +++ b/login-workflow/src/contexts/SharedDictionaries/spanish.ts @@ -12,7 +12,6 @@ const resources: CommonTranslationsFile = { CONTINUE: 'Seguir', DONE: 'Hecho', LOG_IN: 'Iniciar sesión', - OKTA_LOG_IN: 'Iniciar sesión con Okta', LOG_OUT: 'Cerrar sesión', CLICK_BUTTON: '¡Haga clic en el botón', UPDATE_REDUX: '¡Haga clic en el botón para actualizar el valor de la tienda redux!', diff --git a/login-workflow/src/contexts/SharedDictionaries/types.ts b/login-workflow/src/contexts/SharedDictionaries/types.ts index b7d6fa02..3df7ae57 100644 --- a/login-workflow/src/contexts/SharedDictionaries/types.ts +++ b/login-workflow/src/contexts/SharedDictionaries/types.ts @@ -9,7 +9,6 @@ export type CommonTranslations = { CONTINUE: string; DONE: string; LOG_IN: string; - OKTA_LOG_IN: string; LOG_OUT: string; CLICK_BUTTON: string; UPDATE_REDUX: string; diff --git a/login-workflow/src/contexts/index.ts b/login-workflow/src/contexts/index.ts index e52a63b2..cc6c0a5d 100644 --- a/login-workflow/src/contexts/index.ts +++ b/login-workflow/src/contexts/index.ts @@ -1,3 +1,4 @@ export * from './RegistrationWorkflowContext'; export * from './AuthContext'; export * from './RegistrationContext'; +export * from './OktaAuthContext'; \ No newline at end of file diff --git a/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreen.tsx b/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreen.tsx index 80a9bb0f..d2524493 100644 --- a/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreen.tsx +++ b/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreen.tsx @@ -30,7 +30,7 @@ export const OktaLoginScreen: React.FC = (props) => { }, }; const { - loginButtonLabel = t('bluiCommon:ACTIONS.OKTA_LOG_IN'), + loginButtonLabel = t('bluiOktaAuth:ACTIONS.OKTA_LOG_IN'), showForgotPassword = true, forgotPasswordLabel = t('bluiCommon:LABELS.FORGOT_PASSWORD'), onForgotPassword = (): void => navigate(routeConfig.FORGOT_PASSWORD as string), From 3bcfcce0da0fb24b7ce8c51dde7b8277871aa0f9 Mon Sep 17 00:00:00 2001 From: Suraj Karambe Date: Fri, 23 Aug 2024 19:17:14 +0530 Subject: [PATCH 62/90] Updated package version and changelog --- login-workflow/CHANGELOG.md | 2 +- login-workflow/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/login-workflow/CHANGELOG.md b/login-workflow/CHANGELOG.md index 33c3347c..0d77ae74 100644 --- a/login-workflow/CHANGELOG.md +++ b/login-workflow/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## v4.0.4 (Unreleased) +## v5.0.0 (Unreleased) ### Added diff --git a/login-workflow/package.json b/login-workflow/package.json index a294bae0..728d3f7a 100644 --- a/login-workflow/package.json +++ b/login-workflow/package.json @@ -1,6 +1,6 @@ { "name": "@brightlayer-ui/react-auth-workflow", - "version": "4.0.3", + "version": "5.0.0-beta.0", "author": "Brightlayer UI (https://github.com/brightlayer-ui)", "license": "BSD-3-Clause", "description": "Re-usable workflow components for Authentication and Registration within Eaton applications.", From cc617eb39ba0c9d41d937b5e5834aeaa90e5f69f Mon Sep 17 00:00:00 2001 From: Suraj Karambe Date: Fri, 23 Aug 2024 19:27:42 +0530 Subject: [PATCH 63/90] Renamed okta login screen to okta redirect login screen --- login-workflow/docs/API.md | 2 +- login-workflow/docs/routing.md | 4 ++-- login-workflow/docs/screens/README.md | 2 +- login-workflow/docs/screens/okta-login.md | 8 ++++---- login-workflow/example/src/navigation/AppRouter.tsx | 2 +- .../screens/{OktaLogin.tsx => OktaRedirectLogin.tsx} | 4 ++-- login-workflow/src/screens/OktaLoginScreen/index.ts | 2 -- .../OktaRedirectLoginScreen.test.tsx} | 8 ++++---- .../OktaRedirectLoginScreen.tsx} | 10 +++++----- .../OktaRedirectLoginScreenBase.test.tsx} | 8 ++++---- .../OktaRedirectLoginScreenBase.tsx} | 12 ++++++------ .../src/screens/OktaRedirectLoginScreen/index.ts | 2 ++ .../types.ts | 2 +- .../utilityClasses.ts | 8 ++++---- login-workflow/src/screens/index.ts | 2 +- 15 files changed, 38 insertions(+), 38 deletions(-) rename login-workflow/example/src/screens/{OktaLogin.tsx => OktaRedirectLogin.tsx} (82%) delete mode 100644 login-workflow/src/screens/OktaLoginScreen/index.ts rename login-workflow/src/screens/{OktaLoginScreen/OktaLoginScreen.test.tsx => OktaRedirectLoginScreen/OktaRedirectLoginScreen.test.tsx} (91%) rename login-workflow/src/screens/{OktaLoginScreen/OktaLoginScreen.tsx => OktaRedirectLoginScreen/OktaRedirectLoginScreen.tsx} (90%) rename login-workflow/src/screens/{OktaLoginScreen/OktaLoginScreenBase.test.tsx => OktaRedirectLoginScreen/OktaRedirectLoginScreenBase.test.tsx} (83%) rename login-workflow/src/screens/{OktaLoginScreen/OktaLoginScreenBase.tsx => OktaRedirectLoginScreen/OktaRedirectLoginScreenBase.tsx} (93%) create mode 100644 login-workflow/src/screens/OktaRedirectLoginScreen/index.ts rename login-workflow/src/screens/{OktaLoginScreen => OktaRedirectLoginScreen}/types.ts (96%) rename login-workflow/src/screens/{OktaLoginScreen => OktaRedirectLoginScreen}/utilityClasses.ts (65%) diff --git a/login-workflow/docs/API.md b/login-workflow/docs/API.md index 5f047629..8dc03475 100644 --- a/login-workflow/docs/API.md +++ b/login-workflow/docs/API.md @@ -123,7 +123,7 @@ Exported screens that can be used to customize the auth workflow. - [EulaScreen](./screens/eula.md) - [ForgotPasswordScreen](./screens/forgot-password.md) - [LoginScreen](./screens/login.md) -- [OktaLoginScreen](./screens/okta-login.md) +- [OktaRedirectLoginScreen](./screens/okta-login.md) - [ResetPasswordScreen](./screens/reset-password.md) - [SuccessScreen](./screens/success.md) - [VerifyCodeScreen](./screens/verify-code.md) diff --git a/login-workflow/docs/routing.md b/login-workflow/docs/routing.md index a1bf9f22..ca9e9d8d 100644 --- a/login-workflow/docs/routing.md +++ b/login-workflow/docs/routing.md @@ -25,7 +25,7 @@ import { ContactSupportScreen, ForgotPasswordScreen, ResetPasswordScreen, - OktaLoginScreen, + OktaRedirectLoginScreen, ReactRouterGuestGuard, ContactSupportScreen, } from '@brightlayer-ui/react-auth-workflow'; @@ -76,7 +76,7 @@ export const AppRouter: React.FC = () => { path={routes.LOGIN} element={ - + } /> diff --git a/login-workflow/docs/screens/README.md b/login-workflow/docs/screens/README.md index 62f80062..2680b121 100644 --- a/login-workflow/docs/screens/README.md +++ b/login-workflow/docs/screens/README.md @@ -13,7 +13,7 @@ The following screen components are available: - [EulaScreen](./eula.md) - [ForgotPasswordScreen](./forgot-password.md) - [LoginScreen](./login.md) -- [OktaLoginScreen](./okta-login.md) +- [OktaRedirectLoginScreen](./okta-login.md) - [ResetPasswordScreen](./reset-password.md) - [SuccessScreen](./success.md) - [VerifyCodeScreen](./verify-code.md) \ No newline at end of file diff --git a/login-workflow/docs/screens/okta-login.md b/login-workflow/docs/screens/okta-login.md index 810c60ad..6b62b8fb 100644 --- a/login-workflow/docs/screens/okta-login.md +++ b/login-workflow/docs/screens/okta-login.md @@ -1,17 +1,17 @@ -# OktaLoginScreen +# OktaRedirectLoginScreen -The `OktaLoginScreen` component is a part of the login workflow and is used to render a login screen that integrates with Okta for authentication. The OktaLoginScreen must be used within an `AuthContextProvider` +The `OktaRedirectLoginScreen` component is a part of the login workflow and is used to render a login screen that integrates with Okta for authentication. The OktaRedirectLoginScreen must be used within an `AuthContextProvider` ![Okta Login](../../media/screens/okta-login.png) ## Import ```tsx -import { OktaLoginScreen } from '@brightlayer-ui/react-auth-workflow'; +import { OktaRedirectLoginScreen } from '@brightlayer-ui/react-auth-workflow'; ... - + ``` ## API diff --git a/login-workflow/example/src/navigation/AppRouter.tsx b/login-workflow/example/src/navigation/AppRouter.tsx index 82e00d11..24894cc6 100644 --- a/login-workflow/example/src/navigation/AppRouter.tsx +++ b/login-workflow/example/src/navigation/AppRouter.tsx @@ -22,7 +22,7 @@ import { ChangePassword } from '../components/ChangePassword'; import { Security } from '@okta/okta-react'; import OktaAuth, { OktaAuthOptions, toRelativeUrl } from '@okta/okta-auth-js'; import oktaConfig from '../oktaConfig'; -import { OktaLogin } from '../screens/OktaLogin'; +import { OktaLogin } from '../screens/OktaRedirectLogin'; const oktaAuth = new OktaAuth(oktaConfig as OktaAuthOptions); diff --git a/login-workflow/example/src/screens/OktaLogin.tsx b/login-workflow/example/src/screens/OktaRedirectLogin.tsx similarity index 82% rename from login-workflow/example/src/screens/OktaLogin.tsx rename to login-workflow/example/src/screens/OktaRedirectLogin.tsx index 5e2f0a01..8bf58bf0 100644 --- a/login-workflow/example/src/screens/OktaLogin.tsx +++ b/login-workflow/example/src/screens/OktaRedirectLogin.tsx @@ -1,10 +1,10 @@ import React from 'react'; -import { OktaLoginScreen } from '@brightlayer-ui/react-auth-workflow'; +import { OktaRedirectLoginScreen } from '@brightlayer-ui/react-auth-workflow'; import EatonLogo from '../assets/images/eaton_stacked_logo.png'; import { DebugComponent } from '../components/DebugComponent'; export const OktaLogin = (): JSX.Element => ( - } header={} errorDisplayConfig={{ diff --git a/login-workflow/src/screens/OktaLoginScreen/index.ts b/login-workflow/src/screens/OktaLoginScreen/index.ts deleted file mode 100644 index a01310ef..00000000 --- a/login-workflow/src/screens/OktaLoginScreen/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './OktaLoginScreenBase'; -export * from './OktaLoginScreen'; diff --git a/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreen.test.tsx b/login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreen.test.tsx similarity index 91% rename from login-workflow/src/screens/OktaLoginScreen/OktaLoginScreen.test.tsx rename to login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreen.test.tsx index 627df63d..4d708355 100644 --- a/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreen.test.tsx +++ b/login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreen.test.tsx @@ -1,19 +1,19 @@ import React from 'react'; import { render, screen, fireEvent, waitFor, act, RenderResult } from '@testing-library/react'; import '@testing-library/jest-dom'; -import { OktaLoginScreen } from './OktaLoginScreen'; +import { OktaRedirectLoginScreen } from './OktaRedirectLoginScreen'; import { useOktaAuth } from '@okta/okta-react'; import { useTranslation } from 'react-i18next'; import { useAuthContext } from '../../contexts'; import { useErrorManager } from '../../contexts/ErrorContext/useErrorManager'; -import { OktaLoginScreenProps } from './types'; +import { OktaRedirectLoginScreenProps } from './types'; jest.mock('@okta/okta-react'); jest.mock('react-i18next'); jest.mock('../../contexts'); jest.mock('../../contexts/ErrorContext/useErrorManager'); -describe('OktaLoginScreen', () => { +describe('OktaRedirectLoginScreen', () => { const mockSignInWithRedirect = jest.fn(); const mockTriggerError = jest.fn(); const mockNavigate = jest.fn(); @@ -38,7 +38,7 @@ describe('OktaLoginScreen', () => { jest.clearAllMocks(); }); - const renderer = (props?: OktaLoginScreenProps): RenderResult => render(); + const renderer = (props?: OktaRedirectLoginScreenProps): RenderResult => render(); it('renders without crashing', () => { renderer(); diff --git a/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreen.tsx b/login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreen.tsx similarity index 90% rename from login-workflow/src/screens/OktaLoginScreen/OktaLoginScreen.tsx rename to login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreen.tsx index d2524493..2e593409 100644 --- a/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreen.tsx +++ b/login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreen.tsx @@ -1,20 +1,20 @@ import React, { useEffect, useState } from 'react'; import { useOktaAuth } from '@okta/okta-react'; import { useTranslation } from 'react-i18next'; -import { OktaLoginScreenBase } from './OktaLoginScreenBase'; -import { OktaLoginScreenProps } from './types'; +import { OktaRedirectLoginScreenBase } from './OktaRedirectLoginScreenBase'; +import { OktaRedirectLoginScreenProps } from './types'; import { useAuthContext } from '../../contexts'; import { useErrorManager } from '../../contexts/ErrorContext/useErrorManager'; /** * Component that renders an okta login screen. * - * @param {OktaLoginScreenProps} props - props of OktaLoginScreen + * @param {OktaRedirectLoginScreenProps} props - props of OktaRedirectLoginScreen * * @category Component */ -export const OktaLoginScreen: React.FC = (props) => { +export const OktaRedirectLoginScreen: React.FC = (props) => { const { authState, oktaAuth } = useOktaAuth(); const [isLoading, setIsLoading] = useState(!authState); const { triggerError, errorManagerConfig } = useErrorManager(); @@ -65,7 +65,7 @@ export const OktaLoginScreen: React.FC = (props) => { }; return ( - ({ useOktaAuth: jest.fn(), @@ -13,7 +13,7 @@ jest.mock('@okta/okta-react', () => ({ const mockSignInWithRedirect = jest.fn(); const mockOnContactSupport = jest.fn(); -describe('OktaLoginScreenBase', () => { +describe('OktaRedirectLoginScreenBase', () => { afterEach(() => { jest.clearAllMocks(); }); @@ -24,7 +24,7 @@ describe('OktaLoginScreenBase', () => { }); }); - const renderer = (props?: OktaLoginScreenProps): RenderResult => render(); + const renderer = (props?: OktaRedirectLoginScreenProps): RenderResult => render(); it('renders correctly', () => { renderer({ header: Test Header }); diff --git a/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreenBase.tsx b/login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreenBase.tsx similarity index 93% rename from login-workflow/src/screens/OktaLoginScreen/OktaLoginScreenBase.tsx rename to login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreenBase.tsx index 2ab22753..5b4fc372 100644 --- a/login-workflow/src/screens/OktaLoginScreen/OktaLoginScreenBase.tsx +++ b/login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreenBase.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { OktaLoginScreenProps } from './types'; +import { OktaRedirectLoginScreenProps } from './types'; import { WorkflowCard } from '../../components/WorkflowCard'; import { WorkflowCardBody } from '../../components/WorkflowCard/WorkflowCardBody'; import { Box, Button, Typography } from '@mui/material'; @@ -7,9 +7,9 @@ import ErrorManager from '../../components/Error/ErrorManager'; import { LinkStyles } from '../../styles'; import cyberSecurityBadge from '../../assets/images/cybersecurity_certified.png'; import { unstable_composeClasses as composeClasses } from '@mui/base'; -import { getOktaLoginScreenUtilityClass, OktaLoginScreenClassKey } from './utilityClasses'; +import { getOktaRedirectLoginScreenUtilityClass, OktaRedirectLoginScreenClassKey } from './utilityClasses'; -const useUtilityClasses = (ownerState: OktaLoginScreenProps): Record => { +const useUtilityClasses = (ownerState: OktaRedirectLoginScreenProps): Record => { const { classes } = ownerState; const slots = { @@ -28,18 +28,18 @@ const useUtilityClasses = (ownerState: OktaLoginScreenProps): Record = (props) => { +export const OktaRedirectLoginScreenBase: React.FC = (props) => { const defaultClasses = useUtilityClasses(props); const { diff --git a/login-workflow/src/screens/OktaRedirectLoginScreen/index.ts b/login-workflow/src/screens/OktaRedirectLoginScreen/index.ts new file mode 100644 index 00000000..db77cd83 --- /dev/null +++ b/login-workflow/src/screens/OktaRedirectLoginScreen/index.ts @@ -0,0 +1,2 @@ +export * from './OktaRedirectLoginScreenBase'; +export * from './OktaRedirectLoginScreen'; diff --git a/login-workflow/src/screens/OktaLoginScreen/types.ts b/login-workflow/src/screens/OktaRedirectLoginScreen/types.ts similarity index 96% rename from login-workflow/src/screens/OktaLoginScreen/types.ts rename to login-workflow/src/screens/OktaRedirectLoginScreen/types.ts index dc041d04..81d47ef5 100644 --- a/login-workflow/src/screens/OktaLoginScreen/types.ts +++ b/login-workflow/src/screens/OktaRedirectLoginScreen/types.ts @@ -1,7 +1,7 @@ import { WorkflowCardBaseProps } from '../../components/WorkflowCard/WorkflowCard.types'; import { ErrorManagerProps } from '../../components/Error/types'; -export type OktaLoginScreenProps = WorkflowCardBaseProps & { +export type OktaRedirectLoginScreenProps = WorkflowCardBaseProps & { /** * The label for the username field */ diff --git a/login-workflow/src/screens/OktaLoginScreen/utilityClasses.ts b/login-workflow/src/screens/OktaRedirectLoginScreen/utilityClasses.ts similarity index 65% rename from login-workflow/src/screens/OktaLoginScreen/utilityClasses.ts rename to login-workflow/src/screens/OktaRedirectLoginScreen/utilityClasses.ts index 152c7114..4c3d596e 100644 --- a/login-workflow/src/screens/OktaLoginScreen/utilityClasses.ts +++ b/login-workflow/src/screens/OktaRedirectLoginScreen/utilityClasses.ts @@ -1,6 +1,6 @@ import generateUtilityClass from '@mui/material/generateUtilityClass'; -export type OktaLoginScreenClasses = { +export type OktaRedirectLoginScreenClasses = { root?: string; projectImageWrapper?: string; loginButtonWrapper?: string; @@ -16,8 +16,8 @@ export type OktaLoginScreenClasses = { cyberSecurityBadge?: string; }; -export type OktaLoginScreenClassKey = keyof OktaLoginScreenClasses; +export type OktaRedirectLoginScreenClassKey = keyof OktaRedirectLoginScreenClasses; -export function getOktaLoginScreenUtilityClass(slot: string): string { - return generateUtilityClass('BluiOktaLogin', slot); +export function getOktaRedirectLoginScreenUtilityClass(slot: string): string { + return generateUtilityClass('BluiOktaRedirectLogin', slot); } diff --git a/login-workflow/src/screens/index.ts b/login-workflow/src/screens/index.ts index f6279187..dee704b1 100644 --- a/login-workflow/src/screens/index.ts +++ b/login-workflow/src/screens/index.ts @@ -13,4 +13,4 @@ export * from './ForgotPasswordScreen'; export * from './ContactScreen'; export * from './RegistrationSuccessScreen'; export * from './ExistingAccountSuccessScreen'; -export * from './OktaLoginScreen'; +export * from './OktaRedirectLoginScreen'; From 1074bb2c2f3c739b9d94f0e3515ecfc1728dfa96 Mon Sep 17 00:00:00 2001 From: Suraj Karambe Date: Fri, 23 Aug 2024 19:28:37 +0530 Subject: [PATCH 64/90] Ran prettier --- .../OktaAuthContext/OktaAuthDictionaries/chinese.ts | 6 +++--- .../OktaAuthContext/OktaAuthDictionaries/english.ts | 4 ++-- .../OktaAuthContext/OktaAuthDictionaries/french.ts | 2 +- .../OktaAuthContext/OktaAuthDictionaries/portuguese.ts | 4 ++-- .../OktaAuthContext/OktaAuthDictionaries/spanish.ts | 2 +- .../OktaAuthContext/OktaAuthDictionaries/types.ts | 8 ++++---- login-workflow/src/contexts/index.ts | 2 +- .../OktaRedirectLoginScreen.test.tsx | 3 ++- .../OktaRedirectLoginScreenBase.test.tsx | 3 ++- .../OktaRedirectLoginScreenBase.tsx | 4 +++- 10 files changed, 21 insertions(+), 17 deletions(-) diff --git a/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/chinese.ts b/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/chinese.ts index cda37c3d..622f69fa 100644 --- a/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/chinese.ts +++ b/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/chinese.ts @@ -2,9 +2,9 @@ import { OktaAuthLanguageFile } from './types'; const resources: OktaAuthLanguageFile = { translation: { - ACTIONS: { - OKTA_LOG_IN: '使用 Okta 登录', - } + ACTIONS: { + OKTA_LOG_IN: '使用 Okta 登录', + }, }, }; export default resources; diff --git a/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/english.ts b/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/english.ts index 464a8501..d3e134df 100644 --- a/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/english.ts +++ b/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/english.ts @@ -3,8 +3,8 @@ import { OktaAuthLanguageFile } from './types'; const resources: OktaAuthLanguageFile = { translation: { ACTIONS: { - OKTA_LOG_IN: 'Sign In With Okta' - } + OKTA_LOG_IN: 'Sign In With Okta', + }, }, }; export default resources; diff --git a/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/french.ts b/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/french.ts index 914fb44e..cae5370f 100644 --- a/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/french.ts +++ b/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/french.ts @@ -4,7 +4,7 @@ const resources: OktaAuthLanguageFile = { translation: { ACTIONS: { OKTA_LOG_IN: 'Se connecter avec Okta', - } + }, }, }; export default resources; diff --git a/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/portuguese.ts b/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/portuguese.ts index c36b0abd..a76e961d 100644 --- a/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/portuguese.ts +++ b/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/portuguese.ts @@ -4,7 +4,7 @@ const resources: OktaAuthLanguageFile = { translation: { ACTIONS: { OKTA_LOG_IN: 'Iniciar Sessão com Okta', - } - }, + }, + }, }; export default resources; diff --git a/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/spanish.ts b/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/spanish.ts index bf479857..19a8d564 100644 --- a/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/spanish.ts +++ b/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/spanish.ts @@ -4,7 +4,7 @@ const resources: OktaAuthLanguageFile = { translation: { ACTIONS: { OKTA_LOG_IN: 'Iniciar sesión con Okta', - } + }, }, }; export default resources; diff --git a/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/types.ts b/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/types.ts index 5783bbdc..8cef44a7 100644 --- a/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/types.ts +++ b/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/types.ts @@ -1,9 +1,9 @@ export type OktaAuthTranslations = { - ACTIONS: { + ACTIONS: { OKTA_LOG_IN: string; - }; - } - + }; +}; + export type OktaAuthLanguageFile = { translation: OktaAuthTranslations; }; diff --git a/login-workflow/src/contexts/index.ts b/login-workflow/src/contexts/index.ts index cc6c0a5d..bdc7aa6f 100644 --- a/login-workflow/src/contexts/index.ts +++ b/login-workflow/src/contexts/index.ts @@ -1,4 +1,4 @@ export * from './RegistrationWorkflowContext'; export * from './AuthContext'; export * from './RegistrationContext'; -export * from './OktaAuthContext'; \ No newline at end of file +export * from './OktaAuthContext'; diff --git a/login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreen.test.tsx b/login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreen.test.tsx index 4d708355..1d468555 100644 --- a/login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreen.test.tsx +++ b/login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreen.test.tsx @@ -38,7 +38,8 @@ describe('OktaRedirectLoginScreen', () => { jest.clearAllMocks(); }); - const renderer = (props?: OktaRedirectLoginScreenProps): RenderResult => render(); + const renderer = (props?: OktaRedirectLoginScreenProps): RenderResult => + render(); it('renders without crashing', () => { renderer(); diff --git a/login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreenBase.test.tsx b/login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreenBase.test.tsx index d119f8a3..6c802c7b 100644 --- a/login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreenBase.test.tsx +++ b/login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreenBase.test.tsx @@ -24,7 +24,8 @@ describe('OktaRedirectLoginScreenBase', () => { }); }); - const renderer = (props?: OktaRedirectLoginScreenProps): RenderResult => render(); + const renderer = (props?: OktaRedirectLoginScreenProps): RenderResult => + render(); it('renders correctly', () => { renderer({ header: Test Header }); diff --git a/login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreenBase.tsx b/login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreenBase.tsx index 5b4fc372..373b37b0 100644 --- a/login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreenBase.tsx +++ b/login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreenBase.tsx @@ -9,7 +9,9 @@ import cyberSecurityBadge from '../../assets/images/cybersecurity_certified.png' import { unstable_composeClasses as composeClasses } from '@mui/base'; import { getOktaRedirectLoginScreenUtilityClass, OktaRedirectLoginScreenClassKey } from './utilityClasses'; -const useUtilityClasses = (ownerState: OktaRedirectLoginScreenProps): Record => { +const useUtilityClasses = ( + ownerState: OktaRedirectLoginScreenProps +): Record => { const { classes } = ownerState; const slots = { From 514d9d51302b2f50d018a49b0cbe87d5fa33b01f Mon Sep 17 00:00:00 2001 From: Suraj Karambe Date: Fri, 23 Aug 2024 19:44:30 +0530 Subject: [PATCH 65/90] updated test --- .../OktaAuthContext/OktaAuthContextProvider.test.tsx | 6 +++--- .../OktaRedirectLoginScreen.test.tsx | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/login-workflow/src/contexts/OktaAuthContext/OktaAuthContextProvider.test.tsx b/login-workflow/src/contexts/OktaAuthContext/OktaAuthContextProvider.test.tsx index 0366c50b..4467acfd 100644 --- a/login-workflow/src/contexts/OktaAuthContext/OktaAuthContextProvider.test.tsx +++ b/login-workflow/src/contexts/OktaAuthContext/OktaAuthContextProvider.test.tsx @@ -2,7 +2,7 @@ import React from 'react'; import { render, cleanup, screen, renderHook } from '@testing-library/react'; import '@testing-library/jest-dom'; import { OktaAuthContextProvider } from './provider'; -import { useAuthContext } from '.'; +import { useOktaAuthContext } from '.'; import { authContextProviderProps } from '../../testUtils'; afterEach(cleanup); @@ -18,7 +18,7 @@ describe('OktaAuthContextProvider', () => { const wrapper = ({ children }: any): JSX.Element => ( {children} ); - const { result } = renderHook(() => useAuthContext(), { wrapper }); + const { result } = renderHook(() => useOktaAuthContext(), { wrapper }); expect(result.current.language).toBe('en'); }); @@ -29,7 +29,7 @@ describe('OktaAuthContextProvider', () => { {children} ); - const { result } = renderHook(() => useAuthContext(), { wrapper }); + const { result } = renderHook(() => useOktaAuthContext(), { wrapper }); expect(result.current.language).not.toBe('en'); expect(result.current.language).toBe('es'); diff --git a/login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreen.test.tsx b/login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreen.test.tsx index 1d468555..79c2aeb1 100644 --- a/login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreen.test.tsx +++ b/login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreen.test.tsx @@ -43,19 +43,19 @@ describe('OktaRedirectLoginScreen', () => { it('renders without crashing', () => { renderer(); - expect(screen.getByText('bluiCommon:ACTIONS.OKTA_LOG_IN')).toBeInTheDocument(); + expect(screen.getByText('bluiOktaAuth:ACTIONS.OKTA_LOG_IN')).toBeInTheDocument(); }); it('renders login button with correct label', () => { renderer(); - expect(screen.getByRole('button', { name: 'bluiCommon:ACTIONS.OKTA_LOG_IN' })).toBeInTheDocument(); + expect(screen.getByRole('button', { name: 'bluiOktaAuth:ACTIONS.OKTA_LOG_IN' })).toBeInTheDocument(); }); it('handles login error correctly', async () => { mockSignInWithRedirect.mockRejectedValueOnce(new Error('Login error')); renderer(); - const loginButton = screen.getByRole('button', { name: 'bluiCommon:ACTIONS.OKTA_LOG_IN' }); + const loginButton = screen.getByRole('button', { name: 'bluiOktaAuth:ACTIONS.OKTA_LOG_IN' }); act(() => { fireEvent.click(loginButton); From 6b305ad618d563b0ceccc7b14f6977addcae093e Mon Sep 17 00:00:00 2001 From: JeffGreiner-eaton <119693939+JeffGreiner-eaton@users.noreply.github.com> Date: Fri, 23 Aug 2024 13:52:26 -0400 Subject: [PATCH 66/90] Update login-workflow/docs/authentication-workflow.md Co-authored-by: Joseph Boyle --- login-workflow/docs/authentication-workflow.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/login-workflow/docs/authentication-workflow.md b/login-workflow/docs/authentication-workflow.md index d3f8f668..2f5abf76 100644 --- a/login-workflow/docs/authentication-workflow.md +++ b/login-workflow/docs/authentication-workflow.md @@ -6,7 +6,7 @@ This guide covers two approaches for implementing login/authentication workflows ## Okta Approach -The Okta approach leverages Okta's identity and access management services to handle user authentication. This workflow includes screens related to user authentication such as Okta Redirect Login, Forgot Password, Reset Password, etc. By integrating with Okta, you can offload the complexities of authentication and focus on building your application. +The Okta approach leverages Okta's identity and access management services to handle user authentication, including login and password management. By integrating with Okta, you can offload the complexities of authentication and focus on building your application. ### OktaAuthContextProvider From f96ffecdf7f2fdcb1695aaed7b53f2d5bb7e181f Mon Sep 17 00:00:00 2001 From: JeffGreiner-eaton <119693939+JeffGreiner-eaton@users.noreply.github.com> Date: Fri, 23 Aug 2024 13:52:38 -0400 Subject: [PATCH 67/90] Update login-workflow/docs/authentication-workflow.md Co-authored-by: Joseph Boyle --- login-workflow/docs/authentication-workflow.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/login-workflow/docs/authentication-workflow.md b/login-workflow/docs/authentication-workflow.md index 2f5abf76..26e14833 100644 --- a/login-workflow/docs/authentication-workflow.md +++ b/login-workflow/docs/authentication-workflow.md @@ -10,7 +10,7 @@ The Okta approach leverages Okta's identity and access management services to ha ### OktaAuthContextProvider -The screens in this workflow access shared data / configuration / API definitions through an `OktaAuthContextProvider` which should wrap all of the relevant routes / screens. +The login screen in this workflow accesses shared data / configuration / API definitions through an `OktaAuthContextProvider` which should wrap the screen. We recommend using Okta to manage the additional password-related screens (Forgot / Reset / Change), but if you prefer to use those screens from this workflow, you'll need to wrap those screens with the `AuthContextProvider` (see custom workflow below). You must supply the `OktaAuthContextProvider` with the following props / data: - `language`: configures the language displayed on the screens From 9ebab4bc52bbfc6ce08a5e874f63d95d7cacdee3 Mon Sep 17 00:00:00 2001 From: JeffGreiner-eaton <119693939+JeffGreiner-eaton@users.noreply.github.com> Date: Fri, 23 Aug 2024 13:52:55 -0400 Subject: [PATCH 68/90] Update login-workflow/docs/routing.md Co-authored-by: Joseph Boyle --- login-workflow/docs/routing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/login-workflow/docs/routing.md b/login-workflow/docs/routing.md index ca9e9d8d..2126a9f0 100644 --- a/login-workflow/docs/routing.md +++ b/login-workflow/docs/routing.md @@ -8,7 +8,7 @@ Because this workflow package is router-agnostic, you will be required to set up You will also want to set up Auth/Guest Guard wrappers to control which users can access which screens / routes. For more information see [Protecting Routes](#protecting-routes) below. -### Authentication +### Authentication (Okta Redirect) The **Authentication** workflow screens are rendered individually on separate routes (e.g., the Okta Redirect Login screen is on '/login' and the support screen is on '/support'). This means you can deep-link to any of these screens directly if you have them configured. From 258e239cde43eb3e3bf09ba06c3710282f962773 Mon Sep 17 00:00:00 2001 From: Suraj Karambe Date: Sat, 24 Aug 2024 00:21:57 +0530 Subject: [PATCH 69/90] Review changes - Removed okta dictionary --- .../docs/authentication-workflow.md | 14 +--- login-workflow/docs/routing.md | 51 +++-------- .../OktaAuthDictionaries/chinese.ts | 10 --- .../OktaAuthDictionaries/english.ts | 10 --- .../OktaAuthDictionaries/french.ts | 10 --- .../OktaAuthDictionaries/index.ts | 19 ----- .../OktaAuthDictionaries/portuguese.ts | 10 --- .../OktaAuthDictionaries/spanish.ts | 10 --- .../OktaAuthDictionaries/types.ts | 9 -- .../OktaAuthContext/i18nOktaAuthInstance.ts | 84 ------------------- .../src/contexts/OktaAuthContext/index.ts | 4 +- .../contexts/SharedDictionaries/chinese.ts | 1 + .../contexts/SharedDictionaries/english.ts | 1 + .../src/contexts/SharedDictionaries/french.ts | 1 + .../contexts/SharedDictionaries/portuguese.ts | 1 + .../contexts/SharedDictionaries/spanish.ts | 1 + .../src/contexts/SharedDictionaries/types.ts | 1 + .../OktaRedirectLoginScreen.tsx | 2 +- 18 files changed, 22 insertions(+), 217 deletions(-) delete mode 100644 login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/chinese.ts delete mode 100644 login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/english.ts delete mode 100644 login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/french.ts delete mode 100644 login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/index.ts delete mode 100644 login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/portuguese.ts delete mode 100644 login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/spanish.ts delete mode 100644 login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/types.ts delete mode 100644 login-workflow/src/contexts/OktaAuthContext/i18nOktaAuthInstance.ts diff --git a/login-workflow/docs/authentication-workflow.md b/login-workflow/docs/authentication-workflow.md index d3f8f668..40fb735c 100644 --- a/login-workflow/docs/authentication-workflow.md +++ b/login-workflow/docs/authentication-workflow.md @@ -17,7 +17,7 @@ You must supply the `OktaAuthContextProvider` with the following props / data: - `navigate`: a function that can be called to navigate to a new route - `routeConfig`: an object describing the URLs you are using for the relevant routes so the workflow can correctly navigate between screens -More information about the required and optional props can found in the [API](#okta-auth-context-provider) section. +More information about the required and optional props can found in the [API](#okta-auth-context-provider-api) section. ### Example @@ -27,7 +27,6 @@ Each feature/screen from the Okta Auth Workflow that you wish to use should be r ```tsx - {/* Wrap all routes in a single shared OktaAuthContextProvider */} - + } - > - {/* Routes for each workflow screen you want to include */} - - - - - - ... + /> ``` diff --git a/login-workflow/docs/routing.md b/login-workflow/docs/routing.md index ca9e9d8d..226f6d40 100644 --- a/login-workflow/docs/routing.md +++ b/login-workflow/docs/routing.md @@ -62,48 +62,19 @@ export const AppRouter: React.FC = () => { - - - } - > - + + - - } - /> - - - - } - /> - - - - } - /> - - } - /> - + + + } + /> ); diff --git a/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/chinese.ts b/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/chinese.ts deleted file mode 100644 index 622f69fa..00000000 --- a/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/chinese.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { OktaAuthLanguageFile } from './types'; - -const resources: OktaAuthLanguageFile = { - translation: { - ACTIONS: { - OKTA_LOG_IN: '使用 Okta 登录', - }, - }, -}; -export default resources; diff --git a/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/english.ts b/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/english.ts deleted file mode 100644 index d3e134df..00000000 --- a/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/english.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { OktaAuthLanguageFile } from './types'; - -const resources: OktaAuthLanguageFile = { - translation: { - ACTIONS: { - OKTA_LOG_IN: 'Sign In With Okta', - }, - }, -}; -export default resources; diff --git a/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/french.ts b/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/french.ts deleted file mode 100644 index cae5370f..00000000 --- a/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/french.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { OktaAuthLanguageFile } from './types'; - -const resources: OktaAuthLanguageFile = { - translation: { - ACTIONS: { - OKTA_LOG_IN: 'Se connecter avec Okta', - }, - }, -}; -export default resources; diff --git a/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/index.ts b/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/index.ts deleted file mode 100644 index 24aee28d..00000000 --- a/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/index.ts +++ /dev/null @@ -1,19 +0,0 @@ -import english from './english'; -import french from './french'; -import spanish from './spanish'; -import chinese from './chinese'; -import portuguese from './portuguese'; - -export { default as english } from './english'; -export { default as french } from './french'; -export { default as spanish } from './spanish'; -export { default as chinese } from './chinese'; -export { default as portuguese } from './portuguese'; - -export const OktaAuthDictionaries = { - english: english, - french: french, - spanish: spanish, - chinese: chinese, - portuguese: portuguese, -}; diff --git a/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/portuguese.ts b/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/portuguese.ts deleted file mode 100644 index a76e961d..00000000 --- a/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/portuguese.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { OktaAuthLanguageFile } from './types'; - -const resources: OktaAuthLanguageFile = { - translation: { - ACTIONS: { - OKTA_LOG_IN: 'Iniciar Sessão com Okta', - }, - }, -}; -export default resources; diff --git a/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/spanish.ts b/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/spanish.ts deleted file mode 100644 index 19a8d564..00000000 --- a/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/spanish.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { OktaAuthLanguageFile } from './types'; - -const resources: OktaAuthLanguageFile = { - translation: { - ACTIONS: { - OKTA_LOG_IN: 'Iniciar sesión con Okta', - }, - }, -}; -export default resources; diff --git a/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/types.ts b/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/types.ts deleted file mode 100644 index 8cef44a7..00000000 --- a/login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/types.ts +++ /dev/null @@ -1,9 +0,0 @@ -export type OktaAuthTranslations = { - ACTIONS: { - OKTA_LOG_IN: string; - }; -}; - -export type OktaAuthLanguageFile = { - translation: OktaAuthTranslations; -}; diff --git a/login-workflow/src/contexts/OktaAuthContext/i18nOktaAuthInstance.ts b/login-workflow/src/contexts/OktaAuthContext/i18nOktaAuthInstance.ts deleted file mode 100644 index 3c689437..00000000 --- a/login-workflow/src/contexts/OktaAuthContext/i18nOktaAuthInstance.ts +++ /dev/null @@ -1,84 +0,0 @@ -import i18next from 'i18next'; -import { AuthDictionaries } from '../AuthContext/AuthDictionaries'; -import { SharedDictionaries } from '../SharedDictionaries'; -import { OktaAuthDictionaries } from './OktaAuthDictionaries'; - -export const i18nOktaAuthInstance = i18next.createInstance( - { - fallbackLng: 'en', - ns: ['bluiAuth', 'bluiCommon', 'bluiOktaAuth'], - defaultNS: 'bluiOktaAuth', - load: 'languageOnly', - detection: { - order: ['querystring', 'localStorage', 'navigator'], - caches: ['localStorage'], - }, - react: { useSuspense: false }, - interpolation: { escapeValue: false }, - resources: { - en: { - bluiAuth: { - ...AuthDictionaries.english.translation, - }, - bluiCommon: { - ...SharedDictionaries.english.translation, - }, - bluiOktaAuth: { - ...OktaAuthDictionaries.english.translation, - }, - }, - fr: { - bluiAuth: { - ...AuthDictionaries.french.translation, - }, - bluiCommon: { - ...SharedDictionaries.french.translation, - }, - bluiOktaAuth: { - ...OktaAuthDictionaries.french.translation, - }, - }, - es: { - bluiAuth: { - ...AuthDictionaries.spanish.translation, - }, - bluiCommon: { - ...SharedDictionaries.spanish.translation, - }, - bluiOktaAuth: { - ...OktaAuthDictionaries.spanish.translation, - }, - }, - zh: { - bluiAuth: { - ...AuthDictionaries.chinese.translation, - }, - bluiCommon: { - ...SharedDictionaries.chinese.translation, - }, - bluiOktaAuth: { - ...OktaAuthDictionaries.chinese.translation, - }, - }, - pt: { - bluiAuth: { - ...AuthDictionaries.portuguese.translation, - }, - bluiCommon: { - ...SharedDictionaries.portuguese.translation, - }, - bluiOktaAuth: { - ...OktaAuthDictionaries.portuguese.translation, - }, - }, - }, - }, - // We must provide a function as second parameter, otherwise i18next errors - // eslint-disable-next-line @typescript-eslint/no-unused-vars - (err, _t) => { - // eslint-disable-next-line no-console - if (err) return console.log(err); - } -); - -export default { i18nOktaAuthInstance }; diff --git a/login-workflow/src/contexts/OktaAuthContext/index.ts b/login-workflow/src/contexts/OktaAuthContext/index.ts index 2b3fac1f..a4524f62 100644 --- a/login-workflow/src/contexts/OktaAuthContext/index.ts +++ b/login-workflow/src/contexts/OktaAuthContext/index.ts @@ -1,9 +1,7 @@ import { useContext } from 'react'; import { OktaAuthContext } from './context'; -import i18nOktaAuthInstance from './i18nOktaAuthInstance'; import { OktaAuthContextProvider } from './provider'; import { OktaAuthContextProviderProps } from './types'; -import { OktaAuthDictionaries } from './OktaAuthDictionaries'; /** * Hook to get top level data in okta authentication workflow @@ -22,4 +20,4 @@ export const useOktaAuthContext = (): OktaAuthContextProviderProps => { export type { OktaAuthContextProviderProps }; -export { OktaAuthContext, OktaAuthContextProvider, i18nOktaAuthInstance, OktaAuthDictionaries }; +export { OktaAuthContext, OktaAuthContextProvider }; diff --git a/login-workflow/src/contexts/SharedDictionaries/chinese.ts b/login-workflow/src/contexts/SharedDictionaries/chinese.ts index 0f0fcbf0..f66852e7 100644 --- a/login-workflow/src/contexts/SharedDictionaries/chinese.ts +++ b/login-workflow/src/contexts/SharedDictionaries/chinese.ts @@ -12,6 +12,7 @@ const resources: CommonTranslationsFile = { DONE: '完成', CONTINUE: '继续', LOG_IN: '登录', + OKTA_LOG_IN: '使用 Okta 登录', LOG_OUT: '登出', CLICK_BUTTON: '点击按钮', UPDATE_REDUX: '点击按钮以更新redux中存的值', diff --git a/login-workflow/src/contexts/SharedDictionaries/english.ts b/login-workflow/src/contexts/SharedDictionaries/english.ts index 0f58e9b6..681187f3 100644 --- a/login-workflow/src/contexts/SharedDictionaries/english.ts +++ b/login-workflow/src/contexts/SharedDictionaries/english.ts @@ -12,6 +12,7 @@ const resources: CommonTranslationsFile = { CONTINUE: 'Continue', DONE: 'Done', LOG_IN: 'Log In', + OKTA_LOG_IN: 'Sign In With Okta', LOG_OUT: 'Log Out', CLICK_BUTTON: 'Click the button', UPDATE_REDUX: 'Click the button to update the redux store value!', diff --git a/login-workflow/src/contexts/SharedDictionaries/french.ts b/login-workflow/src/contexts/SharedDictionaries/french.ts index b1673fc6..0375aaad 100644 --- a/login-workflow/src/contexts/SharedDictionaries/french.ts +++ b/login-workflow/src/contexts/SharedDictionaries/french.ts @@ -12,6 +12,7 @@ const resources: CommonTranslationsFile = { CONTINUE: 'Continuer', DONE: 'Terminé', LOG_IN: "S'identifier", + OKTA_LOG_IN: 'Se connecter avec Okta', LOG_OUT: 'Se déconnecter', CLICK_BUTTON: 'Cliquez sur le bouton', UPDATE_REDUX: 'Cliquez sur le bouton pour mettre à jour la valeur du magasin redux!', diff --git a/login-workflow/src/contexts/SharedDictionaries/portuguese.ts b/login-workflow/src/contexts/SharedDictionaries/portuguese.ts index 95b96337..a80ac61d 100644 --- a/login-workflow/src/contexts/SharedDictionaries/portuguese.ts +++ b/login-workflow/src/contexts/SharedDictionaries/portuguese.ts @@ -12,6 +12,7 @@ const resources: CommonTranslationsFile = { CONTINUE: 'Continuar', DONE: 'Concluir', LOG_IN: 'Iniciar Sessão', + OKTA_LOG_IN: 'Iniciar Sessão com Okta', LOG_OUT: 'Terminar Sessão', CLICK_BUTTON: 'Clique no botão', UPDATE_REDUX: 'Clique no botão para atualizar o valor de armazenamento redux!', diff --git a/login-workflow/src/contexts/SharedDictionaries/spanish.ts b/login-workflow/src/contexts/SharedDictionaries/spanish.ts index 94cbd241..be0aef30 100644 --- a/login-workflow/src/contexts/SharedDictionaries/spanish.ts +++ b/login-workflow/src/contexts/SharedDictionaries/spanish.ts @@ -12,6 +12,7 @@ const resources: CommonTranslationsFile = { CONTINUE: 'Seguir', DONE: 'Hecho', LOG_IN: 'Iniciar sesión', + OKTA_LOG_IN: 'Iniciar sesión con Okta', LOG_OUT: 'Cerrar sesión', CLICK_BUTTON: '¡Haga clic en el botón', UPDATE_REDUX: '¡Haga clic en el botón para actualizar el valor de la tienda redux!', diff --git a/login-workflow/src/contexts/SharedDictionaries/types.ts b/login-workflow/src/contexts/SharedDictionaries/types.ts index 3df7ae57..b7d6fa02 100644 --- a/login-workflow/src/contexts/SharedDictionaries/types.ts +++ b/login-workflow/src/contexts/SharedDictionaries/types.ts @@ -9,6 +9,7 @@ export type CommonTranslations = { CONTINUE: string; DONE: string; LOG_IN: string; + OKTA_LOG_IN: string; LOG_OUT: string; CLICK_BUTTON: string; UPDATE_REDUX: string; diff --git a/login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreen.tsx b/login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreen.tsx index 2e593409..777bb897 100644 --- a/login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreen.tsx +++ b/login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreen.tsx @@ -30,7 +30,7 @@ export const OktaRedirectLoginScreen: React.FC = ( }, }; const { - loginButtonLabel = t('bluiOktaAuth:ACTIONS.OKTA_LOG_IN'), + loginButtonLabel = t('bluiCommon:ACTIONS.OKTA_LOG_IN'), showForgotPassword = true, forgotPasswordLabel = t('bluiCommon:LABELS.FORGOT_PASSWORD'), onForgotPassword = (): void => navigate(routeConfig.FORGOT_PASSWORD as string), From d4a29ca62e693c47136bc382e2a3e92d93255582 Mon Sep 17 00:00:00 2001 From: Suraj Karambe Date: Sat, 24 Aug 2024 00:39:03 +0530 Subject: [PATCH 70/90] Fixed lint errors --- .../src/contexts/OktaAuthContext/provider.tsx | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/login-workflow/src/contexts/OktaAuthContext/provider.tsx b/login-workflow/src/contexts/OktaAuthContext/provider.tsx index f527d575..047b18e9 100644 --- a/login-workflow/src/contexts/OktaAuthContext/provider.tsx +++ b/login-workflow/src/contexts/OktaAuthContext/provider.tsx @@ -7,12 +7,11 @@ import React, { useEffect } from 'react'; import { OktaAuthContextProviderProps } from './types'; import { OktaAuthContext } from './context'; import { I18nextProvider, useTranslation } from 'react-i18next'; -import { i18nOktaAuthInstance } from './i18nOktaAuthInstance'; import { ErrorContext } from '../ErrorContext'; -import { OktaAuthDictionaries } from './OktaAuthDictionaries'; import { AuthDictionaries } from '../AuthContext/AuthDictionaries'; import { SharedDictionaries } from '../SharedDictionaries'; import { ErrorManagerProps } from '../../components/Error/types'; +import { i18nAuthInstance } from '../AuthContext/i18nAuthInstance'; const OktaAuthContextProviderContent: React.FC< React.PropsWithChildren & { PasswordDialog?: JSX.Element }> @@ -40,24 +39,19 @@ const OktaAuthContextProviderContent: React.FC< export const OktaAuthContextProvider: React.FC< React.PropsWithChildren > = (props) => { - const i18nInstance = props.i18n ?? i18nOktaAuthInstance; + const i18nInstance = props.i18n ?? i18nAuthInstance; const { language, i18n = i18nInstance, children, ...other } = props; if (props.i18n) { i18n.addResourceBundle('zh', 'bluiAuth', AuthDictionaries.chinese.translation, true, false); - i18n.addResourceBundle('zh', 'bluiOktaAuth', OktaAuthDictionaries.chinese.translation, true, false); i18n.addResourceBundle('zh', 'bluiCommon', SharedDictionaries.chinese.translation, true, false); i18n.addResourceBundle('zh', 'bluiAuth', AuthDictionaries.english.translation, true, false); - i18n.addResourceBundle('en', 'bluiOktaAuth', OktaAuthDictionaries.english.translation, true, false); i18n.addResourceBundle('en', 'bluiCommon', SharedDictionaries.english.translation, true, false); i18n.addResourceBundle('zh', 'bluiAuth', AuthDictionaries.french.translation, true, false); - i18n.addResourceBundle('fr', 'bluiOktaAuth', OktaAuthDictionaries.french.translation, true, false); i18n.addResourceBundle('fr', 'bluiCommon', SharedDictionaries.french.translation, true, false); i18n.addResourceBundle('zh', 'bluiAuth', AuthDictionaries.portuguese.translation, true, false); - i18n.addResourceBundle('pt', 'bluiOktaAuth', OktaAuthDictionaries.portuguese.translation, true, false); i18n.addResourceBundle('pt', 'bluiCommon', SharedDictionaries.portuguese.translation, true, false); i18n.addResourceBundle('zh', 'bluiAuth', AuthDictionaries.spanish.translation, true, false); - i18n.addResourceBundle('es', 'bluiOktaAuth', OktaAuthDictionaries.spanish.translation, true, false); i18n.addResourceBundle('es', 'bluiCommon', SharedDictionaries.spanish.translation, true, false); } From 237c4eaaa316a715637bd573abfeab31def5aafd Mon Sep 17 00:00:00 2001 From: Suraj Karambe Date: Sat, 24 Aug 2024 00:41:34 +0530 Subject: [PATCH 71/90] Updated tests --- .../OktaRedirectLoginScreen.test.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreen.test.tsx b/login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreen.test.tsx index 79c2aeb1..1d468555 100644 --- a/login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreen.test.tsx +++ b/login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreen.test.tsx @@ -43,19 +43,19 @@ describe('OktaRedirectLoginScreen', () => { it('renders without crashing', () => { renderer(); - expect(screen.getByText('bluiOktaAuth:ACTIONS.OKTA_LOG_IN')).toBeInTheDocument(); + expect(screen.getByText('bluiCommon:ACTIONS.OKTA_LOG_IN')).toBeInTheDocument(); }); it('renders login button with correct label', () => { renderer(); - expect(screen.getByRole('button', { name: 'bluiOktaAuth:ACTIONS.OKTA_LOG_IN' })).toBeInTheDocument(); + expect(screen.getByRole('button', { name: 'bluiCommon:ACTIONS.OKTA_LOG_IN' })).toBeInTheDocument(); }); it('handles login error correctly', async () => { mockSignInWithRedirect.mockRejectedValueOnce(new Error('Login error')); renderer(); - const loginButton = screen.getByRole('button', { name: 'bluiOktaAuth:ACTIONS.OKTA_LOG_IN' }); + const loginButton = screen.getByRole('button', { name: 'bluiCommon:ACTIONS.OKTA_LOG_IN' }); act(() => { fireEvent.click(loginButton); From 9b02ff487dfd749bf4e88d4c7304f88093eb8cbb Mon Sep 17 00:00:00 2001 From: Suraj Karambe Date: Sat, 24 Aug 2024 00:47:12 +0530 Subject: [PATCH 72/90] Fixed markdown heading in auth workflow --- login-workflow/docs/authentication-workflow.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/login-workflow/docs/authentication-workflow.md b/login-workflow/docs/authentication-workflow.md index 887b76da..57ea70bd 100644 --- a/login-workflow/docs/authentication-workflow.md +++ b/login-workflow/docs/authentication-workflow.md @@ -120,7 +120,7 @@ For a detailed explanation of setting up routes, see the [Routing](./routing.md) ### Auth Context Provider API -### AuthContextProviderProps +#### AuthContextProviderProps | Prop Name | Type | Description | Default | |---|---|---|---| From 858bfb9398507a5793288276754b4dc61756fc0f Mon Sep 17 00:00:00 2001 From: Komal Dhere Date: Mon, 26 Aug 2024 18:05:33 +0530 Subject: [PATCH 73/90] updated changeLog --- login-workflow/CHANGELOG.md | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/login-workflow/CHANGELOG.md b/login-workflow/CHANGELOG.md index fcf6bd10..a32c7743 100644 --- a/login-workflow/CHANGELOG.md +++ b/login-workflow/CHANGELOG.md @@ -9,14 +9,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added -- Reusable okta login screen. -- Error Manager for ChangePasswordDialog ([#612](https://github.com/etn-ccis/blui-react-workflows/issues/612)). -- Reload EULA should not be tied to checkbox status ([#549](https://github.com/etn-ccis/blui-react-workflows/issues/549)). -- Eliminate `WorkflowCardFinishState` and introduce `EmptyStateProps` in the success screen. ([#552](https://github.com/etn-ccis/blui-react-workflows/issues/552)). -- Updated password validation callaback function.([#560]https://github.com/etn-ccis/blui-react-workflows/issues/560). -- SX Style overrides on full screens([#599](https://github.com/etn-ccis/blui-react-workflows/issues/599)). +- Reusable okta login screen. +- Error Manager for ChangePasswordDialog ([#612](https://github.com/etn-ccis/blui-react-workflows/issues/612)). - Added BLUI class names for ChangePasswordDialog ([#600](https://github.com/etn-ccis/blui-react-workflows/issues/600)). +### Changed + +- Reload EULA should not be tied to checkbox status ([#549](https://github.com/etn-ccis/blui-react-workflows/issues/549)). +- Eliminate `WorkflowCardFinishState` and introduce `EmptyStateProps` in the success screen([#552](https://github.com/etn-ccis/blui-react-workflows/issues/552)). +- Updated password validation callaback function ([#560]https://github.com/etn-ccis/blui-react-workflows/issues/560). +- SX Style overrides on full screens ([#599](https://github.com/etn-ccis/blui-react-workflows/issues/599)). + ## v4.0.3 (May 9, 2024) From 65512c53aa75e6b19423c16f055cd877d9bc22c7 Mon Sep 17 00:00:00 2001 From: Joseph Boyle Date: Mon, 26 Aug 2024 10:29:21 -0400 Subject: [PATCH 74/90] Update login-workflow/CHANGELOG.md --- login-workflow/CHANGELOG.md | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/login-workflow/CHANGELOG.md b/login-workflow/CHANGELOG.md index a32c7743..78737cf7 100644 --- a/login-workflow/CHANGELOG.md +++ b/login-workflow/CHANGELOG.md @@ -9,16 +9,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added -- Reusable okta login screen. +- Okta redirect-compatible login screen. - Error Manager for ChangePasswordDialog ([#612](https://github.com/etn-ccis/blui-react-workflows/issues/612)). -- Added BLUI class names for ChangePasswordDialog ([#600](https://github.com/etn-ccis/blui-react-workflows/issues/600)). +- BLUI class names for ChangePasswordDialog ([#600](https://github.com/etn-ccis/blui-react-workflows/issues/600)). +- SX style overrides on full screens ([#599](https://github.com/etn-ccis/blui-react-workflows/issues/599)). -### Changed +### Fixed - Reload EULA should not be tied to checkbox status ([#549](https://github.com/etn-ccis/blui-react-workflows/issues/549)). +- Updated password validation callback function ([#560]https://github.com/etn-ccis/blui-react-workflows/issues/560). + +### Changed + - Eliminate `WorkflowCardFinishState` and introduce `EmptyStateProps` in the success screen([#552](https://github.com/etn-ccis/blui-react-workflows/issues/552)). -- Updated password validation callaback function ([#560]https://github.com/etn-ccis/blui-react-workflows/issues/560). -- SX Style overrides on full screens ([#599](https://github.com/etn-ccis/blui-react-workflows/issues/599)). ## v4.0.3 (May 9, 2024) From a76cdef3053b9f41713e36584a59c05a12710d8c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 26 Aug 2024 14:31:14 +0000 Subject: [PATCH 75/90] Bump micromatch from 4.0.5 to 4.0.8 in /login-workflow/example-vite Bumps [micromatch](https://github.com/micromatch/micromatch) from 4.0.5 to 4.0.8. - [Release notes](https://github.com/micromatch/micromatch/releases) - [Changelog](https://github.com/micromatch/micromatch/blob/4.0.8/CHANGELOG.md) - [Commits](https://github.com/micromatch/micromatch/compare/4.0.5...4.0.8) --- updated-dependencies: - dependency-name: micromatch dependency-type: indirect ... Signed-off-by: dependabot[bot] --- login-workflow/example-vite/yarn.lock | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/login-workflow/example-vite/yarn.lock b/login-workflow/example-vite/yarn.lock index 85302501..2b66ae02 100644 --- a/login-workflow/example-vite/yarn.lock +++ b/login-workflow/example-vite/yarn.lock @@ -3927,7 +3927,7 @@ brace-expansion@^2.0.1: dependencies: balanced-match "^1.0.0" -braces@^3.0.2, braces@~3.0.2: +braces@^3.0.3, braces@~3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== @@ -7966,11 +7966,11 @@ methods@~1.1.2: integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: - version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" - integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + version "4.0.8" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" + integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== dependencies: - braces "^3.0.2" + braces "^3.0.3" picomatch "^2.3.1" mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": From 430c08b0c7e366ce1563782019a8cb9cd3b078df Mon Sep 17 00:00:00 2001 From: Suraj Karambe Date: Tue, 27 Aug 2024 15:21:06 +0530 Subject: [PATCH 76/90] Removed error config from okta login --- login-workflow/docs/routing.md | 2 +- login-workflow/docs/screens/okta-login.md | 3 +- .../example/src/screens/OktaRedirectLogin.tsx | 7 ---- login-workflow/package.json | 2 +- .../OktaRedirectLoginScreen.tsx | 15 ++----- .../OktaRedirectLoginScreenBase.tsx | 42 +++++++++---------- .../screens/OktaRedirectLoginScreen/types.ts | 6 --- 7 files changed, 25 insertions(+), 52 deletions(-) diff --git a/login-workflow/docs/routing.md b/login-workflow/docs/routing.md index 9485e33f..fe009a28 100644 --- a/login-workflow/docs/routing.md +++ b/login-workflow/docs/routing.md @@ -10,7 +10,7 @@ You will also want to set up Auth/Guest Guard wrappers to control which users ca ### Authentication (Okta Redirect) -The **Authentication** workflow screens are rendered individually on separate routes (e.g., the Okta Redirect Login screen is on '/login' and the support screen is on '/support'). This means you can deep-link to any of these screens directly if you have them configured. +The **Authentication** workflow screens are rendered individually on separate routes (e.g., the Okta Redirect Login screen is on '/login'). This means you can deep-link to any of these screens directly if you have them configured. You have to add a `Security` component as a wrapper to the `Routes` from [@okta/okta-react](https://www.npmjs.com/package/@okta/okta-react) package. This component initializes the Okta authentication context and provides methods to interact with Okta. diff --git a/login-workflow/docs/screens/okta-login.md b/login-workflow/docs/screens/okta-login.md index 6b62b8fb..c15d1f98 100644 --- a/login-workflow/docs/screens/okta-login.md +++ b/login-workflow/docs/screens/okta-login.md @@ -1,6 +1,6 @@ # OktaRedirectLoginScreen -The `OktaRedirectLoginScreen` component is a part of the login workflow and is used to render a login screen that integrates with Okta for authentication. The OktaRedirectLoginScreen must be used within an `AuthContextProvider` +The `OktaRedirectLoginScreen` component is a part of the login workflow and is used to render a login screen that integrates with Okta for authentication. The OktaRedirectLoginScreen must be used within an `OktaAuthContextProvider` ![Okta Login](../../media/screens/okta-login.png) @@ -30,7 +30,6 @@ import { OktaRedirectLoginScreen } from '@brightlayer-ui/react-auth-workflow'; | showContactSupport | `boolean` | Whether or not to show the 'contact support' link. | `true` | | contactSupportLabel | `string` | Label for the 'contact support' link. | `t('bluiCommon:MESSAGES.CONTACT')` | | onContactSupport | `() => void` | Callback function that is called when the 'contact support' link is clicked. | | -| errorDisplayConfig | `ErrorManagerProps` | See [Error Management](../error-management.md) | | | showCyberSecurityBadge | `boolean` | Whether or not to show the cyber security badge. | `true` | | projectImage | `ReactNode` | Image to display at the top of the screen. | | | header | `ReactNode` | Custom content to display at the top of the screen. | | diff --git a/login-workflow/example/src/screens/OktaRedirectLogin.tsx b/login-workflow/example/src/screens/OktaRedirectLogin.tsx index 8bf58bf0..0c3cb4f0 100644 --- a/login-workflow/example/src/screens/OktaRedirectLogin.tsx +++ b/login-workflow/example/src/screens/OktaRedirectLogin.tsx @@ -7,12 +7,5 @@ export const OktaLogin = (): JSX.Element => ( } header={} - errorDisplayConfig={{ - mode: 'message-box', - messageBoxConfig: { - dismissible: true, - position: 'top', - }, - }} /> ); diff --git a/login-workflow/package.json b/login-workflow/package.json index 728d3f7a..689ea9ea 100644 --- a/login-workflow/package.json +++ b/login-workflow/package.json @@ -1,6 +1,6 @@ { "name": "@brightlayer-ui/react-auth-workflow", - "version": "5.0.0-beta.0", + "version": "5.0.0-beta.1", "author": "Brightlayer UI (https://github.com/brightlayer-ui)", "license": "BSD-3-Clause", "description": "Re-usable workflow components for Authentication and Registration within Eaton applications.", diff --git a/login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreen.tsx b/login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreen.tsx index 777bb897..af98981e 100644 --- a/login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreen.tsx +++ b/login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreen.tsx @@ -4,7 +4,6 @@ import { useTranslation } from 'react-i18next'; import { OktaRedirectLoginScreenBase } from './OktaRedirectLoginScreenBase'; import { OktaRedirectLoginScreenProps } from './types'; import { useAuthContext } from '../../contexts'; -import { useErrorManager } from '../../contexts/ErrorContext/useErrorManager'; /** * Component that renders an okta login screen. @@ -17,18 +16,10 @@ import { useErrorManager } from '../../contexts/ErrorContext/useErrorManager'; export const OktaRedirectLoginScreen: React.FC = (props) => { const { authState, oktaAuth } = useOktaAuth(); const [isLoading, setIsLoading] = useState(!authState); - const { triggerError, errorManagerConfig } = useErrorManager(); const { t } = useTranslation(); const auth = useAuthContext(); const { navigate, routeConfig } = auth; - const errorDisplayConfig = { - ...errorManagerConfig, - ...props.errorDisplayConfig, - onClose: (): void => { - if (props.errorDisplayConfig && props.errorDisplayConfig.onClose) props.errorDisplayConfig.onClose(); - if (errorManagerConfig.onClose) errorManagerConfig?.onClose(); - }, - }; + const { loginButtonLabel = t('bluiCommon:ACTIONS.OKTA_LOG_IN'), showForgotPassword = true, @@ -58,7 +49,8 @@ export const OktaRedirectLoginScreen: React.FC = ( await oktaAuth.signInWithRedirect(); await props.onLogin?.(); } catch (_error) { - triggerError(_error as Error); + // eslint-disable-next-line no-console + console.log(_error as Error); } finally { setIsLoading(false); } @@ -79,7 +71,6 @@ export const OktaRedirectLoginScreen: React.FC = ( showContactSupport={showContactSupport} contactSupportLabel={contactSupportLabel} onContactSupport={onContactSupport} - errorDisplayConfig={errorDisplayConfig} showCyberSecurityBadge={showCyberSecurityBadge} projectImage={projectImage} header={header} diff --git a/login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreenBase.tsx b/login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreenBase.tsx index 373b37b0..07c31a2a 100644 --- a/login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreenBase.tsx +++ b/login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreenBase.tsx @@ -3,7 +3,6 @@ import { OktaRedirectLoginScreenProps } from './types'; import { WorkflowCard } from '../../components/WorkflowCard'; import { WorkflowCardBody } from '../../components/WorkflowCard/WorkflowCardBody'; import { Box, Button, Typography } from '@mui/material'; -import ErrorManager from '../../components/Error/ErrorManager'; import { LinkStyles } from '../../styles'; import cyberSecurityBadge from '../../assets/images/cybersecurity_certified.png'; import { unstable_composeClasses as composeClasses } from '@mui/base'; @@ -47,7 +46,6 @@ export const OktaRedirectLoginScreenBase: React.FC const { header, projectImage, - errorDisplayConfig, loginButtonLabel, onLogin, showForgotPassword, @@ -101,30 +99,28 @@ export const OktaRedirectLoginScreenBase: React.FC {projectImage}

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%0A}f7 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 E25{*gJpcdz literal 0 HcmV?d00001 diff --git a/login-workflow/src/screens/OktaLoginScreen/types.ts b/login-workflow/src/screens/OktaLoginScreen/types.ts index b46fe758..dc041d04 100644 --- a/login-workflow/src/screens/OktaLoginScreen/types.ts +++ b/login-workflow/src/screens/OktaLoginScreen/types.ts @@ -1,13 +1,7 @@ import { WorkflowCardBaseProps } from '../../components/WorkflowCard/WorkflowCard.types'; import { ErrorManagerProps } from '../../components/Error/types'; -import { OktaAuthOptions } from '@okta/okta-auth-js'; export type OktaLoginScreenProps = WorkflowCardBaseProps & { - /** - * Options for configuring the Okta Auth SDK. - */ - oktaAuthOptions?: OktaAuthOptions; - /** * The label for the username field */ From 0a771a70ddcbbd70875d4abcb31b72de7c8326c0 Mon Sep 17 00:00:00 2001 From: Suraj Karambe Date: Tue, 20 Aug 2024 15:14:20 +0530 Subject: [PATCH 54/90] Updated example readme for okta login usage --- login-workflow/example/.env.sample | 2 ++ login-workflow/example/README.md | 12 ++++++++++++ 2 files changed, 14 insertions(+) create mode 100644 login-workflow/example/.env.sample diff --git a/login-workflow/example/.env.sample b/login-workflow/example/.env.sample new file mode 100644 index 00000000..f879d04f --- /dev/null +++ b/login-workflow/example/.env.sample @@ -0,0 +1,2 @@ +REACT_APP_OKTA_CLIENT_ID= +REACT_APP_OKTA_ISSUER= \ No newline at end of file diff --git a/login-workflow/example/README.md b/login-workflow/example/README.md index b6b40e3d..a162fb80 100644 --- a/login-workflow/example/README.md +++ b/login-workflow/example/README.md @@ -2,6 +2,18 @@ This project is a sample that demonstrates how to use [@brightlayer-ui/react-aut It was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). +This project now includes an Okta login screen for authentication. To use the Okta login screen, you need to configure your Okta application and update the environment variables in your project. + +## Okta Configuration + +1. Create an application in Okta. +2. Update the `.env` file in your project directory with the following variables: + ``` + REACT_APP_OKTA_CLIENT_ID= + REACT_APP_OKTA_ISSUER= + ``` +**Note: The Okta login screen will be automatically presented to the user if they are not authenticated. The user can log in using their Okta credentials. Once authenticated, they will be redirected to the Home screen.** + ## Available Scripts In the project directory, you can run: From 18d5924d20085155426b6957ee0ba1c25cdf2ed6 Mon Sep 17 00:00:00 2001 From: Suraj Karambe Date: Thu, 22 Aug 2024 13:48:41 +0530 Subject: [PATCH 55/90] Updated package version and changelog --- login-workflow/CHANGELOG.md | 5 +++-- login-workflow/package.json | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/login-workflow/CHANGELOG.md b/login-workflow/CHANGELOG.md index 33c3347c..614d2a89 100644 --- a/login-workflow/CHANGELOG.md +++ b/login-workflow/CHANGELOG.md @@ -5,11 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## v4.0.4 (Unreleased) +## v4.1.0 (Unreleased) ### Added -- Error Manager for ChangePasswordDialog ([#612](https://github.com/etn-ccis/blui-react-workflows/issues/612)) +- Reusable okta login screen. +- Error Manager for ChangePasswordDialog ([#612](https://github.com/etn-ccis/blui-react-workflows/issues/612)). ## v4.0.3 (May 9, 2024) diff --git a/login-workflow/package.json b/login-workflow/package.json index a294bae0..45cc2d29 100644 --- a/login-workflow/package.json +++ b/login-workflow/package.json @@ -1,6 +1,6 @@ { "name": "@brightlayer-ui/react-auth-workflow", - "version": "4.0.3", + "version": "4.1.0-beta.0", "author": "Brightlayer UI (https://github.com/brightlayer-ui)", "license": "BSD-3-Clause", "description": "Re-usable workflow components for Authentication and Registration within Eaton applications.", From 0312193f4b6b75f35615ff09c71b917d36c5c094 Mon Sep 17 00:00:00 2001 From: Komal Dhere Date: Thu, 22 Aug 2024 15:41:37 +0530 Subject: [PATCH 56/90] updated changelog.md --- login-workflow/CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/login-workflow/CHANGELOG.md b/login-workflow/CHANGELOG.md index 614d2a89..e1aa691a 100644 --- a/login-workflow/CHANGELOG.md +++ b/login-workflow/CHANGELOG.md @@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Reusable okta login screen. - Error Manager for ChangePasswordDialog ([#612](https://github.com/etn-ccis/blui-react-workflows/issues/612)). +- updated Readme title ([#593](https://github.com/etn-ccis/blui-react-workflows/issues/593)). ## v4.0.3 (May 9, 2024) From fa26f315d6c5110feb5d1416c0fa0c219a461768 Mon Sep 17 00:00:00 2001 From: Komal Dhere Date: Fri, 23 Aug 2024 11:14:32 +0530 Subject: [PATCH 57/90] updated changelog nd readme --- login-workflow/CHANGELOG.md | 7 ++++++- login-workflow/docs/components/change-password-dialog.md | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/login-workflow/CHANGELOG.md b/login-workflow/CHANGELOG.md index e1aa691a..b116e87e 100644 --- a/login-workflow/CHANGELOG.md +++ b/login-workflow/CHANGELOG.md @@ -11,7 +11,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Reusable okta login screen. - Error Manager for ChangePasswordDialog ([#612](https://github.com/etn-ccis/blui-react-workflows/issues/612)). -- updated Readme title ([#593](https://github.com/etn-ccis/blui-react-workflows/issues/593)). +- Reload EULA should not be tied to checkbox status ([#549](https://github.com/etn-ccis/blui-react-workflows/issues/549)). +- Eliminate `WorkflowCardFinishState` and introduce `EmptyStateProps` in the success screen. ([#552](https://github.com/etn-ccis/blui-react-workflows/issues/552)). +- Updated password validation callaback function.([#560]https://github.com/etn-ccis/blui-react-workflows/issues/560). +- SX Style overrides on full screens([#599](https://github.com/etn-ccis/blui-react-workflows/issues/599)). +- Added BLUI class names for ChangePasswordDialog ([#600](https://github.com/etn-ccis/blui-react-workflows/issues/600)). + ## v4.0.3 (May 9, 2024) diff --git a/login-workflow/docs/components/change-password-dialog.md b/login-workflow/docs/components/change-password-dialog.md index e48ac212..0217d7a7 100644 --- a/login-workflow/docs/components/change-password-dialog.md +++ b/login-workflow/docs/components/change-password-dialog.md @@ -35,6 +35,7 @@ import { AuthContextProvider, ChangePasswordDialog } from '@brightlayer-ui/react | showSuccessScreen | `boolean` | Used to determine whether to show a success screen after the form is submitted. | | | slots | `ChangePasswordDialogSlots` | Components to use in place of the defaults. See [ChangePasswordDialogSlots](#changepassworddialogslots) | | | slotProps | `ChangePasswordDialogSlotsProps` | Props to pass to the custom slot components. See [ChangePasswordDialogSlotsProps](#changepassworddialogslotsprops) | | +| errorDisplayConfig | `ErrorManagerProps` | See [Error Management](../error-management.md) | | ### ChangePasswordDialogSlots From 86cee3f0411a3614a3fa2671ca48b7322d99ddd9 Mon Sep 17 00:00:00 2001 From: Komal Dhere Date: Fri, 23 Aug 2024 17:41:22 +0530 Subject: [PATCH 58/90] updated migration guide --- login-workflow/docs/migration-guide-4-5.md | 33 ++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 login-workflow/docs/migration-guide-4-5.md diff --git a/login-workflow/docs/migration-guide-4-5.md b/login-workflow/docs/migration-guide-4-5.md new file mode 100644 index 00000000..9906e310 --- /dev/null +++ b/login-workflow/docs/migration-guide-4-5.md @@ -0,0 +1,33 @@ +# Migration Guide: v4.x => v5.x + +## Change Password Dialog prop update + +We have removed `errorDialogProps` from change password dialog props and added `errorDisplayConfig` of error manager prop type. + +To trigger the ErrorManager to display an error, you need to throw an error in your AuthUIAction. + +```tsx +// throw a basic error +throw new Error('My Custom Error'); + +// customize the title via the cause property +throw new Error('My Custom Error', { + cause: { + title: 'Custom Title', + errorMessage: 'My custom error message', + }, +}); + + +``` + +Refer to the [Example](../example/) application for detailed reference. From aa23ff2296e894780dcf981c0728bdb890e9e242 Mon Sep 17 00:00:00 2001 From: KomalGDhere-eaton <107686155+KomalGDhere-eaton@users.noreply.github.com> Date: Fri, 23 Aug 2024 17:49:41 +0530 Subject: [PATCH 59/90] Update CHANGELOG.md --- login-workflow/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/login-workflow/CHANGELOG.md b/login-workflow/CHANGELOG.md index b116e87e..fcf6bd10 100644 --- a/login-workflow/CHANGELOG.md +++ b/login-workflow/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## v4.1.0 (Unreleased) +## v5.0.0 (Unreleased) ### Added From 7ef7fe922ef51537225e62a1b55837df901027b1 Mon Sep 17 00:00:00 2001 From: KomalGDhere-eaton <107686155+KomalGDhere-eaton@users.noreply.github.com> Date: Fri, 23 Aug 2024 17:52:10 +0530 Subject: [PATCH 60/90] Update package.json --- login-workflow/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/login-workflow/package.json b/login-workflow/package.json index 45cc2d29..728d3f7a 100644 --- a/login-workflow/package.json +++ b/login-workflow/package.json @@ -1,6 +1,6 @@ { "name": "@brightlayer-ui/react-auth-workflow", - "version": "4.1.0-beta.0", + "version": "5.0.0-beta.0", "author": "Brightlayer UI (https://github.com/brightlayer-ui)", "license": "BSD-3-Clause", "description": "Re-usable workflow components for Authentication and Registration within Eaton applications.", From 9fe91a73069963c0d50a49a9a50a0dae8720fdb1 Mon Sep 17 00:00:00 2001 From: Suraj Karambe Date: Fri, 23 Aug 2024 19:15:41 +0530 Subject: [PATCH 61/90] Updated readme about okta login and example --- login-workflow/README.md | 2 +- .../docs/authentication-workflow.md | 77 ++++++++++++- login-workflow/docs/routing.md | 106 +++++++++++++++++- .../example/src/navigation/AppRouter.tsx | 10 +- .../OktaAuthContextProvider.test.tsx | 49 ++++++++ .../OktaAuthDictionaries/chinese.ts | 10 ++ .../OktaAuthDictionaries/english.ts | 10 ++ .../OktaAuthDictionaries/french.ts | 10 ++ .../OktaAuthDictionaries/index.ts | 19 ++++ .../OktaAuthDictionaries/portuguese.ts | 10 ++ .../OktaAuthDictionaries/spanish.ts | 10 ++ .../OktaAuthDictionaries/types.ts | 9 ++ .../src/contexts/OktaAuthContext/context.ts | 11 ++ .../OktaAuthContext/i18nOktaAuthInstance.ts | 84 ++++++++++++++ .../src/contexts/OktaAuthContext/index.ts | 25 +++++ .../src/contexts/OktaAuthContext/provider.tsx | 75 +++++++++++++ .../src/contexts/OktaAuthContext/types.ts | 35 ++++++ .../contexts/SharedDictionaries/chinese.ts | 1 - .../contexts/SharedDictionaries/english.ts | 1 - .../src/contexts/SharedDictionaries/french.ts | 1 - .../contexts/SharedDictionaries/portuguese.ts | 1 - .../contexts/SharedDictionaries/spanish.ts | 1 - .../src/contexts/SharedDictionaries/types.ts | 1 - login-workflow/src/contexts/index.ts | 1 + .../OktaLoginScreen/OktaLoginScreen.tsx | 2 +- 25 files changed, 544 insertions(+), 17 deletions(-) create mode 100644 login-workflow/src/contexts/OktaAuthContext/OktaAuthContextProvider.test.tsx create mode 100644 login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/chinese.ts create mode 100644 login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/english.ts create mode 100644 login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/french.ts create mode 100644 login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/index.ts create mode 100644 login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/portuguese.ts create mode 100644 login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/spanish.ts create mode 100644 login-workflow/src/contexts/OktaAuthContext/OktaAuthDictionaries/types.ts create mode 100644 login-workflow/src/contexts/OktaAuthContext/context.ts create mode 100644 login-workflow/src/contexts/OktaAuthContext/i18nOktaAuthInstance.ts create mode 100644 login-workflow/src/contexts/OktaAuthContext/index.ts create mode 100644 login-workflow/src/contexts/OktaAuthContext/provider.tsx create mode 100644 login-workflow/src/contexts/OktaAuthContext/types.ts diff --git a/login-workflow/README.md b/login-workflow/README.md index 302adb57..0289d7d5 100644 --- a/login-workflow/README.md +++ b/login-workflow/README.md @@ -6,7 +6,7 @@ The React Auth Workflow package provides a consistent UI implementation of authe The package is intended to provide a standard, out-of-the-box experience for capabilities such as: -- Okta Login +- Okta Login (Recommended) - Login - Forgot / Reset Password - Change Password diff --git a/login-workflow/docs/authentication-workflow.md b/login-workflow/docs/authentication-workflow.md index cbb7e3ab..d3f8f668 100644 --- a/login-workflow/docs/authentication-workflow.md +++ b/login-workflow/docs/authentication-workflow.md @@ -2,8 +2,73 @@ The authentication workflow includes screens related to user authentication including Login, Forgot Password, Reset Password, etc. +This guide covers two approaches for implementing login/authentication workflows: Okta and Custom Login. -## AuthContextProvider + +## Okta Approach +The Okta approach leverages Okta's identity and access management services to handle user authentication. This workflow includes screens related to user authentication such as Okta Redirect Login, Forgot Password, Reset Password, etc. By integrating with Okta, you can offload the complexities of authentication and focus on building your application. + +### OktaAuthContextProvider + +The screens in this workflow access shared data / configuration / API definitions through an `OktaAuthContextProvider` which should wrap all of the relevant routes / screens. + +You must supply the `OktaAuthContextProvider` with the following props / data: +- `language`: configures the language displayed on the screens +- `navigate`: a function that can be called to navigate to a new route +- `routeConfig`: an object describing the URLs you are using for the relevant routes so the workflow can correctly navigate between screens + +More information about the required and optional props can found in the [API](#okta-auth-context-provider) section. + +### Example + +Here is an example of how you would set up the Okta Redirect Login workflow using our recommended routing solution ([React Router](https://reactrouter.com/)). + +Each feature/screen from the Okta Auth Workflow that you wish to use should be rendered on a separate route. + +```tsx + + {/* Wrap all routes in a single shared OktaAuthContextProvider */} + + + + } + > + {/* Routes for each workflow screen you want to include */} + + + + + + ... + +``` + +For a detailed explanation of setting up routes, see the [Routing](./routing.md) guide. + +### Okta Auth Context Provider API + +### OktaAuthContextProviderProps + +| Prop Name | Type | Description | Default | +|---|---|---|---| +| language* | `string` | The language code specifying which language to use for the UI | `'en'` | +| navigate* | `(url: string) => void` | A function that is used to navigate to a new URL. This is used to navigate to the various screens of the authentication workflow. | | +| routeConfig* | `RouteConfig` | An object that defines the various routes for the authentication workflow. See [RouteConfig](#routeconfig) for more information. | | +| i18n | `i18n` | An optional i18n object that is used to translate the UI. This is only needed if you want to use custom translation keys / languages inside any of the workflow screens | | +| errorConfig | `ErrorContextProviderProps` | An object that is used to configure error handling within the workflow. See [Error Management](./error-management.md) for more information. | | + + +## Custom Login Approach + +The Custom Login approach allows you to implement your own authentication logic. This workflow includes screens related to user authentication such as Login, Forgot Password, Reset Password, etc. By implementing your own authentication logic, you have full control over the authentication process and can customize it to meet your application's needs. + +### AuthContextProvider The screens in this workflow access shared data / configuration / API definitions through an `AuthContextProvider` which should wrap all of the relevant routes / screens. @@ -15,7 +80,7 @@ You must supply the `AuthContextProvider` with the following props / data: More information about the required and optional props can found in the [API](#api) section. -## Implement AuthUIActions +### Implement AuthUIActions Because this workflow package is back-end agnostic, you must provide an implementation for what happens when the user triggers certain behaviors in the UI. @@ -27,7 +92,7 @@ The example project includes a skeleton implementation of all required functions 2. You might also want to copy over the `example/src/store` and `example/src/constants` folders, which provide a very basic mechanism for storing important data using LocalStorage - You will want to switch this out for a more secure approach before going to production with your application. -## Example +### Example Here is an example of how you would set up the Login workflow using our recommended routing solution ([React Router](https://reactrouter.com/)). @@ -61,7 +126,7 @@ Each feature/screen from the Auth Workflow that you wish to use should be render For a detailed explanation of setting up routes, see the [Routing](./routing.md) guide. -## API +### Auth Context Provider API ### AuthContextProviderProps @@ -76,7 +141,7 @@ For a detailed explanation of setting up routes, see the [Routing](./routing.md) | errorConfig | `ErrorContextProviderProps` | An object that is used to configure error handling within the workflow. See [Error Management](./error-management.md) for more information. | | -### AuthUIActions +#### AuthUIActions | Prop Name | Type | Description | Default | |---|---|---|---| @@ -87,7 +152,7 @@ For a detailed explanation of setting up routes, see the [Routing](./routing.md) | setPassword | `(code: string, password: string, email?: string) => Promise` | A function that is used to set a new password. This function will be called when the user clicks the Next button on the Reset Password screen. | | | changePassword | `(oldPassword: string, newPassword: string) => Promise` | A function that is used to change a user's password. This function will be called when the user clicks the Next button in the Change Password dialog. | | -### RouteConfig Object +#### RouteConfig Object The RouteConfig is an object that specifies the paths you are using for the routes / screens in your application to facilitate navigating between screens within the workflows. diff --git a/login-workflow/docs/routing.md b/login-workflow/docs/routing.md index 524883c6..a1bf9f22 100644 --- a/login-workflow/docs/routing.md +++ b/login-workflow/docs/routing.md @@ -10,6 +10,108 @@ You will also want to set up Auth/Guest Guard wrappers to control which users ca ### Authentication +The **Authentication** workflow screens are rendered individually on separate routes (e.g., the Okta Redirect Login screen is on '/login' and the support screen is on '/support'). This means you can deep-link to any of these screens directly if you have them configured. + +You have to add a `Security` component as a wrapper to the `Routes` from [@okta/okta-react](https://www.npmjs.com/package/@okta/okta-react) package. This component initializes the Okta authentication context and provides methods to interact with Okta. + +For more information on the `OktaAuthContextProvider` , refer to the [Authentication Workflow](./authentication-workflow.md) Guide. + +#### Example Setup + +```tsx +import React from 'react'; +import { + AuthContextProvider, + ContactSupportScreen, + ForgotPasswordScreen, + ResetPasswordScreen, + OktaLoginScreen, + ReactRouterGuestGuard, + ContactSupportScreen, +} from '@brightlayer-ui/react-auth-workflow'; +import { useNavigate } from 'react-router'; +import { ProjectAuthUIActions } from '../actions/AuthUIActions'; +import { Outlet, Route, Routes } from 'react-router-dom'; +import { Security } from '@okta/okta-react'; +import OktaAuth, { OktaAuthOptions, toRelativeUrl } from '@okta/okta-auth-js'; +import oktaConfig from '../oktaConfig'; +import { OktaLogin } from '../screens/OktaLogin'; + +export const routes: RouteConfig = { + LOGIN: '/login', + REGISTER_INVITE: '/register-by-invite?code=8k27jshInvite234Code&email=example@example.com', + REGISTER_SELF: '/self-registration', + FORGOT_PASSWORD: '/forgot-password', + RESET_PASSWORD: '/reset-password', + SUPPORT: '/support', +}; + +const oktaAuth = new OktaAuth(oktaConfig as OktaAuthOptions); + +export const AppRouter: React.FC = () => { + const navigation = useNavigate(); + const navigate = useCallback((destination: -1 | string) => { + navigation(destination as To); + }, []); + + const restoreOriginalUri = (_oktaAuth: any, originalUri: any): void => { + navigate(toRelativeUrl(originalUri || '/', window.location.origin)); + }; + + return ( + + + + + + } + > + + + + } + /> + + + + } + /> + + + + } + /> + + } + /> + + + + ); +}; +``` + +### Authentication for Custom Login + The **Authentication** workflow screens are rendered individually on separate routes (e.g., the Login screen is on '/login' and the support screen is on '/support'). This means you can deep-link to any of these screens directly if you have them configured. For more information on the `AuthContextProvider` , refer to the [Authentication Workflow](./authentication-workflow.md) Guide. @@ -23,7 +125,7 @@ import { ContactSupportScreen, ForgotPasswordScreen, ResetPasswordScreen, - OktaLoginScreen, + LoginScreen, ReactRouterGuestGuard, ContactSupportScreen, } from '@brightlayer-ui/react-auth-workflow'; @@ -69,7 +171,7 @@ export const AppRouter: React.FC = () => { path={routes.LOGIN} element={ - + } /> diff --git a/login-workflow/example/src/navigation/AppRouter.tsx b/login-workflow/example/src/navigation/AppRouter.tsx index 1e7315ac..82e00d11 100644 --- a/login-workflow/example/src/navigation/AppRouter.tsx +++ b/login-workflow/example/src/navigation/AppRouter.tsx @@ -1,6 +1,7 @@ import React, { useCallback } from 'react'; import { AuthContextProvider, + OktaAuthContextProvider, ContactSupportScreen, ReactRouterAuthGuard, ReactRouterGuestGuard, @@ -59,7 +60,14 @@ export const AppRouter: React.FC = () => { path={'/login'} element={ - + + + } /> diff --git a/login-workflow/src/contexts/OktaAuthContext/OktaAuthContextProvider.test.tsx b/login-workflow/src/contexts/OktaAuthContext/OktaAuthContextProvider.test.tsx new file mode 100644 index 00000000..0366c50b --- /dev/null +++ b/login-workflow/src/contexts/OktaAuthContext/OktaAuthContextProvider.test.tsx @@ -0,0 +1,49 @@ +import React from 'react'; +import { render, cleanup, screen, renderHook } from '@testing-library/react'; +import '@testing-library/jest-dom'; +import { OktaAuthContextProvider } from './provider'; +import { useAuthContext } from '.'; +import { authContextProviderProps } from '../../testUtils'; + +afterEach(cleanup); + +describe('OktaAuthContextProvider', () => { + it('should render OktaAuthContextProvider without crashing', () => { + render(Hello Auth); + + expect(screen.getByText('Hello Auth')).toBeInTheDocument(); + }); + + it('should read values from the context', () => { + const wrapper = ({ children }: any): JSX.Element => ( + {children} + ); + const { result } = renderHook(() => useAuthContext(), { wrapper }); + + expect(result.current.language).toBe('en'); + }); + + it('should set values in the context', () => { + const wrapper = ({ children }: any): JSX.Element => ( + + {children} + + ); + const { result } = renderHook(() => useAuthContext(), { wrapper }); + + expect(result.current.language).not.toBe('en'); + expect(result.current.language).toBe('es'); + }); + + it('should render multiple children', () => { + render( + +

- - + - - + {loginButtonLabel || 'Sign In With Okta'} + + {showForgotPassword && ( void; - /** - * The configuration for customizing how errors are displayed - */ - errorDisplayConfig?: ErrorManagerProps; - /** * whether or not to show the cyber security badge */ From 8df838b3358686f84d114bbd898cfdbbef44aaa6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 27 Aug 2024 16:36:41 +0000 Subject: [PATCH 77/90] Bump micromatch from 4.0.5 to 4.0.8 in /login-workflow Bumps [micromatch](https://github.com/micromatch/micromatch) from 4.0.5 to 4.0.8. - [Release notes](https://github.com/micromatch/micromatch/releases) - [Changelog](https://github.com/micromatch/micromatch/blob/master/CHANGELOG.md) - [Commits](https://github.com/micromatch/micromatch/compare/4.0.5...4.0.8) --- updated-dependencies: - dependency-name: micromatch dependency-type: indirect ... Signed-off-by: dependabot[bot] --- login-workflow/yarn.lock | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/login-workflow/yarn.lock b/login-workflow/yarn.lock index 5f8473ce..850ecc64 100644 --- a/login-workflow/yarn.lock +++ b/login-workflow/yarn.lock @@ -3127,7 +3127,7 @@ brace-expansion@^2.0.1: dependencies: balanced-match "^1.0.0" -braces@^3.0.2, braces@~3.0.2: +braces@^3.0.3, braces@~3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== @@ -6934,11 +6934,11 @@ methods@~1.1.2: integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== micromatch@^4.0.4: - version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" - integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + version "4.0.8" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" + integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== dependencies: - braces "^3.0.2" + braces "^3.0.3" picomatch "^2.3.1" mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": From 5769295503db3be255778d52304df89ba6849163 Mon Sep 17 00:00:00 2001 From: Suraj Karambe Date: Wed, 28 Aug 2024 10:38:47 +0530 Subject: [PATCH 78/90] Added deep link to okta auth context provider --- login-workflow/docs/routing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/login-workflow/docs/routing.md b/login-workflow/docs/routing.md index fe009a28..7971e258 100644 --- a/login-workflow/docs/routing.md +++ b/login-workflow/docs/routing.md @@ -14,7 +14,7 @@ The **Authentication** workflow screens are rendered individually on separate ro You have to add a `Security` component as a wrapper to the `Routes` from [@okta/okta-react](https://www.npmjs.com/package/@okta/okta-react) package. This component initializes the Okta authentication context and provides methods to interact with Okta. -For more information on the `OktaAuthContextProvider` , refer to the [Authentication Workflow](./authentication-workflow.md) Guide. +For more information on the `OktaAuthContextProvider`, refer to the [Authentication Workflow](./authentication-workflow.md#OktaAuthContextProvider) Guide. #### Example Setup From e10fc4cabf4987015739a4e73926c0a164273f7c Mon Sep 17 00:00:00 2001 From: Suraj Karambe Date: Wed, 28 Aug 2024 10:44:31 +0530 Subject: [PATCH 79/90] Fixed failing test cases --- .../OktaRedirectLoginScreen.test.tsx | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreen.test.tsx b/login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreen.test.tsx index 1d468555..786f413d 100644 --- a/login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreen.test.tsx +++ b/login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreen.test.tsx @@ -51,19 +51,6 @@ describe('OktaRedirectLoginScreen', () => { expect(screen.getByRole('button', { name: 'bluiCommon:ACTIONS.OKTA_LOG_IN' })).toBeInTheDocument(); }); - it('handles login error correctly', async () => { - mockSignInWithRedirect.mockRejectedValueOnce(new Error('Login error')); - renderer(); - - const loginButton = screen.getByRole('button', { name: 'bluiCommon:ACTIONS.OKTA_LOG_IN' }); - - act(() => { - fireEvent.click(loginButton); - }); - - await waitFor(() => expect(mockTriggerError).toHaveBeenCalledWith(expect.any(Error))); - }); - it('navigates to support route when support button is clicked', () => { renderer(); From a526674dca6008b461366c3f53013d7930ebf831 Mon Sep 17 00:00:00 2001 From: Suraj Karambe Date: Wed, 28 Aug 2024 10:45:01 +0530 Subject: [PATCH 80/90] Fixed lint errors --- .../OktaRedirectLoginScreen/OktaRedirectLoginScreen.test.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreen.test.tsx b/login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreen.test.tsx index 786f413d..45e8b9a2 100644 --- a/login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreen.test.tsx +++ b/login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreen.test.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { render, screen, fireEvent, waitFor, act, RenderResult } from '@testing-library/react'; +import { render, screen, fireEvent, act, RenderResult } from '@testing-library/react'; import '@testing-library/jest-dom'; import { OktaRedirectLoginScreen } from './OktaRedirectLoginScreen'; import { useOktaAuth } from '@okta/okta-react'; From 505faefd81f44ed5013a5e4bb43c5ad21d3fa297 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 28 Aug 2024 06:42:28 +0000 Subject: [PATCH 81/90] Bump webpack from 5.90.0 to 5.94.0 in /login-workflow/example-vite Bumps [webpack](https://github.com/webpack/webpack) from 5.90.0 to 5.94.0. - [Release notes](https://github.com/webpack/webpack/releases) - [Commits](https://github.com/webpack/webpack/compare/v5.90.0...v5.94.0) --- updated-dependencies: - dependency-name: webpack dependency-type: indirect ... Signed-off-by: dependabot[bot] --- login-workflow/example-vite/yarn.lock | 155 ++++++++++++-------------- 1 file changed, 73 insertions(+), 82 deletions(-) diff --git a/login-workflow/example-vite/yarn.lock b/login-workflow/example-vite/yarn.lock index 2b66ae02..6a5409ff 100644 --- a/login-workflow/example-vite/yarn.lock +++ b/login-workflow/example-vite/yarn.lock @@ -2667,15 +2667,7 @@ dependencies: "@types/node" "*" -"@types/eslint-scope@^3.7.3": - version "3.7.7" - resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5" - integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== - dependencies: - "@types/eslint" "*" - "@types/estree" "*" - -"@types/eslint@*", "@types/eslint@^7.29.0 || ^8.4.1": +"@types/eslint@^7.29.0 || ^8.4.1": version "8.56.2" resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.56.2.tgz#1c72a9b794aa26a8b94ad26d5b9aa51c8a6384bb" integrity sha512-uQDwm1wFHmbBbCZCqAlq6Do9LYwByNZHWzXppSnay9SuwJ+VRbjkbLABer54kcPnMSlG6Fdiy2yaFXm/z9Z5gw== @@ -3165,10 +3157,10 @@ "@types/babel__core" "^7.20.5" react-refresh "^0.14.0" -"@webassemblyjs/ast@1.11.6", "@webassemblyjs/ast@^1.11.5": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.6.tgz#db046555d3c413f8966ca50a95176a0e2c642e24" - integrity sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q== +"@webassemblyjs/ast@1.12.1", "@webassemblyjs/ast@^1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.12.1.tgz#bb16a0e8b1914f979f45864c23819cc3e3f0d4bb" + integrity sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg== dependencies: "@webassemblyjs/helper-numbers" "1.11.6" "@webassemblyjs/helper-wasm-bytecode" "1.11.6" @@ -3183,10 +3175,10 @@ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz#6132f68c4acd59dcd141c44b18cbebbd9f2fa768" integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q== -"@webassemblyjs/helper-buffer@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz#b66d73c43e296fd5e88006f18524feb0f2c7c093" - integrity sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA== +"@webassemblyjs/helper-buffer@1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz#6df20d272ea5439bf20ab3492b7fb70e9bfcb3f6" + integrity sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw== "@webassemblyjs/helper-numbers@1.11.6": version "1.11.6" @@ -3202,15 +3194,15 @@ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz#bb2ebdb3b83aa26d9baad4c46d4315283acd51e9" integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA== -"@webassemblyjs/helper-wasm-section@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz#ff97f3863c55ee7f580fd5c41a381e9def4aa577" - integrity sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g== +"@webassemblyjs/helper-wasm-section@1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz#3da623233ae1a60409b509a52ade9bc22a37f7bf" + integrity sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g== dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/ast" "1.12.1" + "@webassemblyjs/helper-buffer" "1.12.1" "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/wasm-gen" "1.11.6" + "@webassemblyjs/wasm-gen" "1.12.1" "@webassemblyjs/ieee754@1.11.6": version "1.11.6" @@ -3231,59 +3223,59 @@ resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz#90f8bc34c561595fe156603be7253cdbcd0fab5a" integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA== -"@webassemblyjs/wasm-edit@^1.11.5": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz#c72fa8220524c9b416249f3d94c2958dfe70ceab" - integrity sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw== +"@webassemblyjs/wasm-edit@^1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz#9f9f3ff52a14c980939be0ef9d5df9ebc678ae3b" + integrity sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g== dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/ast" "1.12.1" + "@webassemblyjs/helper-buffer" "1.12.1" "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/helper-wasm-section" "1.11.6" - "@webassemblyjs/wasm-gen" "1.11.6" - "@webassemblyjs/wasm-opt" "1.11.6" - "@webassemblyjs/wasm-parser" "1.11.6" - "@webassemblyjs/wast-printer" "1.11.6" + "@webassemblyjs/helper-wasm-section" "1.12.1" + "@webassemblyjs/wasm-gen" "1.12.1" + "@webassemblyjs/wasm-opt" "1.12.1" + "@webassemblyjs/wasm-parser" "1.12.1" + "@webassemblyjs/wast-printer" "1.12.1" -"@webassemblyjs/wasm-gen@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz#fb5283e0e8b4551cc4e9c3c0d7184a65faf7c268" - integrity sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA== +"@webassemblyjs/wasm-gen@1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz#a6520601da1b5700448273666a71ad0a45d78547" + integrity sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w== dependencies: - "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/ast" "1.12.1" "@webassemblyjs/helper-wasm-bytecode" "1.11.6" "@webassemblyjs/ieee754" "1.11.6" "@webassemblyjs/leb128" "1.11.6" "@webassemblyjs/utf8" "1.11.6" -"@webassemblyjs/wasm-opt@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz#d9a22d651248422ca498b09aa3232a81041487c2" - integrity sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g== +"@webassemblyjs/wasm-opt@1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz#9e6e81475dfcfb62dab574ac2dda38226c232bc5" + integrity sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg== dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-buffer" "1.11.6" - "@webassemblyjs/wasm-gen" "1.11.6" - "@webassemblyjs/wasm-parser" "1.11.6" + "@webassemblyjs/ast" "1.12.1" + "@webassemblyjs/helper-buffer" "1.12.1" + "@webassemblyjs/wasm-gen" "1.12.1" + "@webassemblyjs/wasm-parser" "1.12.1" -"@webassemblyjs/wasm-parser@1.11.6", "@webassemblyjs/wasm-parser@^1.11.5": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz#bb85378c527df824004812bbdb784eea539174a1" - integrity sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ== +"@webassemblyjs/wasm-parser@1.12.1", "@webassemblyjs/wasm-parser@^1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz#c47acb90e6f083391e3fa61d113650eea1e95937" + integrity sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ== dependencies: - "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/ast" "1.12.1" "@webassemblyjs/helper-api-error" "1.11.6" "@webassemblyjs/helper-wasm-bytecode" "1.11.6" "@webassemblyjs/ieee754" "1.11.6" "@webassemblyjs/leb128" "1.11.6" "@webassemblyjs/utf8" "1.11.6" -"@webassemblyjs/wast-printer@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz#a7bf8dd7e362aeb1668ff43f35cb849f188eff20" - integrity sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A== +"@webassemblyjs/wast-printer@1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz#bcecf661d7d1abdaf989d8341a4833e33e2b31ac" + integrity sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA== dependencies: - "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/ast" "1.12.1" "@xtuc/long" "4.2.2" "@xtuc/ieee754@^1.2.0": @@ -3322,10 +3314,10 @@ acorn-globals@^6.0.0: acorn "^7.1.1" acorn-walk "^7.1.1" -acorn-import-assertions@^1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac" - integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== +acorn-import-attributes@^1.9.5: + version "1.9.5" + resolved "https://registry.yarnpkg.com/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz#7eb1557b1ba05ef18b5ed0ec67591bfab04688ef" + integrity sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ== acorn-jsx@^5.3.2: version "5.3.2" @@ -4989,10 +4981,10 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== -enhanced-resolve@^5.15.0: - version "5.15.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz#1af946c7d93603eb88e9896cee4904dc012e9c35" - integrity sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg== +enhanced-resolve@^5.17.1: + version "5.17.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz#67bfbbcc2f81d511be77d686a90267ef7f898a15" + integrity sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg== dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" @@ -5997,7 +5989,7 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" -graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -10886,10 +10878,10 @@ walker@^1.0.7, walker@^1.0.8: dependencies: makeerror "1.0.12" -watchpack@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" - integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== +watchpack@^2.4.1: + version "2.4.2" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.2.tgz#2feeaed67412e7c33184e5a79ca738fbd38564da" + integrity sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw== dependencies: glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" @@ -10993,25 +10985,24 @@ webpack-sources@^3.2.3: integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== webpack@^5.64.4: - version "5.90.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.90.0.tgz#313bfe16080d8b2fee6e29b6c986c0714ad4290e" - integrity sha512-bdmyXRCXeeNIePv6R6tGPyy20aUobw4Zy8r0LUS2EWO+U+Ke/gYDgsCh7bl5rB6jPpr4r0SZa6dPxBxLooDT3w== + version "5.94.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.94.0.tgz#77a6089c716e7ab90c1c67574a28da518a20970f" + integrity sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg== dependencies: - "@types/eslint-scope" "^3.7.3" "@types/estree" "^1.0.5" - "@webassemblyjs/ast" "^1.11.5" - "@webassemblyjs/wasm-edit" "^1.11.5" - "@webassemblyjs/wasm-parser" "^1.11.5" + "@webassemblyjs/ast" "^1.12.1" + "@webassemblyjs/wasm-edit" "^1.12.1" + "@webassemblyjs/wasm-parser" "^1.12.1" acorn "^8.7.1" - acorn-import-assertions "^1.9.0" + acorn-import-attributes "^1.9.5" browserslist "^4.21.10" chrome-trace-event "^1.0.2" - enhanced-resolve "^5.15.0" + enhanced-resolve "^5.17.1" es-module-lexer "^1.2.1" eslint-scope "5.1.1" events "^3.2.0" glob-to-regexp "^0.4.1" - graceful-fs "^4.2.9" + graceful-fs "^4.2.11" json-parse-even-better-errors "^2.3.1" loader-runner "^4.2.0" mime-types "^2.1.27" @@ -11019,7 +11010,7 @@ webpack@^5.64.4: schema-utils "^3.2.0" tapable "^2.1.1" terser-webpack-plugin "^5.3.10" - watchpack "^2.4.0" + watchpack "^2.4.1" webpack-sources "^3.2.3" websocket-driver@>=0.5.1, websocket-driver@^0.7.4: From d2694479c6fbb5844e1b1deb391434717ae1929f Mon Sep 17 00:00:00 2001 From: Suraj Karambe Date: Wed, 28 Aug 2024 19:01:33 +0530 Subject: [PATCH 82/90] Updated the okta auth context usage in okta login screen --- login-workflow/package.json | 2 +- .../OktaRedirectLoginScreen/OktaRedirectLoginScreen.tsx | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/login-workflow/package.json b/login-workflow/package.json index 689ea9ea..3a697474 100644 --- a/login-workflow/package.json +++ b/login-workflow/package.json @@ -1,6 +1,6 @@ { "name": "@brightlayer-ui/react-auth-workflow", - "version": "5.0.0-beta.1", + "version": "5.0.0-beta.2", "author": "Brightlayer UI (https://github.com/brightlayer-ui)", "license": "BSD-3-Clause", "description": "Re-usable workflow components for Authentication and Registration within Eaton applications.", diff --git a/login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreen.tsx b/login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreen.tsx index af98981e..3f3f8126 100644 --- a/login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreen.tsx +++ b/login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreen.tsx @@ -3,7 +3,7 @@ import { useOktaAuth } from '@okta/okta-react'; import { useTranslation } from 'react-i18next'; import { OktaRedirectLoginScreenBase } from './OktaRedirectLoginScreenBase'; import { OktaRedirectLoginScreenProps } from './types'; -import { useAuthContext } from '../../contexts'; +import { useOktaAuthContext } from '../../contexts'; /** * Component that renders an okta login screen. @@ -17,8 +17,7 @@ export const OktaRedirectLoginScreen: React.FC = ( const { authState, oktaAuth } = useOktaAuth(); const [isLoading, setIsLoading] = useState(!authState); const { t } = useTranslation(); - const auth = useAuthContext(); - const { navigate, routeConfig } = auth; + const { navigate, routeConfig } = useOktaAuthContext(); const { loginButtonLabel = t('bluiCommon:ACTIONS.OKTA_LOG_IN'), From 9986dd175e72f20d6a9bd706d10e2628a1f556b5 Mon Sep 17 00:00:00 2001 From: Suraj Karambe Date: Wed, 28 Aug 2024 19:05:04 +0530 Subject: [PATCH 83/90] Fixed failing test cases --- .../OktaRedirectLoginScreen/OktaRedirectLoginScreen.test.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreen.test.tsx b/login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreen.test.tsx index 45e8b9a2..e14bec47 100644 --- a/login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreen.test.tsx +++ b/login-workflow/src/screens/OktaRedirectLoginScreen/OktaRedirectLoginScreen.test.tsx @@ -4,7 +4,7 @@ import '@testing-library/jest-dom'; import { OktaRedirectLoginScreen } from './OktaRedirectLoginScreen'; import { useOktaAuth } from '@okta/okta-react'; import { useTranslation } from 'react-i18next'; -import { useAuthContext } from '../../contexts'; +import { useOktaAuthContext } from '../../contexts'; import { useErrorManager } from '../../contexts/ErrorContext/useErrorManager'; import { OktaRedirectLoginScreenProps } from './types'; @@ -24,7 +24,7 @@ describe('OktaRedirectLoginScreen', () => { oktaAuth: { signInWithRedirect: mockSignInWithRedirect }, }); (useTranslation as jest.Mock).mockReturnValue({ t: (key: string) => key }); - (useAuthContext as jest.Mock).mockReturnValue({ + (useOktaAuthContext as jest.Mock).mockReturnValue({ navigate: mockNavigate, routeConfig: { SUPPORT: '/support' }, }); From 12c6a733025319152842cb6315b33b45e6a00302 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 29 Aug 2024 03:55:29 +0000 Subject: [PATCH 84/90] Bump micromatch from 4.0.5 to 4.0.8 in /login-workflow/example Bumps [micromatch](https://github.com/micromatch/micromatch) from 4.0.5 to 4.0.8. - [Release notes](https://github.com/micromatch/micromatch/releases) - [Changelog](https://github.com/micromatch/micromatch/blob/master/CHANGELOG.md) - [Commits](https://github.com/micromatch/micromatch/compare/4.0.5...4.0.8) --- updated-dependencies: - dependency-name: micromatch dependency-type: indirect ... Signed-off-by: dependabot[bot] --- login-workflow/example/yarn.lock | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/login-workflow/example/yarn.lock b/login-workflow/example/yarn.lock index 7de8165f..a39f31eb 100644 --- a/login-workflow/example/yarn.lock +++ b/login-workflow/example/yarn.lock @@ -3716,7 +3716,7 @@ brace-expansion@^2.0.1: dependencies: balanced-match "^1.0.0" -braces@^3.0.2, braces@~3.0.2: +braces@^3.0.3, braces@~3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== @@ -7608,11 +7608,11 @@ methods@~1.1.2: integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: - version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" - integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + version "4.0.8" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" + integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== dependencies: - braces "^3.0.2" + braces "^3.0.3" picomatch "^2.3.1" mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": From 484f86f658356374d66984427f3e2bd20cbbd044 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 29 Aug 2024 12:01:22 +0000 Subject: [PATCH 85/90] Bump webpack from 5.84.0 to 5.94.0 in /login-workflow/example Bumps [webpack](https://github.com/webpack/webpack) from 5.84.0 to 5.94.0. - [Release notes](https://github.com/webpack/webpack/releases) - [Commits](https://github.com/webpack/webpack/compare/v5.84.0...v5.94.0) --- updated-dependencies: - dependency-name: webpack dependency-type: indirect ... Signed-off-by: dependabot[bot] --- login-workflow/example/yarn.lock | 300 +++++++++++++++++++++---------- 1 file changed, 207 insertions(+), 93 deletions(-) diff --git a/login-workflow/example/yarn.lock b/login-workflow/example/yarn.lock index 7de8165f..bf239454 100644 --- a/login-workflow/example/yarn.lock +++ b/login-workflow/example/yarn.lock @@ -1946,16 +1946,35 @@ "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" +"@jridgewell/gen-mapping@^0.3.5": + version "0.3.5" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" + integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== + dependencies: + "@jridgewell/set-array" "^1.2.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.24" + "@jridgewell/resolve-uri@3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + "@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/set-array@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" + integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== + "@jridgewell/source-map@^0.3.2": version "0.3.3" resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.3.tgz#8108265659d4c33e72ffe14e33d6cc5eb59f2fda" @@ -1964,6 +1983,14 @@ "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" +"@jridgewell/source-map@^0.3.3": + version "0.3.6" + resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.6.tgz#9d71ca886e32502eb9362c9a74a46787c36df81a" + integrity sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ== + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + "@jridgewell/sourcemap-codec@1.4.14": version "1.4.14" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" @@ -1974,6 +2001,11 @@ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== +"@jridgewell/sourcemap-codec@^1.4.14": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" + integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== + "@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.15", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": version "0.3.18" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz#25783b2086daf6ff1dcb53c9249ae480e4dd4cd6" @@ -1982,6 +2014,14 @@ "@jridgewell/resolve-uri" "3.1.0" "@jridgewell/sourcemap-codec" "1.4.14" +"@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": + version "0.3.25" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" + integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + "@leichtgewicht/ip-codec@^2.0.1": version "2.0.4" resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b" @@ -2508,15 +2548,7 @@ dependencies: "@types/node" "*" -"@types/eslint-scope@^3.7.3": - version "3.7.4" - resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.4.tgz#37fc1223f0786c39627068a12e94d6e6fc61de16" - integrity sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA== - dependencies: - "@types/eslint" "*" - "@types/estree" "*" - -"@types/eslint@*", "@types/eslint@^7.29.0 || ^8.4.1": +"@types/eslint@^7.29.0 || ^8.4.1": version "8.40.0" resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.40.0.tgz#ae73dc9ec5237f2794c4f79efd6a4c73b13daf23" integrity sha512-nbq2mvc/tBrK9zQQuItvjJl++GTN5j06DaPtp3hZCpngmG6Q3xoyEmd0TwZI0gAy/G1X0zhGBbr2imsGFdFV0g== @@ -2524,7 +2556,7 @@ "@types/estree" "*" "@types/json-schema" "*" -"@types/estree@*", "@types/estree@^1.0.0": +"@types/estree@*": version "1.0.1" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== @@ -2534,6 +2566,11 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== +"@types/estree@^1.0.5": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" + integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== + "@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33": version "4.17.35" resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.35.tgz#c95dd4424f0d32e525d23812aa8ab8e4d3906c4f" @@ -2967,10 +3004,10 @@ resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== -"@webassemblyjs/ast@1.11.6", "@webassemblyjs/ast@^1.11.5": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.6.tgz#db046555d3c413f8966ca50a95176a0e2c642e24" - integrity sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q== +"@webassemblyjs/ast@1.12.1", "@webassemblyjs/ast@^1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.12.1.tgz#bb16a0e8b1914f979f45864c23819cc3e3f0d4bb" + integrity sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg== dependencies: "@webassemblyjs/helper-numbers" "1.11.6" "@webassemblyjs/helper-wasm-bytecode" "1.11.6" @@ -2985,10 +3022,10 @@ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz#6132f68c4acd59dcd141c44b18cbebbd9f2fa768" integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q== -"@webassemblyjs/helper-buffer@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz#b66d73c43e296fd5e88006f18524feb0f2c7c093" - integrity sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA== +"@webassemblyjs/helper-buffer@1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz#6df20d272ea5439bf20ab3492b7fb70e9bfcb3f6" + integrity sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw== "@webassemblyjs/helper-numbers@1.11.6": version "1.11.6" @@ -3004,15 +3041,15 @@ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz#bb2ebdb3b83aa26d9baad4c46d4315283acd51e9" integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA== -"@webassemblyjs/helper-wasm-section@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz#ff97f3863c55ee7f580fd5c41a381e9def4aa577" - integrity sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g== +"@webassemblyjs/helper-wasm-section@1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz#3da623233ae1a60409b509a52ade9bc22a37f7bf" + integrity sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g== dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/ast" "1.12.1" + "@webassemblyjs/helper-buffer" "1.12.1" "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/wasm-gen" "1.11.6" + "@webassemblyjs/wasm-gen" "1.12.1" "@webassemblyjs/ieee754@1.11.6": version "1.11.6" @@ -3033,59 +3070,59 @@ resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz#90f8bc34c561595fe156603be7253cdbcd0fab5a" integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA== -"@webassemblyjs/wasm-edit@^1.11.5": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz#c72fa8220524c9b416249f3d94c2958dfe70ceab" - integrity sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw== +"@webassemblyjs/wasm-edit@^1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz#9f9f3ff52a14c980939be0ef9d5df9ebc678ae3b" + integrity sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g== dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/ast" "1.12.1" + "@webassemblyjs/helper-buffer" "1.12.1" "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/helper-wasm-section" "1.11.6" - "@webassemblyjs/wasm-gen" "1.11.6" - "@webassemblyjs/wasm-opt" "1.11.6" - "@webassemblyjs/wasm-parser" "1.11.6" - "@webassemblyjs/wast-printer" "1.11.6" - -"@webassemblyjs/wasm-gen@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz#fb5283e0e8b4551cc4e9c3c0d7184a65faf7c268" - integrity sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA== - dependencies: - "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-wasm-section" "1.12.1" + "@webassemblyjs/wasm-gen" "1.12.1" + "@webassemblyjs/wasm-opt" "1.12.1" + "@webassemblyjs/wasm-parser" "1.12.1" + "@webassemblyjs/wast-printer" "1.12.1" + +"@webassemblyjs/wasm-gen@1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz#a6520601da1b5700448273666a71ad0a45d78547" + integrity sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w== + dependencies: + "@webassemblyjs/ast" "1.12.1" "@webassemblyjs/helper-wasm-bytecode" "1.11.6" "@webassemblyjs/ieee754" "1.11.6" "@webassemblyjs/leb128" "1.11.6" "@webassemblyjs/utf8" "1.11.6" -"@webassemblyjs/wasm-opt@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz#d9a22d651248422ca498b09aa3232a81041487c2" - integrity sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g== +"@webassemblyjs/wasm-opt@1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz#9e6e81475dfcfb62dab574ac2dda38226c232bc5" + integrity sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg== dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-buffer" "1.11.6" - "@webassemblyjs/wasm-gen" "1.11.6" - "@webassemblyjs/wasm-parser" "1.11.6" + "@webassemblyjs/ast" "1.12.1" + "@webassemblyjs/helper-buffer" "1.12.1" + "@webassemblyjs/wasm-gen" "1.12.1" + "@webassemblyjs/wasm-parser" "1.12.1" -"@webassemblyjs/wasm-parser@1.11.6", "@webassemblyjs/wasm-parser@^1.11.5": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz#bb85378c527df824004812bbdb784eea539174a1" - integrity sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ== +"@webassemblyjs/wasm-parser@1.12.1", "@webassemblyjs/wasm-parser@^1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz#c47acb90e6f083391e3fa61d113650eea1e95937" + integrity sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ== dependencies: - "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/ast" "1.12.1" "@webassemblyjs/helper-api-error" "1.11.6" "@webassemblyjs/helper-wasm-bytecode" "1.11.6" "@webassemblyjs/ieee754" "1.11.6" "@webassemblyjs/leb128" "1.11.6" "@webassemblyjs/utf8" "1.11.6" -"@webassemblyjs/wast-printer@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz#a7bf8dd7e362aeb1668ff43f35cb849f188eff20" - integrity sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A== +"@webassemblyjs/wast-printer@1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz#bcecf661d7d1abdaf989d8341a4833e33e2b31ac" + integrity sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA== dependencies: - "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/ast" "1.12.1" "@xtuc/long" "4.2.2" "@xtuc/ieee754@^1.2.0": @@ -3129,10 +3166,10 @@ acorn-globals@^6.0.0: acorn "^7.1.1" acorn-walk "^7.1.1" -acorn-import-assertions@^1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac" - integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== +acorn-import-attributes@^1.9.5: + version "1.9.5" + resolved "https://registry.yarnpkg.com/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz#7eb1557b1ba05ef18b5ed0ec67591bfab04688ef" + integrity sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ== acorn-jsx@^5.3.2: version "5.3.2" @@ -3154,6 +3191,11 @@ acorn@^8.2.4, acorn@^8.5.0, acorn@^8.7.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== +acorn@^8.8.2: + version "8.12.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.1.tgz#71616bdccbe25e27a54439e0046e89ca76df2248" + integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg== + acorn@^8.9.0: version "8.11.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" @@ -3738,7 +3780,7 @@ browser-process-hrtime@^1.0.0: resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== -browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.18.1, browserslist@^4.21.3, browserslist@^4.21.4, browserslist@^4.21.5: +browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.21.3, browserslist@^4.21.4, browserslist@^4.21.5: version "4.21.5" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.5.tgz#75c5dae60063ee641f977e00edd3cfb2fb7af6a7" integrity sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w== @@ -3748,6 +3790,16 @@ browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.18.1, browserslist@^4 node-releases "^2.0.8" update-browserslist-db "^1.0.10" +browserslist@^4.21.10: + version "4.23.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.3.tgz#debb029d3c93ebc97ffbc8d9cbb03403e227c800" + integrity sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA== + dependencies: + caniuse-lite "^1.0.30001646" + electron-to-chromium "^1.5.4" + node-releases "^2.0.18" + update-browserslist-db "^1.1.0" + bser@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" @@ -3831,6 +3883,11 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001449, caniuse-lite@^1.0.30001464: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001489.tgz#ca82ee2d4e4dbf2bd2589c9360d3fcc2c7ba3bd8" integrity sha512-x1mgZEXK8jHIfAxm+xgdpHpk50IN3z3q3zP261/WS+uvePxW8izXuCu6AHz0lkuYTlATDehiZ/tNyYBdSQsOUQ== +caniuse-lite@^1.0.30001646: + version "1.0.30001653" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001653.tgz#b8af452f8f33b1c77f122780a4aecebea0caca56" + integrity sha512-XGWQVB8wFQ2+9NZwZ10GxTYC5hk0Fa+q8cSkr0tgvMhYhMHP/QC+WTgrePMDBWiWc/pV+1ik82Al20XOK25Gcw== + case-sensitive-paths-webpack-plugin@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz#db64066c6422eed2e08cc14b986ca43796dbc6d4" @@ -4741,6 +4798,11 @@ electron-to-chromium@^1.4.284: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.405.tgz#487bdba2d82a59b092d6b6e4602bf733cec6a7ef" integrity sha512-JdDgnwU69FMZURoesf9gNOej2Cms1XJFfLk24y1IBtnAdhTcJY/mXnokmpmxHN59PcykBP4bgUU98vLY44Lhuw== +electron-to-chromium@^1.5.4: + version "1.5.13" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.13.tgz#1abf0410c5344b2b829b7247e031f02810d442e6" + integrity sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q== + emittery@^0.10.2: version "0.10.2" resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.10.2.tgz#902eec8aedb8c41938c46e9385e9db7e03182933" @@ -4776,10 +4838,10 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== -enhanced-resolve@^5.14.1: - version "5.14.1" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.14.1.tgz#de684b6803724477a4af5d74ccae5de52c25f6b3" - integrity sha512-Vklwq2vDKtl0y/vtwjSesgJ5MYS7Etuk5txS8VdKL4AOS1aUlD96zqIfsOSLQsdv3xgMRbtkWM8eG9XDfKUPow== +enhanced-resolve@^5.17.1: + version "5.17.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz#67bfbbcc2f81d511be77d686a90267ef7f898a15" + integrity sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg== dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" @@ -4903,6 +4965,11 @@ escalade@^3.1.1: resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== +escalade@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" + integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== + escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" @@ -5721,7 +5788,7 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" -graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -7776,6 +7843,11 @@ node-int64@^0.4.0: resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== +node-releases@^2.0.18: + version "2.0.18" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f" + integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g== + node-releases@^2.0.8: version "2.0.12" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.12.tgz#35627cc224a23bfb06fb3380f2b3afaaa7eb1039" @@ -8160,6 +8232,11 @@ picocolors@^1.0.0: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== +picocolors@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1" + integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== + picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" @@ -9419,7 +9496,7 @@ schema-utils@^2.6.5: ajv "^6.12.4" ajv-keywords "^3.5.2" -schema-utils@^3.0.0, schema-utils@^3.1.1, schema-utils@^3.1.2: +schema-utils@^3.0.0, schema-utils@^3.1.1: version "3.1.2" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.2.tgz#36c10abca6f7577aeae136c804b0c741edeadc99" integrity sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg== @@ -9428,6 +9505,15 @@ schema-utils@^3.0.0, schema-utils@^3.1.1, schema-utils@^3.1.2: ajv "^6.12.5" ajv-keywords "^3.5.2" +schema-utils@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe" + integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + schema-utils@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.0.1.tgz#eb2d042df8b01f4b5c276a2dfd41ba0faab72e8d" @@ -10055,7 +10141,7 @@ terminal-link@^2.0.0: ansi-escapes "^4.2.1" supports-hyperlinks "^2.0.0" -terser-webpack-plugin@^5.2.5, terser-webpack-plugin@^5.3.7: +terser-webpack-plugin@^5.2.5: version "5.3.9" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz#832536999c51b46d468067f9e37662a3b96adfe1" integrity sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA== @@ -10066,6 +10152,17 @@ terser-webpack-plugin@^5.2.5, terser-webpack-plugin@^5.3.7: serialize-javascript "^6.0.1" terser "^5.16.8" +terser-webpack-plugin@^5.3.10: + version "5.3.10" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz#904f4c9193c6fd2a03f693a2150c62a92f40d199" + integrity sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w== + dependencies: + "@jridgewell/trace-mapping" "^0.3.20" + jest-worker "^27.4.5" + schema-utils "^3.1.1" + serialize-javascript "^6.0.1" + terser "^5.26.0" + terser@^5.0.0, terser@^5.10.0, terser@^5.16.8: version "5.17.6" resolved "https://registry.yarnpkg.com/terser/-/terser-5.17.6.tgz#d810e75e1bb3350c799cd90ebefe19c9412c12de" @@ -10076,6 +10173,16 @@ terser@^5.0.0, terser@^5.10.0, terser@^5.16.8: commander "^2.20.0" source-map-support "~0.5.20" +terser@^5.26.0: + version "5.31.6" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.31.6.tgz#c63858a0f0703988d0266a82fcbf2d7ba76422b1" + integrity sha512-PQ4DAriWzKj+qgehQ7LK5bQqCFNMmlhjR2PFFLuqGCpuCAauxemVBWwWOxo3UIwWQx8+Pr61Df++r76wDmkQBg== + dependencies: + "@jridgewell/source-map" "^0.3.3" + acorn "^8.8.2" + commander "^2.20.0" + source-map-support "~0.5.20" + test-exclude@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" @@ -10353,6 +10460,14 @@ update-browserslist-db@^1.0.10: escalade "^3.1.1" picocolors "^1.0.0" +update-browserslist-db@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz#7ca61c0d8650766090728046e416a8cde682859e" + integrity sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ== + dependencies: + escalade "^3.1.2" + picocolors "^1.0.1" + uri-js@^4.2.2: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" @@ -10447,10 +10562,10 @@ walker@^1.0.7, walker@^1.0.8: dependencies: makeerror "1.0.12" -watchpack@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" - integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== +watchpack@^2.4.1: + version "2.4.2" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.2.tgz#2feeaed67412e7c33184e5a79ca738fbd38564da" + integrity sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw== dependencies: glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" @@ -10575,33 +10690,32 @@ webpack-sources@^3.2.3: integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== webpack@^5.64.4: - version "5.84.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.84.0.tgz#011115617668744aece87a9eb68534487d84de1a" - integrity sha512-XezNK3kwJq6IyeoZmZ1uEqQs+42nTqIi4jYM/YjLwaJedUC1N3bwnCC0+UcnHJPfqWX0kGrQnMIvZZyWYaIZrA== - dependencies: - "@types/eslint-scope" "^3.7.3" - "@types/estree" "^1.0.0" - "@webassemblyjs/ast" "^1.11.5" - "@webassemblyjs/wasm-edit" "^1.11.5" - "@webassemblyjs/wasm-parser" "^1.11.5" + version "5.94.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.94.0.tgz#77a6089c716e7ab90c1c67574a28da518a20970f" + integrity sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg== + dependencies: + "@types/estree" "^1.0.5" + "@webassemblyjs/ast" "^1.12.1" + "@webassemblyjs/wasm-edit" "^1.12.1" + "@webassemblyjs/wasm-parser" "^1.12.1" acorn "^8.7.1" - acorn-import-assertions "^1.9.0" - browserslist "^4.14.5" + acorn-import-attributes "^1.9.5" + browserslist "^4.21.10" chrome-trace-event "^1.0.2" - enhanced-resolve "^5.14.1" + enhanced-resolve "^5.17.1" es-module-lexer "^1.2.1" eslint-scope "5.1.1" events "^3.2.0" glob-to-regexp "^0.4.1" - graceful-fs "^4.2.9" + graceful-fs "^4.2.11" json-parse-even-better-errors "^2.3.1" loader-runner "^4.2.0" mime-types "^2.1.27" neo-async "^2.6.2" - schema-utils "^3.1.2" + schema-utils "^3.2.0" tapable "^2.1.1" - terser-webpack-plugin "^5.3.7" - watchpack "^2.4.0" + terser-webpack-plugin "^5.3.10" + watchpack "^2.4.1" webpack-sources "^3.2.3" websocket-driver@>=0.5.1, websocket-driver@^0.7.4: From 0793ab867486bcaf6e10933769af78ee178fdb2b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 1 Sep 2024 11:15:26 +0000 Subject: [PATCH 86/90] Bump react-dom and @types/react-dom in /login-workflow/example Bumps [react-dom](https://github.com/facebook/react/tree/HEAD/packages/react-dom) and [@types/react-dom](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-dom). These dependencies needed to be updated together. Updates `react-dom` from 18.2.0 to 18.3.1 - [Release notes](https://github.com/facebook/react/releases) - [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/react/commits/v18.3.1/packages/react-dom) Updates `@types/react-dom` from 18.2.4 to 18.3.0 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-dom) --- updated-dependencies: - dependency-name: react-dom dependency-type: direct:production update-type: version-update:semver-minor - dependency-name: "@types/react-dom" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- login-workflow/example/package.json | 4 ++-- login-workflow/example/yarn.lock | 26 +++++++++++++------------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/login-workflow/example/package.json b/login-workflow/example/package.json index ad9784e6..3761171d 100644 --- a/login-workflow/example/package.json +++ b/login-workflow/example/package.json @@ -44,12 +44,12 @@ "@okta/okta-react": "^6.9.0", "@types/node": "^17.0.23", "@types/react": "18.2.39", - "@types/react-dom": "^18.0.0", + "@types/react-dom": "^18.3.0", "date-fns": "^3.6.0", "i18next": "^23.7.13", "react": "^18.2.0", "react-app-polyfill": "^3.0.0", - "react-dom": "^18.0.0", + "react-dom": "^18.3.1", "react-i18next": "^13.0.3", "react-router-dom": "^6.8.0", "react-scripts": "^5.0.0", diff --git a/login-workflow/example/yarn.lock b/login-workflow/example/yarn.lock index ef55f921..ef0cc63d 100644 --- a/login-workflow/example/yarn.lock +++ b/login-workflow/example/yarn.lock @@ -2729,10 +2729,10 @@ resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== -"@types/react-dom@^18.0.0": - version "18.2.4" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.4.tgz#13f25bfbf4e404d26f62ac6e406591451acba9e0" - integrity sha512-G2mHoTMTL4yoydITgOGwWdWMVd8sNgyEP85xVmMKAPUBwQWm9wBPQUmvbeF4V3WBY1P7mmL4BkjQ0SqUpf1snw== +"@types/react-dom@^18.0.0", "@types/react-dom@^18.3.0": + version "18.3.0" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.3.0.tgz#0cbc818755d87066ab6ca74fbedb2547d74a82b0" + integrity sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg== dependencies: "@types/react" "*" @@ -9043,13 +9043,13 @@ react-dev-utils@^12.0.1: strip-ansi "^6.0.1" text-table "^0.2.0" -react-dom@^18.0.0: - version "18.2.0" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" - integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== +react-dom@^18.3.1: + version "18.3.1" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.3.1.tgz#c2265d79511b57d479b3dd3fdfa51536494c5cb4" + integrity sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw== dependencies: loose-envify "^1.1.0" - scheduler "^0.23.0" + scheduler "^0.23.2" react-error-overlay@^6.0.11: version "6.0.11" @@ -9471,10 +9471,10 @@ saxes@^5.0.1: dependencies: xmlchars "^2.2.0" -scheduler@^0.23.0: - version "0.23.0" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe" - integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== +scheduler@^0.23.2: + version "0.23.2" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.2.tgz#414ba64a3b282892e944cf2108ecc078d115cdc3" + integrity sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ== dependencies: loose-envify "^1.1.0" From dc39d3766ca8400d980ce1db903a6efa07027e3e Mon Sep 17 00:00:00 2001 From: Suraj Karambe Date: Wed, 11 Sep 2024 01:50:53 +0530 Subject: [PATCH 87/90] Updated example with login callback --- login-workflow/example/src/App.tsx | 1 + .../src/contexts/AppContextProvider.tsx | 1 + .../example/src/navigation/AppRouter.tsx | 126 +------------- .../example/src/navigation/MainRouter.tsx | 155 ++++++++++++++++++ .../example/src/screens/ExampleHome.tsx | 11 +- 5 files changed, 168 insertions(+), 126 deletions(-) create mode 100644 login-workflow/example/src/navigation/MainRouter.tsx diff --git a/login-workflow/example/src/App.tsx b/login-workflow/example/src/App.tsx index 49d70c60..cb2f55ca 100644 --- a/login-workflow/example/src/App.tsx +++ b/login-workflow/example/src/App.tsx @@ -65,6 +65,7 @@ export const App = (): JSX.Element => { { setIsAuthenticated(true); setLoginData(userData); diff --git a/login-workflow/example/src/contexts/AppContextProvider.tsx b/login-workflow/example/src/contexts/AppContextProvider.tsx index 05d58a97..684ed2fb 100644 --- a/login-workflow/example/src/contexts/AppContextProvider.tsx +++ b/login-workflow/example/src/contexts/AppContextProvider.tsx @@ -7,6 +7,7 @@ export type LoginData = { export type AppContextType = { isAuthenticated: boolean; + setIsAuthenticated: (isAuthenticated: boolean) => void; loginData: LoginData; onUserAuthenticated: (args: { email: string; userId: string; rememberMe: boolean }) => void; onUserNotAuthenticated: (clearRememberMe?: boolean, overrideRememberMeEmail?: string) => void; diff --git a/login-workflow/example/src/navigation/AppRouter.tsx b/login-workflow/example/src/navigation/AppRouter.tsx index 24894cc6..c23fd4bc 100644 --- a/login-workflow/example/src/navigation/AppRouter.tsx +++ b/login-workflow/example/src/navigation/AppRouter.tsx @@ -1,35 +1,15 @@ import React, { useCallback } from 'react'; -import { - AuthContextProvider, - OktaAuthContextProvider, - ContactSupportScreen, - ReactRouterAuthGuard, - ReactRouterGuestGuard, - ForgotPasswordScreen, - RegistrationContextProvider, - ResetPasswordScreen, - RegistrationWorkflow, -} from '@brightlayer-ui/react-auth-workflow'; -import { useApp } from '../contexts/AppContextProvider'; import { useNavigate } from 'react-router'; -import { ProjectAuthUIActions } from '../actions/AuthUIActions'; -import { Navigate, Outlet, Route, Routes, To } from 'react-router-dom'; -import { ProjectRegistrationUIActions } from '../actions/RegistrationUIActions'; -import { routes } from './Routing'; -import { ExampleHome } from '../screens/ExampleHome'; -import i18nAppInstance from '../translations/i18n'; -import { ChangePassword } from '../components/ChangePassword'; +import { To } from 'react-router-dom'; import { Security } from '@okta/okta-react'; import OktaAuth, { OktaAuthOptions, toRelativeUrl } from '@okta/okta-auth-js'; import oktaConfig from '../oktaConfig'; -import { OktaLogin } from '../screens/OktaRedirectLogin'; +import { MainRouter } from './MainRouter'; const oktaAuth = new OktaAuth(oktaConfig as OktaAuthOptions); export const AppRouter: React.FC = () => { const navigation = useNavigate(); - const app = useApp(); - const { email, rememberMe } = app.loginData; const navigate = useCallback((destination: -1 | string) => { navigation(destination as To); }, []); @@ -40,107 +20,7 @@ export const AppRouter: React.FC = () => { return ( - - {/* AUTH ROUTES */} - - - - } - > - - - - - - } - /> - - - - } - /> - - - - } - /> - - - - } - /> - {/* USER APPLICATION ROUTES */} - - - {app.showChangePasswordDialog && } - - } - > - - - - } - /> - } /> - - - - - } - /> - - {/* REGISTRATION ROUTES */} - - - - } - > - } /> - } /> - - + ); }; diff --git a/login-workflow/example/src/navigation/MainRouter.tsx b/login-workflow/example/src/navigation/MainRouter.tsx new file mode 100644 index 00000000..2ecdb0d2 --- /dev/null +++ b/login-workflow/example/src/navigation/MainRouter.tsx @@ -0,0 +1,155 @@ +import React, { useCallback, useEffect } from 'react'; +import { + AuthContextProvider, + OktaAuthContextProvider, + ContactSupportScreen, + ReactRouterAuthGuard, + ReactRouterGuestGuard, + ForgotPasswordScreen, + RegistrationContextProvider, + ResetPasswordScreen, + RegistrationWorkflow, +} from '@brightlayer-ui/react-auth-workflow'; +import { useApp } from '../contexts/AppContextProvider'; +import { useNavigate } from 'react-router'; +import { ProjectAuthUIActions } from '../actions/AuthUIActions'; +import { Navigate, Outlet, Route, Routes, To } from 'react-router-dom'; +import { ProjectRegistrationUIActions } from '../actions/RegistrationUIActions'; +import { routes } from './Routing'; +import { ExampleHome } from '../screens/ExampleHome'; +import i18nAppInstance from '../translations/i18n'; +import { ChangePassword } from '../components/ChangePassword'; +import { OktaLogin } from '../screens/OktaRedirectLogin'; +import { useOktaAuth, LoginCallback } from '@okta/okta-react'; + +export const MainRouter: React.FC = () => { + const navigation = useNavigate(); + const app = useApp(); + const { email, rememberMe } = app.loginData; + const navigate = useCallback((destination: -1 | string) => { + navigation(destination as To); + }, []); + const { authState } = useOktaAuth(); + + const { setIsAuthenticated } = useApp(); + + useEffect(() => { + if (authState && authState.isAuthenticated) { + setIsAuthenticated(true); + } else { + setIsAuthenticated(false); + } + }, [authState, setIsAuthenticated]); + + return ( + + {/* AUTH ROUTES */} + + + + } + > + + + + + + } + /> + + + + } + /> + + + + } + /> + + + + } + /> + {/* USER APPLICATION ROUTES */} + + + {app.showChangePasswordDialog && } + + } + > + + + + } + /> + + + + } + /> + } /> + + + + + } + /> + + {/* REGISTRATION ROUTES */} + + + + } + > + } /> + } /> + + + ); +}; diff --git a/login-workflow/example/src/screens/ExampleHome.tsx b/login-workflow/example/src/screens/ExampleHome.tsx index ff45e7cd..75e78ef8 100644 --- a/login-workflow/example/src/screens/ExampleHome.tsx +++ b/login-workflow/example/src/screens/ExampleHome.tsx @@ -31,6 +31,7 @@ import * as Colors from '@brightlayer-ui/colors'; import FormControl from '@mui/material/FormControl'; import { MenuItem, Select, SelectChangeEvent } from '@mui/material'; import i18n from '../translations/i18n'; +import { useOktaAuth } from '@okta/okta-react'; export const ExampleHome: React.FC = () => { const app = useApp(); @@ -39,7 +40,8 @@ export const ExampleHome: React.FC = () => { const [open, setOpen] = useState(false); const navigate = useNavigate(); const theme = useTheme(); - + const { oktaAuth } = useOktaAuth(); + const containerStyles = { width: '100%', height: `calc(100vh - ${theme.spacing(8)})`, @@ -64,9 +66,12 @@ export const ExampleHome: React.FC = () => { justifyContent: 'center', }; - const logOut = (): void => { + const logOut = async (): Promise => { + await oktaAuth.signOut(); LocalStorage.clearAuthCredentials(); app.onUserNotAuthenticated(); + app.setIsAuthenticated(false); + navigate('/login'); }; @@ -152,7 +157,7 @@ export const ExampleHome: React.FC = () => { icon: , title: `${t('USER_MENU.LOG_OUT')}`, onClick: (): void => { - logOut(); + void logOut(); }, }, ], From 9b8c7225cb2adbca77959a3b14f7d159143c353c Mon Sep 17 00:00:00 2001 From: Suraj Karambe Date: Wed, 11 Sep 2024 02:09:59 +0530 Subject: [PATCH 88/90] Updated package version and peer dependencies --- login-workflow/package.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/login-workflow/package.json b/login-workflow/package.json index 3a697474..62d1ed12 100644 --- a/login-workflow/package.json +++ b/login-workflow/package.json @@ -1,6 +1,6 @@ { "name": "@brightlayer-ui/react-auth-workflow", - "version": "5.0.0-beta.2", + "version": "5.0.0", "author": "Brightlayer UI (https://github.com/brightlayer-ui)", "license": "BSD-3-Clause", "description": "Re-usable workflow components for Authentication and Registration within Eaton applications.", @@ -37,6 +37,8 @@ "@emotion/styled": "^11.6.0", "@mui/icons-material": "^5.10.15", "@mui/material": "^5.10.15", + "@okta/okta-auth-js": "^7.7.0", + "@okta/okta-react": "^6.9.0", "date-fns": "^3.0.6", "i18next": "^23.0.1", "react": "^16.13.1 || ^17.0.0 || ^18.0.0", From 59e8af6bee310ea26cc594251963836eb417b9af Mon Sep 17 00:00:00 2001 From: Suraj Karambe Date: Wed, 11 Sep 2024 13:19:09 +0530 Subject: [PATCH 89/90] Updated release date and okta login image in readme --- login-workflow/CHANGELOG.md | 2 +- login-workflow/README.md | 2 +- login-workflow/example/src/screens/ExampleHome.tsx | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/login-workflow/CHANGELOG.md b/login-workflow/CHANGELOG.md index 78737cf7..1345397f 100644 --- a/login-workflow/CHANGELOG.md +++ b/login-workflow/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## v5.0.0 (Unreleased) +## v5.0.0 (September 11, 2024) ### Added diff --git a/login-workflow/README.md b/login-workflow/README.md index 0289d7d5..b31d1e5a 100644 --- a/login-workflow/README.md +++ b/login-workflow/README.md @@ -18,7 +18,7 @@ This package is flexible, allowing you to use the Login and Registration flows i These workflows are back-end agnostic, meaning you can use them with any back-end API you wish. You simply need to provide an implementation for several key functions (actions) that are called at various points within the workflows based on user interaction. -![Login](https://raw.githubusercontent.com/etn-ccis/blui-react-workflows/master/login-workflow/media/login.png) +![Login](https://raw.githubusercontent.com/etn-ccis/blui-react-workflows/master/login-workflow/media/okta-login.png) ![Password](https://raw.githubusercontent.com/etn-ccis/blui-react-workflows/master/login-workflow/media/password.png) # Installation diff --git a/login-workflow/example/src/screens/ExampleHome.tsx b/login-workflow/example/src/screens/ExampleHome.tsx index 75e78ef8..66987ac2 100644 --- a/login-workflow/example/src/screens/ExampleHome.tsx +++ b/login-workflow/example/src/screens/ExampleHome.tsx @@ -41,7 +41,7 @@ export const ExampleHome: React.FC = () => { const navigate = useNavigate(); const theme = useTheme(); const { oktaAuth } = useOktaAuth(); - + const containerStyles = { width: '100%', height: `calc(100vh - ${theme.spacing(8)})`, From 2b1ae0e677ee82f5b8ad5ce654bea9f4aab031a0 Mon Sep 17 00:00:00 2001 From: Suraj Karambe Date: Wed, 11 Sep 2024 16:14:43 +0530 Subject: [PATCH 90/90] Updated login image name to okta --- login-workflow/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/login-workflow/README.md b/login-workflow/README.md index b31d1e5a..0bb431d2 100644 --- a/login-workflow/README.md +++ b/login-workflow/README.md @@ -18,7 +18,7 @@ This package is flexible, allowing you to use the Login and Registration flows i These workflows are back-end agnostic, meaning you can use them with any back-end API you wish. You simply need to provide an implementation for several key functions (actions) that are called at various points within the workflows based on user interaction. -![Login](https://raw.githubusercontent.com/etn-ccis/blui-react-workflows/master/login-workflow/media/okta-login.png) +![Okta Login](https://raw.githubusercontent.com/etn-ccis/blui-react-workflows/master/login-workflow/media/okta-login.png) ![Password](https://raw.githubusercontent.com/etn-ccis/blui-react-workflows/master/login-workflow/media/password.png) # Installation